Compare commits

...

4 Commits

Author SHA1 Message Date
0ea97e907e
Refactor format actions 2024-12-25 11:47:47 +03:00
786efb4503
Refactoring install actions 2024-12-25 11:27:05 +03:00
e4b27c55bf
Move image building to taskfile 2024-12-25 10:32:08 +03:00
221d408ae3
Add taskfile 2024-12-25 10:31:47 +03:00
18 changed files with 7603 additions and 16853 deletions

4
.gitignore vendored
View File

@ -1,5 +1,9 @@
.idea/ .idea/
.vscode/ .vscode/
.cache/
.config/
.home/
output_* output_*
node_modules/ node_modules/
var/ var/

View File

@ -10,19 +10,6 @@ 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:
@ -43,22 +30,6 @@ 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 Normal file
View File

@ -0,0 +1,72 @@
# 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

View File

@ -11,9 +11,6 @@ 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'));

View File

@ -4,21 +4,14 @@ 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 [
@ -47,7 +40,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) {
@ -65,7 +58,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);
} }

View File

@ -11,9 +11,6 @@ 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'));

View File

@ -23,9 +23,6 @@ class SiteMapGenerator implements DataProviderInterface, EventSubscriberInterfac
*/ */
private $sources; private $sources;
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents(): array public static function getSubscribedEvents(): array
{ {
return [ return [

View File

@ -11,9 +11,6 @@ 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'));

View File

@ -9,7 +9,7 @@
} }
], ],
"require": { "require": {
"php": "~7.4", "php": "^8.0",
"ext-tidy": "*" "ext-tidy": "*"
}, },
"require-dev": { "require-dev": {

896
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,6 @@
FROM node:12.22.3-alpine FROM node:12
RUN npm install -g npm ENV npm_config_fund=false
ENV npm_config_update_notifier=false
WORKDIR /srv/app

View File

@ -1,7 +1,29 @@
FROM php:7.4.21-cli FROM php:8.1-cli
COPY ./docker/php/provision.sh /opt/ ENV COMPOSER_FUND=0
RUN /opt/provision.sh RUN apt-get update && apt-get install -y \
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

View File

@ -1,30 +0,0 @@
#!/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

File diff suppressed because it is too large Load Diff

7216
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +0,0 @@
#!/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"

View File

@ -1,19 +0,0 @@
#!/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 "$@"

View File

@ -1,20 +0,0 @@
#!/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 "$@"