diff --git a/CHANGELOG.md b/CHANGELOG.md index d0afb89c..0c2777af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file. * Removed propTypes. * Upgraded redux-toolkit and how api slices are generated. * Fixed redux-toolkit cache handling. +* Add Taskfile ### NB! Prior to 3.x the project was split into separate repositories diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 00000000..f0fd1574 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,169 @@ +version: "3" + +# https://taskfile.dev/usage/#env-files +dotenv: [".env.local", ".env"] + +vars: + # https://taskfile.dev/reference/templating/ + BASE_URL: "{{.TASK_BASE_URL | default .COMPOSE_SERVER_DOMAIN | default .COMPOSE_DOMAIN }}" + DOCKER_COMPOSE: '{{ .TASK_DOCKER_COMPOSE | default "itkdev-docker-compose" }}' + +tasks: + default: + desc: "List all tasks" + cmds: + - task --list-all + silent: true + + compose: + desc: "Run `docker compose` command. Example: task compose -- up --detach." + cmds: + - "{{ .DOCKER_COMPOSE }} {{ .CLI_ARGS }}" + + site-install: + prompt: "This will reset your setup. Continue?" + desc: "Install new os2display" + cmds: + - task compose -- down + - task compose -- pull + - task npm-install + - task compose-up + - task composer-install + - task db:migrate --yes + - task fixtures:load --yes + - task site-open + silent: true + + site-open: + desc: "Opens admin, docs and client." + cmds: + - task site-open:admin + - task site-open:client + - task site-open:docs + - task site-open:templates + silent: true + + site-open:admin: + desc: "Opens admin site." + cmds: + - open http://{{ .BASE_URL }} + + site-open:client: + desc: "Opens client site." + cmds: + - open http://{{ .BASE_URL }}/client + + site-open:docs: + desc: "Opens API docs page" + cmds: + - open http://{{ .BASE_URL }}/docs + + site-open:templates: + desc: "Opens templates site." + cmds: + - open http://{{ .BASE_URL }}/template + + npm-install: + desc: "Installs node dependencies with npm." + cmds: + - docker compose run --rm --volume "$PWD:/md" node npm install + + composer: + desc: "Runs `composer` command. Example task composer -- install." + cmds: + - task compose -- exec phpfpm composer {{.CLI_ARGS}} + silent: true + + compose-up: + desc: "Runs docker compose up." + cmds: + - task compose -- up --detach --remove-orphans + silent: true + + composer-install: + desc: "Installs dependencies with composer." + cmds: + - task composer -- install {{.COMPOSER_INSTALL_ARGUMENTS}} {{.CLI_ARGS}} + silent: true + + coding-standards:check: + desc: "Check coding standards" + cmds: + - task coding-standards:assets:check + - task coding-standards:php:check + - task coding-standards:markdown:check + - task coding-standards:yml:check + + coding-standards:apply: + desc: "Apply coding standards" + cmds: + - task coding-standards:assets:apply + - task coding-standards:php:apply + - task coding-standards:markdown:apply + - task coding-standards:yml:apply + silent: true + + coding-standards:yml:apply: + desc: Apply coding standards for yml + cmds: + - docker compose run --rm --volume "$PWD:/md" prettier '**/*.{yml,yaml}' --write + + coding-standards:yml:check: + desc: Check coding standards for yml + cmds: + - docker compose run --rm --volume "$PWD:/md" prettier '**/*.{yml,yaml}' --check + + coding-standards:assets:apply: + desc: Apply coding standards for assets + cmds: + - docker compose run --rm --volume "$PWD:/md" prettier 'assets/**/*.{css,scss}' --write + - docker compose run --rm --volume "$PWD:/md" prettier 'assets/**/*.{js,jsx}' --write + + coding-standards:assets:check: + desc: Check coding standards for assets + cmds: + - docker compose run --rm --volume "$PWD:/md" prettier 'assets/**/*.{css,scss}' --check + - docker compose run --rm --volume "$PWD:/md" prettier 'assets/**/*.{js,jsx}' --check + + coding-standards:markdown:apply: + desc: "Apply coding standards for Markdown" + cmds: + - docker compose run --rm --volume "$PWD:/md" markdownlint markdownlint --ignore '**/node_modules/**' --ignore '**/vendor/**' '*.md' 'documentation/*.md' --fix + + coding-standards:markdown:check: + desc: "Check coding standards for Markdown" + cmds: + - docker compose run --rm --volume "$PWD:/md" markdownlint markdownlint --ignore '**/node_modules/**' --ignore '**/vendor/**' '*.md' 'documentation/*.md' + + coding-standards:php:apply: + desc: "Apply coding standards for PHP" + cmds: + - task compose -- exec phpfpm vendor/bin/php-cs-fixer fix --diff + silent: true + + coding-standards:php:check: + desc: "Check coding standards for PHP" + cmds: + - task compose -- exec phpfpm vendor/bin/php-cs-fixer fix --dry-run --diff + silent: true + + code-analysis: + desc: "Runs code analysis." + cmds: + - task composer -- code-analysis + + fixtures:load: + prompt: "This will reset your content. Continue?" + desc: Apply fixtures + cmds: + - task compose -- exec phpfpm bin/console hautelook:fixtures:load --no-interaction + - task compose-up + silent: true + + db:migrate: + prompt: "This will perform migrations on your db. Continue?" + desc: Run database migrations + cmds: + - task compose -- exec phpfpm bin/console doctrine:migrations:migrate --no-interaction + - task compose-up + silent: true diff --git a/composer.json b/composer.json index f2eb1e47..4fcee8da 100644 --- a/composer.json +++ b/composer.json @@ -121,6 +121,7 @@ "cache:clear": "symfony-cmd", "assets:install %PUBLIC_DIR%": "symfony-cmd" }, + "code-analysis": "vendor/bin/psalm", "coding-standards-apply": [ "vendor/bin/php-cs-fixer fix" ],