Compare commits
No commits in common. "0ea97e907e24b91d817706f62eb2b06b115e0dcd" and "c6212165af0f94ff86c3c443e8d41dde277700eb" have entirely different histories.
0ea97e907e
...
c6212165af
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,9 +1,5 @@
|
|||||||
.idea/
|
.idea/
|
||||||
.vscode/
|
.vscode/
|
||||||
.cache/
|
|
||||||
.config/
|
|
||||||
.home/
|
|
||||||
|
|
||||||
output_*
|
output_*
|
||||||
node_modules/
|
node_modules/
|
||||||
var/
|
var/
|
||||||
|
29
Makefile
29
Makefile
@ -10,6 +10,19 @@ ifeq ($(TARGET), prod)
|
|||||||
APP_NPM_BUILD_CMD := build-prod
|
APP_NPM_BUILD_CMD := build-prod
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
install: build-docker install-php-deps install-js-deps
|
||||||
|
|
||||||
|
build-docker:
|
||||||
|
./tools/build-docker
|
||||||
|
|
||||||
|
install-php-deps:
|
||||||
|
./tools/composer install --no-interaction
|
||||||
|
|
||||||
|
install-js-deps:
|
||||||
|
./tools/npm ci
|
||||||
|
|
||||||
# Building
|
# Building
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@ -30,6 +43,22 @@ build: clean build-assets build-site
|
|||||||
build-prod:
|
build-prod:
|
||||||
$(MAKE) build TARGET=prod
|
$(MAKE) build TARGET=prod
|
||||||
|
|
||||||
|
# Format
|
||||||
|
|
||||||
|
format-pages:
|
||||||
|
./tools/npm run format-md
|
||||||
|
|
||||||
|
format-assets:
|
||||||
|
./tools/npm run format-webpack
|
||||||
|
./tools/npm run format-js
|
||||||
|
./tools/npm run format-vue
|
||||||
|
./tools/npm run format-style
|
||||||
|
|
||||||
|
format-php:
|
||||||
|
./tools/php-cs-fixer fix
|
||||||
|
|
||||||
|
format: format-pages format-assets format-php
|
||||||
|
|
||||||
watch: clean build-assets
|
watch: clean build-assets
|
||||||
./tools/sculpin generate \
|
./tools/sculpin generate \
|
||||||
--env="${APP_ENV}" \
|
--env="${APP_ENV}" \
|
||||||
|
72
Taskfile.yml
72
Taskfile.yml
@ -1,72 +0,0 @@
|
|||||||
# https://taskfile.dev
|
|
||||||
|
|
||||||
version: '3'
|
|
||||||
|
|
||||||
vars:
|
|
||||||
USER_ID:
|
|
||||||
sh: id -u
|
|
||||||
GROUP_ID:
|
|
||||||
sh: id -g
|
|
||||||
|
|
||||||
PROJECT: "homepage"
|
|
||||||
PHP_IMAGE: "{{.PROJECT}}-php"
|
|
||||||
NODE_IMAGE: "{{.PROJECT}}-node"
|
|
||||||
|
|
||||||
DOCKER_COMMON_OPTS: >-
|
|
||||||
--rm
|
|
||||||
--interactive
|
|
||||||
--tty
|
|
||||||
--user {{.USER_ID}}:{{.GROUP_ID}}
|
|
||||||
--volume /etc/passwd:/etc/passwd:ro
|
|
||||||
--volume /etc/group:/etc/group:ro
|
|
||||||
--volume "./:/srv/app"
|
|
||||||
--workdir "/srv/app"
|
|
||||||
-e XDG_CONFIG_HOME=/srv/app/.config
|
|
||||||
-e XDG_CACHE_HOME=/srv/app/.cache
|
|
||||||
-e HOME=/srv/app/.home
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
|
|
||||||
build-docker:
|
|
||||||
cmds:
|
|
||||||
- docker build --file docker/php/Dockerfile --tag "{{.PHP_IMAGE}}" .
|
|
||||||
- docker build --file docker/node/Dockerfile --tag "{{.NODE_IMAGE}}" .
|
|
||||||
|
|
||||||
composer:
|
|
||||||
cmds:
|
|
||||||
- docker run {{.DOCKER_COMMON_OPTS}} "{{.PHP_IMAGE}}" composer {{.CLI_ARGS}}
|
|
||||||
|
|
||||||
shell-node:
|
|
||||||
cmds:
|
|
||||||
- docker run {{.DOCKER_COMMON_OPTS}} "{{.NODE_IMAGE}}" bash
|
|
||||||
|
|
||||||
npm:
|
|
||||||
cmds:
|
|
||||||
- docker run {{.DOCKER_COMMON_OPTS}} "{{.NODE_IMAGE}}" npm {{.CLI_ARGS}}
|
|
||||||
|
|
||||||
install-dependencies:
|
|
||||||
cmds:
|
|
||||||
- task: composer
|
|
||||||
vars: { CLI_ARGS: "install" }
|
|
||||||
- task: npm
|
|
||||||
vars: { CLI_ARGS: "install" }
|
|
||||||
|
|
||||||
format-pages:
|
|
||||||
cmds:
|
|
||||||
- task: npm
|
|
||||||
vars: { CLI_ARGS: 'run format-md' }
|
|
||||||
|
|
||||||
format-assets:
|
|
||||||
cmds:
|
|
||||||
- task: npm
|
|
||||||
vars: { CLI_ARGS: 'run format-webpack' }
|
|
||||||
- task: npm
|
|
||||||
vars: { CLI_ARGS: 'run format-js' }
|
|
||||||
- task: npm
|
|
||||||
vars: { CLI_ARGS: 'run format-vue' }
|
|
||||||
- task: npm
|
|
||||||
vars: { CLI_ARGS: 'run format-style' }
|
|
||||||
|
|
||||||
format-php:
|
|
||||||
cmds:
|
|
||||||
- docker run {{.DOCKER_COMMON_OPTS}} "{{.PHP_IMAGE}}" php-cs-fixer fix
|
|
@ -11,6 +11,9 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
|||||||
|
|
||||||
class HtmlPrettierExtension extends Extension
|
class HtmlPrettierExtension extends Extension
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function load(array $configs, ContainerBuilder $container)
|
public function load(array $configs, ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||||
|
@ -4,14 +4,21 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Homepage\HtmlPrettierBundle;
|
namespace Homepage\HtmlPrettierBundle;
|
||||||
|
|
||||||
|
use Generator;
|
||||||
use Sculpin\Core\Event\SourceSetEvent;
|
use Sculpin\Core\Event\SourceSetEvent;
|
||||||
use Sculpin\Core\Sculpin;
|
use Sculpin\Core\Sculpin;
|
||||||
use Sculpin\Core\Source\SourceInterface;
|
use Sculpin\Core\Source\SourceInterface;
|
||||||
use Sculpin\Core\Source\SourceSet;
|
use Sculpin\Core\Source\SourceSet;
|
||||||
|
|
||||||
|
use function strlen;
|
||||||
|
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
|
||||||
class HtmlPrettier implements EventSubscriberInterface
|
class HtmlPrettier implements EventSubscriberInterface
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public static function getSubscribedEvents(): array
|
public static function getSubscribedEvents(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
@ -40,7 +47,7 @@ class HtmlPrettier implements EventSubscriberInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function filterSource(SourceSet $sourceSet): \Generator
|
private function filterSource(SourceSet $sourceSet): Generator
|
||||||
{
|
{
|
||||||
/** @var SourceInterface $source */
|
/** @var SourceInterface $source */
|
||||||
foreach ($sourceSet->allSources() as $source) {
|
foreach ($sourceSet->allSources() as $source) {
|
||||||
@ -58,7 +65,7 @@ class HtmlPrettier implements EventSubscriberInterface
|
|||||||
|
|
||||||
private function endsWith($haystack, $needle): bool
|
private function endsWith($haystack, $needle): bool
|
||||||
{
|
{
|
||||||
$length = \strlen($needle);
|
$length = strlen($needle);
|
||||||
|
|
||||||
return $length === 0 || (substr($haystack, -$length) === $needle);
|
return $length === 0 || (substr($haystack, -$length) === $needle);
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,9 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
|||||||
|
|
||||||
class SiteMapExtension extends Extension
|
class SiteMapExtension extends Extension
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function load(array $configs, ContainerBuilder $container)
|
public function load(array $configs, ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||||
|
@ -23,6 +23,9 @@ class SiteMapGenerator implements DataProviderInterface, EventSubscriberInterfac
|
|||||||
*/
|
*/
|
||||||
private $sources;
|
private $sources;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public static function getSubscribedEvents(): array
|
public static function getSubscribedEvents(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
@ -11,6 +11,9 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
|||||||
|
|
||||||
class TwigExtensionExtension extends Extension
|
class TwigExtensionExtension extends Extension
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function load(array $configs, ContainerBuilder $container)
|
public function load(array $configs, ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.0",
|
"php": "~7.4",
|
||||||
"ext-tidy": "*"
|
"ext-tidy": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
916
composer.lock
generated
916
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,3 @@
|
|||||||
FROM node:12
|
FROM node:12.22.3-alpine
|
||||||
|
|
||||||
ENV npm_config_fund=false
|
RUN npm install -g npm
|
||||||
ENV npm_config_update_notifier=false
|
|
||||||
|
|
||||||
WORKDIR /srv/app
|
|
||||||
|
@ -1,29 +1,7 @@
|
|||||||
FROM php:8.1-cli
|
FROM php:7.4.21-cli
|
||||||
|
|
||||||
ENV COMPOSER_FUND=0
|
COPY ./docker/php/provision.sh /opt/
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN /opt/provision.sh
|
||||||
curl \
|
|
||||||
git \
|
|
||||||
gnupg \
|
|
||||||
gzip \
|
|
||||||
libtidy-dev \
|
|
||||||
rsync \
|
|
||||||
zip \
|
|
||||||
;
|
|
||||||
|
|
||||||
RUN docker-php-ext-install tidy \
|
|
||||||
&& docker-php-ext-enable tidy
|
|
||||||
|
|
||||||
# Composer and required tools
|
|
||||||
RUN curl -sLO https://getcomposer.org/download/2.8.4/composer.phar \
|
|
||||||
&& mv composer.phar /usr/local/bin/composer \
|
|
||||||
&& chmod +x /usr/local/bin/composer
|
|
||||||
|
|
||||||
|
|
||||||
# PHP-CS-Fixer
|
|
||||||
RUN curl -sLO https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.65.0/php-cs-fixer.phar \
|
|
||||||
&& mv php-cs-fixer.phar /usr/local/bin/php-cs-fixer \
|
|
||||||
&& chmod +x /usr/local/bin/php-cs-fixer
|
|
||||||
|
|
||||||
WORKDIR /srv/app
|
WORKDIR /srv/app
|
||||||
|
30
docker/php/provision.sh
Executable file
30
docker/php/provision.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
apt-get update && apt-get install -y \
|
||||||
|
curl \
|
||||||
|
git \
|
||||||
|
gnupg \
|
||||||
|
gzip \
|
||||||
|
libtidy-dev \
|
||||||
|
rsync \
|
||||||
|
zip \
|
||||||
|
;
|
||||||
|
|
||||||
|
docker-php-ext-install tidy \
|
||||||
|
&& docker-php-ext-enable tidy
|
||||||
|
|
||||||
|
# Project folder
|
||||||
|
mkdir -p /srv/app
|
||||||
|
|
||||||
|
# Composer and required tools
|
||||||
|
curl -sLO https://getcomposer.org/download/2.3.10/composer.phar \
|
||||||
|
&& mv composer.phar /usr/local/bin/composer \
|
||||||
|
&& chmod +x /usr/local/bin/composer
|
||||||
|
|
||||||
|
|
||||||
|
# PHP-CS-Fixer
|
||||||
|
curl -sLO https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.9.5/php-cs-fixer.phar \
|
||||||
|
&& mv php-cs-fixer.phar /usr/local/bin/php-cs-fixer \
|
||||||
|
&& chmod +x /usr/local/bin/php-cs-fixer
|
16095
npm-shrinkwrap.json
generated
Normal file
16095
npm-shrinkwrap.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
7216
package-lock.json
generated
7216
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
tools/build-docker
Executable file
15
tools/build-docker
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
source .env
|
||||||
|
|
||||||
|
docker build \
|
||||||
|
--file docker/php/Dockerfile \
|
||||||
|
--tag "${PHP_IMAGE}" \
|
||||||
|
"$PWD"
|
||||||
|
|
||||||
|
docker build \
|
||||||
|
--file docker/node/Dockerfile \
|
||||||
|
--tag "${NODE_IMAGE}" \
|
||||||
|
"$PWD"
|
19
tools/composer
Executable file
19
tools/composer
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source .env
|
||||||
|
|
||||||
|
mkdir -p var/docker-cache/.composer
|
||||||
|
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
--interactive \
|
||||||
|
--tty \
|
||||||
|
--user "$UID:$(id -g)" \
|
||||||
|
--volume /etc/passwd:/etc/passwd:ro \
|
||||||
|
--volume /etc/group:/etc/group:ro \
|
||||||
|
--volume "$PWD:/srv/app" \
|
||||||
|
--volume "$HOME:$HOME" \
|
||||||
|
--volume "$PWD/var/docker-cache/.composer:/tmp/.composer" \
|
||||||
|
--env COMPOSER_HOME=/tmp/.composer \
|
||||||
|
"${PHP_IMAGE}" \
|
||||||
|
composer "$@"
|
20
tools/npm
Executable file
20
tools/npm
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source .env
|
||||||
|
|
||||||
|
mkdir -p var/docker-cache/.npm
|
||||||
|
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
--interactive \
|
||||||
|
--tty \
|
||||||
|
--user "$UID:$(id -g)" \
|
||||||
|
--volume /etc/passwd:/etc/passwd:ro \
|
||||||
|
--volume /etc/group:/etc/group:ro \
|
||||||
|
--volume "$PWD:/srv/app" \
|
||||||
|
--volume "$HOME:$HOME" \
|
||||||
|
--volume "$PWD/var/docker-cache/.npm:/tmp/.npm" \
|
||||||
|
--env npm_config_cache=/tmp/.npm \
|
||||||
|
--workdir /srv/app \
|
||||||
|
"${NODE_IMAGE}" \
|
||||||
|
npm "$@"
|
Loading…
Reference in New Issue
Block a user