feat: improve Taskfile

This commit is contained in:
Yorick Barbanneau 2024-10-10 02:03:56 +02:00
parent 44ce61ce0c
commit 7ef10b87e3

View file

@ -2,47 +2,112 @@
version: "3" version: "3"
set: [errexit, pipefail, nounset] set: [errexit, pipefail, nounset]
shopt: [globstar] shopt: [globstar]
env:
GENERATION_IN_DAYS: 20d
tasks: tasks:
check:sh: check:sh:
desc: Check SH files, will call all check:sh:* tasks
cmds: cmds:
- shellcheck **/*.sh - task: check:sh:shellcheck
- task: check:sh:shfmt
check:sh:shellcheck:
cmds:
- find . -type f -name "*.sh" -exec shellcheck {} \;
sources:
- "**/*.sh"
check:sh:shfmt:
cmds:
- find . -type f -name "*.sh" -exec shfmt -d -ln bash -i 4 {} \;
sources: sources:
- "**/*.sh" - "**/*.sh"
check:typos: check:typos:
desc: Check typos in all files
cmds: cmds:
- typos . - typos .
check:flake: check:flake:
desc: Check flake
cmds: cmds:
- nix flake check - nix flake check
sources: sources:
- "**/*.nix" - "**/*.nix"
nixos:build:*: nixos:*:*:
desc: Manage NixOS build, use nixos:verb:target format
vars: vars:
TARGET: "{{index .MATCH 0}}" VERB: "{{index .MATCH 0}}"
TARGET: "{{index .MATCH 1}}"
preconditions:
- sh: '[[ {{.VERB}} = build || {{.VERB}} = test || {{.VERB}} = switch ]]'
msg: verb must be build, test or switch
cmds:
- task: nixos:{{.VERB}}
vars:
TARGET: "{{.TARGET}}"
nixos:build:
internal: true
cmds: cmds:
- nixos-rebuild --flake .#{{.TARGET}} build - nixos-rebuild --flake .#{{.TARGET}} build
requires:
vars: [TARGET]
nixos:switch:*: nixos:switch:
vars: internal: true
TARGET: "{{index .MATCH 0}}"
cmds: cmds:
- doas nixos-rebuild --flake .#{{.TARGET}} switch - doas nixos-rebuild --flake .#{{.TARGET}} switch
requires:
vars: [TARGET]
nixos:test:*: nixos:test:
vars: internal: true
TARGET: "{{index .MATCH 0}}"
cmds: cmds:
- doas nixos-rebuild --flake .#{{.TARGET}} test - doas nixos-rebuild --flake .#{{.TARGET}} test
requires:
vars: [TARGET]
home:*:*:
desc: Manage Home-Manager configuration, use home:verb:target format
vars:
VERB: "{{index .MATCH 0}}"
TARGET: "{{index .MATCH 1}}"
preconditions:
- sh: '[[ {{.VERB}} = build || {{.VERB}} = switch ]]'
msg: verb must be build or switch
cmds:
- task: home:{{.VERB}}
vars:
TARGET: "{{.TARGET}}"
home:build:*: home:build:*:
vars: internal: true
TARGET: "{{index .MATCH 0}}"
cmds: cmds:
- home-manager build --flake .#{{.TARGET}} - home-manager build --flake .#{{.TARGET}}
requires:
vars: [TARGET]
home:switch:*: home:switch:*:
vars: internal: true
TARGET: "{{index .MATCH 0}}"
cmds: cmds:
- home-manager switch --flake .#{{.TARGET}} - home-manager switch --flake .#{{.TARGET}}
requires:
vars: [TARGET]
generation-list:nixos:
cmds:
- nixos-rebuild list-generations
generation-list:home:
cmds:
- home-manager generations
gc:nixos:
desc: Garbage collect NixOS
cmds:
- doas nix-collect-garbage --delete-older-than {{.GENERATION_IN_DAYS}}
gc:home:
desc: Garbage collect Home-Manager
cmds:
- home-manager expire-generations {{.GENERATION_IN_DAYS}}
- nix store gc