44(define playbook
55 `((version . " 1.0.0" )
66 (procedures
7- ((deploy . ((" build" . " just build" )
8- (" test" . " just test" )
9- (" release" . " just release" )))
10- (rollback . ())
11- (debug . ())))
12- (alerts . ())
13- (contacts . ())))
7+ ((build
8+ ((prerequisites . (" GNAT compiler" " GPRBuild" ))
9+ (commands
10+ ((step-1 . " gprbuild -p -j0 modshells.gpr" )
11+ (step-2 . " ls bin/modshells" )))
12+ (verification . " ./bin/modshells --version" )))
13+ (test
14+ ((unit-tests
15+ ((build . " gprbuild -p -j0 -P tests/tests.gpr" )
16+ (run . " ./bin/test_shell_manager" )))
17+ (smoke-tests
18+ ((run . " ./tests/smoke_test.sh" )))
19+ (integration
20+ ((setup . " Create test user with multiple shells" )
21+ (run . " ./bin/modshells" )
22+ (verify . " Check ~/.bashrc, ~/.zshrc for signatures" )))))
23+ (release
24+ ((pre-release
25+ ((update-version . " Edit modshells.adb version string" )
26+ (run-tests . " just test" )
27+ (update-changelog . " Document changes in CHANGELOG.adoc" )))
28+ (release
29+ ((tag . " git tag -s vX.Y.Z -m 'Release vX.Y.Z'" )
30+ (push . " git push origin main --tags" )
31+ (github-release . " gh release create vX.Y.Z --generate-notes" )))
32+ (post-release
33+ ((update-guix . " Submit package to guix-patches" )
34+ (update-nix . " Update flake.nix with new version" )))))
35+ (deploy
36+ ((local-install
37+ ((build . " gprbuild -p -j0 modshells.gpr" )
38+ (install . " cp bin/modshells ~/.local/bin/" )))
39+ (guix-install . " guix install modshells" )
40+ (nix-install . " nix profile install github:hyperpolymath/modshells" )))
41+ (rollback
42+ ((shell-config
43+ ((identify . " Find latest .modshells-backup-* file" )
44+ (restore . " cp ~/.bashrc.modshells-backup-TIMESTAMP ~/.bashrc" )
45+ (verify . " source ~/.bashrc" )))
46+ (binary
47+ ((identify . " Check previous version in git tags" )
48+ (checkout . " git checkout vX.Y.Z" )
49+ (rebuild . " gprbuild -p -j0 modshells.gpr" )))))
50+ (debug
51+ ((shell-detection
52+ ((check-paths . " ls /usr/bin/bash /bin/zsh /usr/local/bin/fish" )
53+ (trace . " Run modshells with GNAT traceback" )
54+ (verbose . " Future: modshells --verbose" )))
55+ (config-injection
56+ ((check-signature . " grep MODSHELLS_START ~/.bashrc" )
57+ (check-backup . " ls -la ~/.bashrc.modshells-backup-*" )
58+ (manual-test . " source ~/.bashrc" )))
59+ (validation
60+ ((shellcheck . " shellcheck ~/.config/nushell/modshells/**/*.sh" )
61+ (syntax . " bash -n ~/.config/nushell/modshells/**/*.sh" )))))))
62+ (alerts
63+ ((backup-failure
64+ (severity . " critical" )
65+ (description . " Failed to create backup before config modification" )
66+ (response . " Abort operation, check disk space and permissions" ))
67+ (signature-mismatch
68+ (severity . " warning" )
69+ (description . " MODSHELLS_START found but MODSHELLS_END missing" )
70+ (response . " Manual inspection required, may need to clean up config" ))
71+ (shell-not-found
72+ (severity . " info" )
73+ (description . " Configured shell not found in binary paths" )
74+ (response . " Normal for shells not installed on system" ))
75+ (validation-failure
76+ (severity . " warning" )
77+ (description . " Syntax validation failed for config snippet" )
78+ (response . " Review snippet, run shellcheck manually" ))))
79+ (contacts
80+ ((maintainer
81+ (name . " hyperpolymath" )
82+ (github . " @hyperpolymath" )
83+ (role . " Primary maintainer" ))
84+ (security
85+ (email . " security@hyperpolymath.dev" )
86+ (pgp . " See SECURITY.md for key" )
87+ (response-time . " 48 hours" ))))))
0 commit comments