11---
22version : ' 3'
3+
34includes :
45 ansible :
56 taskfile : ./.config/taskfiles/ansible/Taskfile.yml
@@ -310,7 +311,9 @@ includes:
310311 web:profile :
311312 taskfile : ./.config/taskfiles/web/Taskfile-profile.yml
312313 optional : true
314+
313315output : interleaved
316+
314317vars :
315318 DOCKERHUB_PROFILE :
316319 sh : |
@@ -363,7 +366,11 @@ vars:
363366 GROUP_EXEC_ASYNC : ' false'
364367 # yamllint disable rule:line-length
365368 IGNORE_FOLDERS : >-
366- -path './.autodoc/*' -o -path './.cache/*' -o -path './.common*' -o -path './.config/*' -o -path './.git/*' -o -path './.modules/*' -o -path './.npm/*' -o -path './.pnpm-store/*' -o -path './.shared/*' -o -path './.task/*' -o -path './.venv/*' -o -path './.vscode/*' -o -path './build/*' -o -path './dist/*' -o -path './node_modules/*' -o -path './roles/*' -o -name pnpm-lock.yaml -o -name package-lock.json -o -name poetry.lock -o -name '.variables.json' -o -name '.git'
369+ -path './.autodoc/*' -o -path './.cache/*' -o -path './.common*' -o -path './.config/*' -o -path './.git/*' -o
370+ -path './.modules/*' -o -path './.npm/*' -o
371+ -path './.pnpm-store/*' -o -path './.shared/*' -o -path './.task/*' -o -path './.venv/*' -o -path './.vscode/*' -o
372+ -path './build/*' -o -path './dist/*' -o -path './node_modules/*' -o -path './roles/*' -o -name pnpm-lock.yaml -o
373+ -name package-lock.json -o -name poetry.lock -o -name '.variables.json' -o -name '.git'
367374 INIT_SCRIPT : https://gitlab.com/megabyte-labs/gitlab-ci/-/raw/master/scripts/update-init.sh
368375 LOG_FIX :
369376 sh : chmod +x .config/log
@@ -395,13 +402,34 @@ vars:
395402 fi
396403 PYTHON_VIRTUALENV : true
397404 REPOSITORY_SUBTYPE :
398- sh : if type jq &> /dev/null && [ -f package.json ]; then VER="$(jq -r .blueprint.subgroup package.json)"; if [ "$VER" == null ]; then echo "$REPOSITORY_TYPE"; else echo "$VER"; fi; else echo "$REPOSITORY_TYPE"; fi
405+ sh : |
406+ if [ -n "$REPOSITORY_TYPE" ]; then REPO_SUBTYPE="$REPOSITORY_TYPE"; fi
407+ if type jq &> /dev/null && [ -f package.json ]; then
408+ VER="$(jq -r '.blueprint.subgroup' package.json)"
409+ if [ "$VER" == 'null' ]; then
410+ if [ -n "$REPO_SUBTYPE" ]; then echo "$REPO_SUBTYPE"; else echo "misc"; fi
411+ else
412+ echo "$VER"
413+ fi
414+ else
415+ if [ -n "$REPO_SUBTYPE" ]; then echo "$REPO_SUBTYPE"; else echo "misc"; fi
416+ fi
399417 REPOSITORY_TYPE :
400- sh : if type jq &> /dev/null && [ -f package.json ]; then VER="$(jq -r .blueprint.group package.json)"; if [ "$VER" == null ]; then echo "$GROUP_TYPE"; else echo "$VER"; fi; else echo "$GROUP_TYPE"; fi
418+ sh : |
419+ if [ -n "$GROUP_TYPE" ]; then REPO_TYPE="$GROUP_TYPE"; fi
420+ if type jq &> /dev/null && [ -f package.json ]; then
421+ VER="$(jq -r '.blueprint.group' package.json)"
422+ if [ "$VER" == 'null' ]; then
423+ if [ -n "$REPO_TYPE" ]; then echo "$REPO_TYPE"; else echo "misc"; fi
424+ else
425+ echo "$VER"
426+ fi
427+ else
428+ if [ -n "$REPO_TYPE" ]; then echo "$REPO_TYPE"; else echo "misc"; fi
429+ fi
401430 SEMANTIC_CONFIG : semantic-release-config
402431 TIMEZONE : America/New_York
403- includes :
404- common:start : ./.config/taskfiles/common/Taskfile-start.yml
432+
405433env :
406434 GOPATH :
407435 sh : |
434462 fi
435463 VOLTA_HOME :
436464 sh : echo "$HOME/.volta"
465+
437466profile : |
438467 if [[ "$OSTYPE" == 'linux-gnu'* ]] || [[ "$OSTYPE" == 'linux-musl'* ]]; then
439468 if [ -f /home/linuxbrew/.linuxbrew/bin/brew ] && ! type brew > /dev/null; then
@@ -452,6 +481,7 @@ profile: |
452481 if [ -f .venv/bin/activate ]; then
453482 . .venv/bin/activate
454483 fi
484+
455485tasks :
456486 build :
457487 deps :
@@ -480,6 +510,7 @@ tasks:
480510 else
481511 [[ $- == *i* ]] && task prepare || (.config/log error '{{.NONINTERACTIVE_MISSING_BUILD_CMD}}' && exit 1)
482512 fi
513+
483514 clean :
484515 desc : Removes optional folders that are cached during various tasks
485516 summary : |
@@ -490,11 +521,13 @@ tasks:
490521 which will re-generate the project from scratch. Ideally, this task and the reset task
491522 should never be necessary. The `start` task should be used instead.
492523 vars :
493- CLEAN_TARGETS : .autodoc .cache .task .venv node_modules tsconfig.tsbuildinfo venv .variables.json
524+ CLEAN_TARGETS : .autodoc .cache .task .venv node_modules tsconfig.tsbuildinfo venv
525+ .variables.json
494526 cmds :
495527 - task : common:clean
496528 vars :
497529 CLEAN_TARGETS : ' {{.CLEAN_TARGETS}}'
530+
498531 commit :
499532 desc : Lint staged files, report spelling errors, and open a _required_ commit dialoge
500533 summary : |
@@ -511,6 +544,7 @@ tasks:
511544 to your regular `git commit -m` command to bypass the pre-commit hook.
512545 cmds :
513546 - task : common:commit
547+
514548 commit:all :
515549 deps :
516550 - install:software:git
@@ -548,20 +582,24 @@ tasks:
548582 git add --all
549583 git commit
550584 {{end}}
585+
551586 commit:quick :
552587 deps :
553588 - ci:commit:config
554589 cmds :
555590 - |
556591 task --list > /dev/null || (echo "ERROR: Invalid Taskfiles!" && exit 1)
557592 git add --all
558- - " HUSKY=0 git commit -m '\U0001F527 chore(tweak) " : quick minor update' --no-verify
593+ - HUSKY=0 git commit -m '🔧 chore(tweak) : quick minor update' --no-verify
559594 - git push origin master
595+
560596 devcontainer :
561597 deps :
562598 - install:npm:devcontainer
563599 - install:software:docker
600+
564601 donothing : ' true'
602+
565603 fix :
566604 desc : Run code auto-fixers / auto-formatters
567605 summary : |
@@ -572,6 +610,7 @@ tasks:
572610 an error so the auto-fixes still have to be validated.
573611 cmds :
574612 - task : fix:all
613+
575614 fresh :
576615 summary : Initialize a new project with only the Taskfile.yml present
577616 cmds :
@@ -583,6 +622,7 @@ tasks:
583622 - TMP="$(mktemp)" && jq -r 'del(.blueprint)' package.json > "$TMP" && mv "$TMP" package.json
584623 - bash start.sh
585624 - task : prepare
625+
586626 get:links :
587627 deps :
588628 - install:software:jq
@@ -595,6 +635,7 @@ tasks:
595635 cmds :
596636 - .config/log info 'GitHub -----> `{{.GITHUB_URL}}`'
597637 - .config/log info 'GitLab -----> `{{.GITLAB_URL}}`'
638+
598639 group:exec :
599640 desc : Execute group commands on any GitLab group (including repositories in sub-groups)
600641 summary : |
@@ -615,6 +656,7 @@ tasks:
615656 Be sure to wrap the command in quotes or you might observe some odd behavior.
616657 cmds :
617658 - task : git:gitlab:group:exec
659+
618660 init :
619661 deps :
620662 - install:software:jq
@@ -647,10 +689,12 @@ tasks:
647689 - git init
648690 - task : repair
649691 - task : prepare
692+
650693 jumpusb :
651694 desc : Creates a JumpUSB (https://jumpusb.com)
652695 cmds :
653696 - task : install:ventoy
697+
654698 lint :
655699 desc : Lints the project using all linters
656700 summary : |
@@ -664,6 +708,7 @@ tasks:
664708 `task lint`
665709 cmds :
666710 - task : lint:all
711+
667712 livereload :
668713 deps :
669714 - install:npm:nodemon
@@ -703,10 +748,12 @@ tasks:
703748 .config/log error '`Taskfile-project.yml` must exist and have a `livereload` task to use with `nodemon`' && exit 1
704749 fi
705750 - nodemon --config {{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}.config/nodemon.json{{end}}
751+
706752 new:project :
707753 desc : Create a new project
708754 cmds :
709755 - task : prepare
756+
710757 preload :
711758 desc : Set up your workstation in advance by installing commonly used programs
712759 summary : |
@@ -749,6 +796,7 @@ tasks:
749796 - task : install:pipx:bundle
750797 - task : install:python:requirements
751798 - task : install:modules:local
799+
752800 prepare :
753801 desc : Prepares the project for the normal start command
754802 summary : |
@@ -765,6 +813,7 @@ tasks:
765813 cmds :
766814 - task : boilerplate:check:package
767815 - task : boilerplate:clean
816+
768817 publish :
769818 desc : Publish a semantic release via `semantic-release`
770819 summary : |
@@ -812,6 +861,7 @@ tasks:
812861 success : Successfully ran `semantic-release` via `task publish`
813862 cmds :
814863 - task : publish:semantic-release
864+
815865 publish:force :
816866 desc : Force a `semantic-release` even if there are no new eligible commits
817867 summary : |
@@ -837,8 +887,10 @@ tasks:
837887 start : Publishing `semantic-release` update via `task publish:force`
838888 success : Successfully published update via `task publish:force`
839889 cmds :
840- - " HUSKY=0 git commit -a --allow-empty -m '\U0001F528 chore(bump): Forced semantic-release {{.UPDATE_LEVEL}}' -n\n "
890+ - |
891+ HUSKY=0 git commit -a --allow-empty -m '🔨 chore(bump): Forced semantic-release {{.UPDATE_LEVEL}}' -n
841892 - task : publish
893+
842894 pull:upstream :
843895 desc : Pull from upstream repositories
844896 summary : |
@@ -855,6 +907,7 @@ tasks:
855907 success : Successfully pulled from `upstreamRemotes`
856908 cmds :
857909 - task : common:update:upstream:remotes:pull
910+
858911 repair :
859912 cmds :
860913 - task : common:repair
@@ -865,6 +918,7 @@ tasks:
865918 else
866919 curl -sSL {{.INIT_SCRIPT}} > "$TMP" && bash "$TMP" && rm "$TMP"
867920 fi
921+
868922 reset :
869923 desc : Resets the project by removing all caches and then re-generating templated files
870924 summary : |
@@ -876,6 +930,7 @@ tasks:
876930 updates, it re-generates any templated files.
877931 cmds :
878932 - task : common:reset
933+
879934 reset:force :
880935 desc : ' Aggressively reset the project (**WARNING** This will wipe uncommitted work)'
881936 summary : |
@@ -894,6 +949,7 @@ tasks:
894949 answer :
895950 cmds :
896951 - task : common:reset:force
952+
897953 scripts :
898954 interactive : true
899955 deps :
@@ -911,6 +967,7 @@ tasks:
911967 start : Running `NTL_RUNNER={{.NPM_PROGRAM}} ntl`
912968 cmds :
913969 - NTL_RUNNER={{.NPM_PROGRAM}} ntl
970+
914971 services :
915972 desc : Update elements of the repository that require API access
916973 summary : |
@@ -923,6 +980,7 @@ tasks:
923980 - task : common:update:services
924981 status :
925982 - ' [ -n "$GITLAB_CI" ] && [ "$REPOSITORY_UPDATE" != "true" ]'
983+
926984 shell :
927985 desc : Start a terminal session using Docker with any Linux operating system
928986 compile : |
@@ -956,11 +1014,13 @@ tasks:
9561014 * ubuntu-21.04
9571015 cmds :
9581016 - task : common:shell
1017+
9591018 ssh-keys :
9601019 deps :
9611020 - cloud:heroku:ssh-keys
9621021 - git:github:ssh-keys
9631022 - git:gitlab:ssh-keys
1023+
9641024 start :
9651025 desc : Start the project by installing / updating dependencies, repairing issues, and opening a tutorial
9661026 summary : |
@@ -984,6 +1044,7 @@ tasks:
9841044 success : Project started!
9851045 cmds :
9861046 - task : common:start
1047+
9871048 synchronize :
9881049 desc : Set up the project and refresh it with the latest changes
9891050 summary : |
@@ -1004,6 +1065,7 @@ tasks:
10041065 success : Successfully synchronized the project with upstream file changes and also bootstrapped the project
10051066 cmds :
10061067 - task : upstream:{{.PROJECT_TYPE}}
1068+
10071069 tag:deps :
10081070 desc : Inject a new command in the `Taskfile.yml` that includes all tasks matching a given tag as deps
10091071 summary : |
@@ -1032,6 +1094,7 @@ tasks:
10321094 ```
10331095 cmds :
10341096 - task : common:util:task:tag:deps
1097+
10351098 template :
10361099 deps :
10371100 - install:npm:liquidjs
@@ -1053,6 +1116,7 @@ tasks:
10531116 preconditions :
10541117 - sh : test -f .variables.json
10551118 msg : This task requires that you have already spun up the project by running `task start`
1119+
10561120 test :
10571121 deps :
10581122 - install:software:jq
@@ -1083,6 +1147,7 @@ tasks:
10831147 else
10841148 [[ $- == *i* ]] && task prepare || (.config/log error '{{.NONINTERACTIVE_MISSING_TEST_CMD}}' && exit 1)
10851149 fi
1150+
10861151 update :
10871152 desc : Fully update the repository
10881153 summary : |
@@ -1109,7 +1174,9 @@ tasks:
11091174 cmds :
11101175 - task : common:start
11111176 env :
1112- UPDATE_PROJECT : " true"
1177+ UPDATE_PROJECT : ' true'
1178+ - task : common:update:finish
1179+
11131180 yubikey :
11141181 desc : Create an OpenGPG-enabled YubiKey
11151182 summary : |
0 commit comments