kastell 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +18 -0
- package/.claude-plugin/plugin.json +39 -0
- package/CHANGELOG.md +1266 -1266
- package/LICENSE +201 -201
- package/NOTICE +5 -5
- package/bin/kastell +2 -2
- package/bin/kastell-mcp +5 -5
- package/dist/adapters/coolify.js +92 -92
- package/dist/adapters/dokploy.js +99 -99
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/shared.js +4 -2
- package/dist/adapters/shared.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +6 -9
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +12 -12
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/evidence.d.ts.map +1 -1
- package/dist/commands/evidence.js +8 -9
- package/dist/commands/evidence.js.map +1 -1
- package/dist/commands/fix.js +3 -3
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +4 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/interactive/backup-maintenance.d.ts +8 -0
- package/dist/commands/interactive/backup-maintenance.d.ts.map +1 -0
- package/dist/commands/interactive/backup-maintenance.js +120 -0
- package/dist/commands/interactive/backup-maintenance.js.map +1 -0
- package/dist/commands/interactive/index.d.ts +4 -0
- package/dist/commands/interactive/index.d.ts.map +1 -0
- package/dist/commands/interactive/index.js +94 -0
- package/dist/commands/interactive/index.js.map +1 -0
- package/dist/commands/interactive/menu.d.ts +23 -0
- package/dist/commands/interactive/menu.d.ts.map +1 -0
- package/dist/commands/interactive/menu.js +121 -0
- package/dist/commands/interactive/menu.js.map +1 -0
- package/dist/commands/interactive/monitoring.d.ts +5 -0
- package/dist/commands/interactive/monitoring.d.ts.map +1 -0
- package/dist/commands/interactive/monitoring.js +96 -0
- package/dist/commands/interactive/monitoring.js.map +1 -0
- package/dist/commands/interactive/plugins.d.ts +2 -0
- package/dist/commands/interactive/plugins.d.ts.map +1 -0
- package/dist/commands/interactive/plugins.js +30 -0
- package/dist/commands/interactive/plugins.js.map +1 -0
- package/dist/commands/interactive/security.d.ts +9 -0
- package/dist/commands/interactive/security.d.ts.map +1 -0
- package/dist/commands/interactive/security.js +535 -0
- package/dist/commands/interactive/security.js.map +1 -0
- package/dist/commands/interactive/server-management.d.ts +5 -0
- package/dist/commands/interactive/server-management.d.ts.map +1 -0
- package/dist/commands/interactive/server-management.js +79 -0
- package/dist/commands/interactive/server-management.js.map +1 -0
- package/dist/commands/interactive/shared.d.ts +12 -0
- package/dist/commands/interactive/shared.d.ts.map +1 -0
- package/dist/commands/interactive/shared.js +30 -0
- package/dist/commands/interactive/shared.js.map +1 -0
- package/dist/commands/lock.js +1 -1
- package/dist/commands/lock.js.map +1 -1
- package/dist/commands/regression.d.ts.map +1 -1
- package/dist/commands/regression.js +1 -2
- package/dist/commands/regression.js.map +1 -1
- package/dist/commands/restart.d.ts.map +1 -1
- package/dist/commands/restart.js +3 -2
- package/dist/commands/restart.js.map +1 -1
- package/dist/commands/schedule.js +2 -2
- package/dist/commands/schedule.js.map +1 -1
- package/dist/core/audit/formatters/badge.js +20 -20
- package/dist/core/backup.d.ts.map +1 -1
- package/dist/core/backup.js +10 -5
- package/dist/core/backup.js.map +1 -1
- package/dist/core/completions.js +631 -631
- package/dist/core/deploy.d.ts.map +1 -1
- package/dist/core/deploy.js +7 -4
- package/dist/core/deploy.js.map +1 -1
- package/dist/core/lock/auth.d.ts +7 -0
- package/dist/core/lock/auth.d.ts.map +1 -0
- package/dist/core/lock/auth.js +59 -0
- package/dist/core/lock/auth.js.map +1 -0
- package/dist/core/lock/docker.d.ts +4 -0
- package/dist/core/lock/docker.d.ts.map +1 -0
- package/dist/core/lock/docker.js +28 -0
- package/dist/core/lock/docker.js.map +1 -0
- package/dist/core/lock/index.d.ts +11 -0
- package/dist/core/lock/index.d.ts.map +1 -0
- package/dist/core/lock/index.js +247 -0
- package/dist/core/lock/index.js.map +1 -0
- package/dist/core/lock/monitoring.d.ts +4 -0
- package/dist/core/lock/monitoring.d.ts.map +1 -0
- package/dist/core/lock/monitoring.js +55 -0
- package/dist/core/lock/monitoring.js.map +1 -0
- package/dist/core/lock/network.d.ts +6 -0
- package/dist/core/lock/network.d.ts.map +1 -0
- package/dist/core/lock/network.js +59 -0
- package/dist/core/lock/network.js.map +1 -0
- package/dist/core/lock/ssh.d.ts +5 -0
- package/dist/core/lock/ssh.d.ts.map +1 -0
- package/dist/core/lock/ssh.js +49 -0
- package/dist/core/lock/ssh.js.map +1 -0
- package/dist/core/lock/system.d.ts +9 -0
- package/dist/core/lock/system.d.ts.map +1 -0
- package/dist/core/lock/system.js +80 -0
- package/dist/core/lock/system.js.map +1 -0
- package/dist/core/lock/types.d.ts +41 -0
- package/dist/core/lock/types.d.ts.map +1 -0
- package/dist/core/lock/types.js +2 -0
- package/dist/core/lock/types.js.map +1 -0
- package/dist/core/maintain.d.ts.map +1 -1
- package/dist/core/maintain.js +3 -1
- package/dist/core/maintain.js.map +1 -1
- package/dist/core/manage.d.ts.map +1 -1
- package/dist/core/manage.js +5 -3
- package/dist/core/manage.js.map +1 -1
- package/dist/core/notifyStore.d.ts.map +1 -1
- package/dist/core/notifyStore.js +3 -1
- package/dist/core/notifyStore.js.map +1 -1
- package/dist/core/provision.d.ts.map +1 -1
- package/dist/core/provision.js +9 -4
- package/dist/core/provision.js.map +1 -1
- package/dist/core/scheduleManager.d.ts.map +1 -1
- package/dist/core/scheduleManager.js +5 -2
- package/dist/core/scheduleManager.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/schemas/audit.d.ts +34 -0
- package/dist/mcp/schemas/audit.d.ts.map +1 -0
- package/dist/mcp/schemas/audit.js +23 -0
- package/dist/mcp/schemas/audit.js.map +1 -0
- package/dist/mcp/schemas/common.d.ts +16 -0
- package/dist/mcp/schemas/common.d.ts.map +1 -0
- package/dist/mcp/schemas/common.js +14 -0
- package/dist/mcp/schemas/common.js.map +1 -0
- package/dist/mcp/schemas/health.d.ts +14 -0
- package/dist/mcp/schemas/health.d.ts.map +1 -0
- package/dist/mcp/schemas/health.js +13 -0
- package/dist/mcp/schemas/health.js.map +1 -0
- package/dist/mcp/schemas/index.d.ts +5 -0
- package/dist/mcp/schemas/index.d.ts.map +1 -0
- package/dist/mcp/schemas/index.js +5 -0
- package/dist/mcp/schemas/index.js.map +1 -0
- package/dist/mcp/schemas/server.d.ts +18 -0
- package/dist/mcp/schemas/server.d.ts.map +1 -0
- package/dist/mcp/schemas/server.js +16 -0
- package/dist/mcp/schemas/server.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +56 -39
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/serverAudit.d.ts +63 -1
- package/dist/mcp/tools/serverAudit.d.ts.map +1 -1
- package/dist/mcp/tools/serverAudit.js +63 -6
- package/dist/mcp/tools/serverAudit.js.map +1 -1
- package/dist/mcp/tools/serverBackup.d.ts +100 -2
- package/dist/mcp/tools/serverBackup.d.ts.map +1 -1
- package/dist/mcp/tools/serverBackup.handlers.d.ts.map +1 -1
- package/dist/mcp/tools/serverBackup.handlers.js +9 -0
- package/dist/mcp/tools/serverBackup.handlers.js.map +1 -1
- package/dist/mcp/tools/serverBackup.js +74 -0
- package/dist/mcp/tools/serverBackup.js.map +1 -1
- package/dist/mcp/tools/serverCompare.d.ts +33 -0
- package/dist/mcp/tools/serverCompare.d.ts.map +1 -1
- package/dist/mcp/tools/serverCompare.js +45 -2
- package/dist/mcp/tools/serverCompare.js.map +1 -1
- package/dist/mcp/tools/serverDoctor.d.ts +14 -0
- package/dist/mcp/tools/serverDoctor.d.ts.map +1 -1
- package/dist/mcp/tools/serverDoctor.js +15 -0
- package/dist/mcp/tools/serverDoctor.js.map +1 -1
- package/dist/mcp/tools/serverEvidence.d.ts +13 -0
- package/dist/mcp/tools/serverEvidence.d.ts.map +1 -1
- package/dist/mcp/tools/serverEvidence.js +17 -2
- package/dist/mcp/tools/serverEvidence.js.map +1 -1
- package/dist/mcp/tools/serverExplain.d.ts +17 -0
- package/dist/mcp/tools/serverExplain.d.ts.map +1 -1
- package/dist/mcp/tools/serverExplain.js +33 -1
- package/dist/mcp/tools/serverExplain.js.map +1 -1
- package/dist/mcp/tools/serverFix.d.ts +78 -0
- package/dist/mcp/tools/serverFix.d.ts.map +1 -1
- package/dist/mcp/tools/serverFix.js +84 -0
- package/dist/mcp/tools/serverFix.js.map +1 -1
- package/dist/mcp/tools/serverFleet.d.ts +24 -1
- package/dist/mcp/tools/serverFleet.d.ts.map +1 -1
- package/dist/mcp/tools/serverFleet.js +24 -1
- package/dist/mcp/tools/serverFleet.js.map +1 -1
- package/dist/mcp/tools/serverGuard.d.ts +12 -0
- package/dist/mcp/tools/serverGuard.d.ts.map +1 -1
- package/dist/mcp/tools/serverGuard.js +16 -0
- package/dist/mcp/tools/serverGuard.js.map +1 -1
- package/dist/mcp/tools/serverInfo.d.ts +77 -1
- package/dist/mcp/tools/serverInfo.d.ts.map +1 -1
- package/dist/mcp/tools/serverInfo.js +77 -4
- package/dist/mcp/tools/serverInfo.js.map +1 -1
- package/dist/mcp/tools/serverLock.d.ts +10 -0
- package/dist/mcp/tools/serverLock.d.ts.map +1 -1
- package/dist/mcp/tools/serverLock.js +15 -3
- package/dist/mcp/tools/serverLock.js.map +1 -1
- package/dist/mcp/tools/serverLogs.d.ts +43 -0
- package/dist/mcp/tools/serverLogs.d.ts.map +1 -1
- package/dist/mcp/tools/serverLogs.js +28 -0
- package/dist/mcp/tools/serverLogs.js.map +1 -1
- package/dist/mcp/tools/serverMaintain.d.ts +47 -0
- package/dist/mcp/tools/serverMaintain.d.ts.map +1 -1
- package/dist/mcp/tools/serverMaintain.js +75 -41
- package/dist/mcp/tools/serverMaintain.js.map +1 -1
- package/dist/mcp/tools/serverManage.d.ts +50 -0
- package/dist/mcp/tools/serverManage.d.ts.map +1 -1
- package/dist/mcp/tools/serverManage.js +49 -0
- package/dist/mcp/tools/serverManage.js.map +1 -1
- package/dist/mcp/tools/serverPlugin.d.ts +18 -0
- package/dist/mcp/tools/serverPlugin.d.ts.map +1 -1
- package/dist/mcp/tools/serverPlugin.js +26 -1
- package/dist/mcp/tools/serverPlugin.js.map +1 -1
- package/dist/mcp/tools/serverProvision.d.ts +22 -0
- package/dist/mcp/tools/serverProvision.d.ts.map +1 -1
- package/dist/mcp/tools/serverProvision.js +22 -2
- package/dist/mcp/tools/serverProvision.js.map +1 -1
- package/dist/mcp/tools/serverSecure.d.ts +120 -0
- package/dist/mcp/tools/serverSecure.d.ts.map +1 -1
- package/dist/mcp/tools/serverSecure.handlers.d.ts.map +1 -1
- package/dist/mcp/tools/serverSecure.handlers.js +39 -98
- package/dist/mcp/tools/serverSecure.handlers.js.map +1 -1
- package/dist/mcp/tools/serverSecure.js +101 -0
- package/dist/mcp/tools/serverSecure.js.map +1 -1
- package/dist/mcp/utils.d.ts +1 -0
- package/dist/mcp/utils.d.ts.map +1 -1
- package/dist/mcp/utils.js +5 -1
- package/dist/mcp/utils.js.map +1 -1
- package/dist/plugin/registry.d.ts.map +1 -1
- package/dist/plugin/registry.js +5 -3
- package/dist/plugin/registry.js.map +1 -1
- package/dist/providers/linode.d.ts +1 -0
- package/dist/providers/linode.d.ts.map +1 -1
- package/dist/providers/linode.js +4 -0
- package/dist/providers/linode.js.map +1 -1
- package/dist/utils/cloudInit.js +58 -58
- package/dist/utils/config.d.ts +3 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +11 -6
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/encryption.d.ts.map +1 -1
- package/dist/utils/encryption.js +4 -1
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/migration.d.ts.map +1 -1
- package/dist/utils/migration.js +25 -14
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/safeMode.d.ts.map +1 -1
- package/dist/utils/safeMode.js +3 -2
- package/dist/utils/safeMode.js.map +1 -1
- package/dist/utils/securityLogger.d.ts.map +1 -1
- package/dist/utils/securityLogger.js +7 -3
- package/dist/utils/securityLogger.js.map +1 -1
- package/kastell-plugin/.claude-plugin/plugin.json +20 -0
- package/kastell-plugin/.mcp.json +8 -0
- package/kastell-plugin/README.md +113 -0
- package/kastell-plugin/agents/.gitkeep +0 -0
- package/kastell-plugin/agents/kastell-auditor.md +77 -0
- package/kastell-plugin/agents/scripts/bucket_mapper.sh +101 -0
- package/kastell-plugin/agents/scripts/trend_report.sh +91 -0
- package/kastell-plugin/hooks/destroy-block.cjs +31 -0
- package/kastell-plugin/hooks/hooks.json +57 -0
- package/kastell-plugin/hooks/pre-commit-audit-guard.cjs +75 -0
- package/kastell-plugin/hooks/session-audit.cjs +86 -0
- package/kastell-plugin/hooks/session-log.cjs +56 -0
- package/kastell-plugin/hooks/stop-quality-check.cjs +72 -0
- package/kastell-plugin/skills/.gitkeep +0 -0
- package/kastell-plugin/skills/kastell-careful/SKILL.md +64 -0
- package/kastell-plugin/skills/kastell-ops/SKILL.md +139 -0
- package/kastell-plugin/skills/kastell-ops/references/commands.md +45 -0
- package/kastell-plugin/skills/kastell-ops/references/mcp-tools.md +50 -0
- package/kastell-plugin/skills/kastell-ops/references/patterns.md +145 -0
- package/kastell-plugin/skills/kastell-ops/references/pitfalls.md +136 -0
- package/kastell-plugin/skills/kastell-ops/scripts/check_coverage.sh +101 -0
- package/kastell-plugin/skills/kastell-ops/scripts/fleet_report.sh +73 -0
- package/kastell-plugin/skills/kastell-ops/scripts/parse_audit.sh +76 -0
- package/kastell-plugin/skills/kastell-research/SKILL.md +90 -0
- package/kastell-plugin/skills/kastell-scaffold/SKILL.md +104 -0
- package/kastell-plugin/skills/kastell-scaffold/references/template-audit-check.md +150 -0
- package/kastell-plugin/skills/kastell-scaffold/references/template-command.md +80 -0
- package/kastell-plugin/skills/kastell-scaffold/references/template-mcp-tool.md +72 -0
- package/kastell-plugin/skills/kastell-scaffold/references/template-provider.md +67 -0
- package/kastell-plugin/skills/kastell-scaffold/scripts/scaffold.sh +180 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/check-test.ts.tpl +27 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/check.ts.tpl +50 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/command-core.ts.tpl +18 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/command-test.ts.tpl +17 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/command.ts.tpl +25 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/mcp-tool-test.ts.tpl +30 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/mcp-tool.ts.tpl +29 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/provider-test.ts.tpl +34 -0
- package/kastell-plugin/skills/kastell-scaffold/templates/provider.ts.tpl +32 -0
- package/package.json +122 -115
package/dist/core/completions.js
CHANGED
|
@@ -4,643 +4,643 @@
|
|
|
4
4
|
* covering all 30 commands with per-command options.
|
|
5
5
|
*/
|
|
6
6
|
export function generateBashCompletions() {
|
|
7
|
-
return `# Generated by kastell -- bash completion script
|
|
8
|
-
# Add to ~/.bashrc or save to ~/.local/share/bash-completion/completions/kastell
|
|
9
|
-
|
|
10
|
-
_kastell() {
|
|
11
|
-
local cur prev commands
|
|
12
|
-
COMPREPLY=()
|
|
13
|
-
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
14
|
-
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
15
|
-
commands="init list status destroy config ssh update restart logs monitor health doctor firewall domain secure backup restore export import add remove maintain snapshot completions guard lock audit evidence fleet notify plugin"
|
|
16
|
-
|
|
17
|
-
# Subcommand completions
|
|
18
|
-
case "\${prev}" in
|
|
19
|
-
config)
|
|
20
|
-
COMPREPLY=( $(compgen -W "set get list reset validate" -- "\${cur}") )
|
|
21
|
-
return 0
|
|
22
|
-
;;
|
|
23
|
-
firewall)
|
|
24
|
-
COMPREPLY=( $(compgen -W "setup add remove status --port --protocol --dry-run" -- "\${cur}") )
|
|
25
|
-
return 0
|
|
26
|
-
;;
|
|
27
|
-
domain)
|
|
28
|
-
COMPREPLY=( $(compgen -W "add check remove list info --domain --no-ssl --dry-run" -- "\${cur}") )
|
|
29
|
-
return 0
|
|
30
|
-
;;
|
|
31
|
-
secure)
|
|
32
|
-
COMPREPLY=( $(compgen -W "setup status audit --port --dry-run --force" -- "\${cur}") )
|
|
33
|
-
return 0
|
|
34
|
-
;;
|
|
35
|
-
snapshot)
|
|
36
|
-
COMPREPLY=( $(compgen -W "create list delete --all --dry-run --force" -- "\${cur}") )
|
|
37
|
-
return 0
|
|
38
|
-
;;
|
|
39
|
-
completions)
|
|
40
|
-
COMPREPLY=( $(compgen -W "bash zsh fish" -- "\${cur}") )
|
|
41
|
-
return 0
|
|
42
|
-
;;
|
|
43
|
-
guard)
|
|
44
|
-
COMPREPLY=( $(compgen -W "start stop status" -- "\${cur}") )
|
|
45
|
-
return 0
|
|
46
|
-
;;
|
|
47
|
-
notify)
|
|
48
|
-
COMPREPLY=( $(compgen -W "add test" -- "\${cur}") )
|
|
49
|
-
return 0
|
|
50
|
-
;;
|
|
51
|
-
plugin)
|
|
52
|
-
COMPREPLY=( $(compgen -W "install remove list validate --force --ver" -- "\${cur}") )
|
|
53
|
-
return 0
|
|
54
|
-
;;
|
|
55
|
-
esac
|
|
56
|
-
|
|
57
|
-
# Per-command option completions
|
|
58
|
-
if [[ "\${cur}" == -* ]]; then
|
|
59
|
-
case "\${COMP_WORDS[1]}" in
|
|
60
|
-
init)
|
|
61
|
-
COMPREPLY=( $(compgen -W "--provider --token --token-stdin --region --size --name --full-setup --config --template --no-open --mode --dry-run" -- "\${cur}") )
|
|
62
|
-
return 0
|
|
63
|
-
;;
|
|
64
|
-
status)
|
|
65
|
-
COMPREPLY=( $(compgen -W "--all --autostart" -- "\${cur}") )
|
|
66
|
-
return 0
|
|
67
|
-
;;
|
|
68
|
-
destroy)
|
|
69
|
-
COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
|
|
70
|
-
return 0
|
|
71
|
-
;;
|
|
72
|
-
ssh)
|
|
73
|
-
COMPREPLY=( $(compgen -W "-c --command" -- "\${cur}") )
|
|
74
|
-
return 0
|
|
75
|
-
;;
|
|
76
|
-
update)
|
|
77
|
-
COMPREPLY=( $(compgen -W "--all --dry-run --force" -- "\${cur}") )
|
|
78
|
-
return 0
|
|
79
|
-
;;
|
|
80
|
-
restart)
|
|
81
|
-
COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
|
|
82
|
-
return 0
|
|
83
|
-
;;
|
|
84
|
-
logs)
|
|
85
|
-
COMPREPLY=( $(compgen -W "-n --lines -f --follow -s --service" -- "\${cur}") )
|
|
86
|
-
return 0
|
|
87
|
-
;;
|
|
88
|
-
monitor)
|
|
89
|
-
COMPREPLY=( $(compgen -W "--containers" -- "\${cur}") )
|
|
90
|
-
return 0
|
|
91
|
-
;;
|
|
92
|
-
doctor)
|
|
93
|
-
COMPREPLY=( $(compgen -W "--check-tokens --fresh --json --fix --force --dry-run" -- "\${cur}") )
|
|
94
|
-
return 0
|
|
95
|
-
;;
|
|
96
|
-
firewall)
|
|
97
|
-
COMPREPLY=( $(compgen -W "--port --protocol --dry-run --force" -- "\${cur}") )
|
|
98
|
-
return 0
|
|
99
|
-
;;
|
|
100
|
-
domain)
|
|
101
|
-
COMPREPLY=( $(compgen -W "--domain --no-ssl --dry-run" -- "\${cur}") )
|
|
102
|
-
return 0
|
|
103
|
-
;;
|
|
104
|
-
secure)
|
|
105
|
-
COMPREPLY=( $(compgen -W "--port --dry-run --force" -- "\${cur}") )
|
|
106
|
-
return 0
|
|
107
|
-
;;
|
|
108
|
-
backup)
|
|
109
|
-
COMPREPLY=( $(compgen -W "--dry-run --all --force" -- "\${cur}") )
|
|
110
|
-
return 0
|
|
111
|
-
;;
|
|
112
|
-
restore)
|
|
113
|
-
COMPREPLY=( $(compgen -W "--backup --dry-run --force" -- "\${cur}") )
|
|
114
|
-
return 0
|
|
115
|
-
;;
|
|
116
|
-
add)
|
|
117
|
-
COMPREPLY=( $(compgen -W "--provider --ip --name --skip-verify --mode" -- "\${cur}") )
|
|
118
|
-
return 0
|
|
119
|
-
;;
|
|
120
|
-
remove)
|
|
121
|
-
COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
|
|
122
|
-
return 0
|
|
123
|
-
;;
|
|
124
|
-
maintain)
|
|
125
|
-
COMPREPLY=( $(compgen -W "--skip-reboot --all --dry-run --force" -- "\${cur}") )
|
|
126
|
-
return 0
|
|
127
|
-
;;
|
|
128
|
-
snapshot)
|
|
129
|
-
COMPREPLY=( $(compgen -W "--all --dry-run --force" -- "\${cur}") )
|
|
130
|
-
return 0
|
|
131
|
-
;;
|
|
132
|
-
guard)
|
|
133
|
-
COMPREPLY=( $(compgen -W "--force" -- "\${cur}") )
|
|
134
|
-
return 0
|
|
135
|
-
;;
|
|
136
|
-
lock)
|
|
137
|
-
COMPREPLY=( $(compgen -W "--production --dry-run --force" -- "\${cur}") )
|
|
138
|
-
return 0
|
|
139
|
-
;;
|
|
140
|
-
audit)
|
|
141
|
-
COMPREPLY=( $(compgen -W "--json --badge --report --summary --score-only --fix --dry-run --watch --host --threshold --category --snapshot --snapshots --diff --compare --trend --days" -- "\${cur}") )
|
|
142
|
-
return 0
|
|
143
|
-
;;
|
|
144
|
-
evidence)
|
|
145
|
-
COMPREPLY=( $(compgen -W "--name --output --lines --no-docker --no-sysinfo --quiet --force --json" -- "\${cur}") )
|
|
146
|
-
return 0
|
|
147
|
-
;;
|
|
148
|
-
fleet)
|
|
149
|
-
COMPREPLY=( $(compgen -W "--json --sort" -- "\${cur}") )
|
|
150
|
-
return 0
|
|
151
|
-
;;
|
|
152
|
-
notify)
|
|
153
|
-
COMPREPLY=( $(compgen -W "--bot-token --chat-id --webhook-url --force" -- "\${cur}") )
|
|
154
|
-
return 0
|
|
155
|
-
;;
|
|
156
|
-
esac
|
|
157
|
-
fi
|
|
158
|
-
|
|
159
|
-
# Top-level command completions
|
|
160
|
-
if [[ \${COMP_CWORD} -eq 1 ]]; then
|
|
161
|
-
COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
|
|
162
|
-
return 0
|
|
163
|
-
fi
|
|
164
|
-
}
|
|
165
|
-
|
|
7
|
+
return `# Generated by kastell -- bash completion script
|
|
8
|
+
# Add to ~/.bashrc or save to ~/.local/share/bash-completion/completions/kastell
|
|
9
|
+
|
|
10
|
+
_kastell() {
|
|
11
|
+
local cur prev commands
|
|
12
|
+
COMPREPLY=()
|
|
13
|
+
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
14
|
+
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
15
|
+
commands="init list status destroy config ssh update restart logs monitor health doctor firewall domain secure backup restore export import add remove maintain snapshot completions guard lock audit evidence fleet notify plugin"
|
|
16
|
+
|
|
17
|
+
# Subcommand completions
|
|
18
|
+
case "\${prev}" in
|
|
19
|
+
config)
|
|
20
|
+
COMPREPLY=( $(compgen -W "set get list reset validate" -- "\${cur}") )
|
|
21
|
+
return 0
|
|
22
|
+
;;
|
|
23
|
+
firewall)
|
|
24
|
+
COMPREPLY=( $(compgen -W "setup add remove status --port --protocol --dry-run" -- "\${cur}") )
|
|
25
|
+
return 0
|
|
26
|
+
;;
|
|
27
|
+
domain)
|
|
28
|
+
COMPREPLY=( $(compgen -W "add check remove list info --domain --no-ssl --dry-run" -- "\${cur}") )
|
|
29
|
+
return 0
|
|
30
|
+
;;
|
|
31
|
+
secure)
|
|
32
|
+
COMPREPLY=( $(compgen -W "setup status audit --port --dry-run --force" -- "\${cur}") )
|
|
33
|
+
return 0
|
|
34
|
+
;;
|
|
35
|
+
snapshot)
|
|
36
|
+
COMPREPLY=( $(compgen -W "create list delete --all --dry-run --force" -- "\${cur}") )
|
|
37
|
+
return 0
|
|
38
|
+
;;
|
|
39
|
+
completions)
|
|
40
|
+
COMPREPLY=( $(compgen -W "bash zsh fish" -- "\${cur}") )
|
|
41
|
+
return 0
|
|
42
|
+
;;
|
|
43
|
+
guard)
|
|
44
|
+
COMPREPLY=( $(compgen -W "start stop status" -- "\${cur}") )
|
|
45
|
+
return 0
|
|
46
|
+
;;
|
|
47
|
+
notify)
|
|
48
|
+
COMPREPLY=( $(compgen -W "add test" -- "\${cur}") )
|
|
49
|
+
return 0
|
|
50
|
+
;;
|
|
51
|
+
plugin)
|
|
52
|
+
COMPREPLY=( $(compgen -W "install remove list validate --force --ver" -- "\${cur}") )
|
|
53
|
+
return 0
|
|
54
|
+
;;
|
|
55
|
+
esac
|
|
56
|
+
|
|
57
|
+
# Per-command option completions
|
|
58
|
+
if [[ "\${cur}" == -* ]]; then
|
|
59
|
+
case "\${COMP_WORDS[1]}" in
|
|
60
|
+
init)
|
|
61
|
+
COMPREPLY=( $(compgen -W "--provider --token --token-stdin --region --size --name --full-setup --config --template --no-open --mode --dry-run" -- "\${cur}") )
|
|
62
|
+
return 0
|
|
63
|
+
;;
|
|
64
|
+
status)
|
|
65
|
+
COMPREPLY=( $(compgen -W "--all --autostart" -- "\${cur}") )
|
|
66
|
+
return 0
|
|
67
|
+
;;
|
|
68
|
+
destroy)
|
|
69
|
+
COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
|
|
70
|
+
return 0
|
|
71
|
+
;;
|
|
72
|
+
ssh)
|
|
73
|
+
COMPREPLY=( $(compgen -W "-c --command" -- "\${cur}") )
|
|
74
|
+
return 0
|
|
75
|
+
;;
|
|
76
|
+
update)
|
|
77
|
+
COMPREPLY=( $(compgen -W "--all --dry-run --force" -- "\${cur}") )
|
|
78
|
+
return 0
|
|
79
|
+
;;
|
|
80
|
+
restart)
|
|
81
|
+
COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
|
|
82
|
+
return 0
|
|
83
|
+
;;
|
|
84
|
+
logs)
|
|
85
|
+
COMPREPLY=( $(compgen -W "-n --lines -f --follow -s --service" -- "\${cur}") )
|
|
86
|
+
return 0
|
|
87
|
+
;;
|
|
88
|
+
monitor)
|
|
89
|
+
COMPREPLY=( $(compgen -W "--containers" -- "\${cur}") )
|
|
90
|
+
return 0
|
|
91
|
+
;;
|
|
92
|
+
doctor)
|
|
93
|
+
COMPREPLY=( $(compgen -W "--check-tokens --fresh --json --fix --force --dry-run" -- "\${cur}") )
|
|
94
|
+
return 0
|
|
95
|
+
;;
|
|
96
|
+
firewall)
|
|
97
|
+
COMPREPLY=( $(compgen -W "--port --protocol --dry-run --force" -- "\${cur}") )
|
|
98
|
+
return 0
|
|
99
|
+
;;
|
|
100
|
+
domain)
|
|
101
|
+
COMPREPLY=( $(compgen -W "--domain --no-ssl --dry-run" -- "\${cur}") )
|
|
102
|
+
return 0
|
|
103
|
+
;;
|
|
104
|
+
secure)
|
|
105
|
+
COMPREPLY=( $(compgen -W "--port --dry-run --force" -- "\${cur}") )
|
|
106
|
+
return 0
|
|
107
|
+
;;
|
|
108
|
+
backup)
|
|
109
|
+
COMPREPLY=( $(compgen -W "--dry-run --all --force" -- "\${cur}") )
|
|
110
|
+
return 0
|
|
111
|
+
;;
|
|
112
|
+
restore)
|
|
113
|
+
COMPREPLY=( $(compgen -W "--backup --dry-run --force" -- "\${cur}") )
|
|
114
|
+
return 0
|
|
115
|
+
;;
|
|
116
|
+
add)
|
|
117
|
+
COMPREPLY=( $(compgen -W "--provider --ip --name --skip-verify --mode" -- "\${cur}") )
|
|
118
|
+
return 0
|
|
119
|
+
;;
|
|
120
|
+
remove)
|
|
121
|
+
COMPREPLY=( $(compgen -W "--dry-run --force" -- "\${cur}") )
|
|
122
|
+
return 0
|
|
123
|
+
;;
|
|
124
|
+
maintain)
|
|
125
|
+
COMPREPLY=( $(compgen -W "--skip-reboot --all --dry-run --force" -- "\${cur}") )
|
|
126
|
+
return 0
|
|
127
|
+
;;
|
|
128
|
+
snapshot)
|
|
129
|
+
COMPREPLY=( $(compgen -W "--all --dry-run --force" -- "\${cur}") )
|
|
130
|
+
return 0
|
|
131
|
+
;;
|
|
132
|
+
guard)
|
|
133
|
+
COMPREPLY=( $(compgen -W "--force" -- "\${cur}") )
|
|
134
|
+
return 0
|
|
135
|
+
;;
|
|
136
|
+
lock)
|
|
137
|
+
COMPREPLY=( $(compgen -W "--production --dry-run --force" -- "\${cur}") )
|
|
138
|
+
return 0
|
|
139
|
+
;;
|
|
140
|
+
audit)
|
|
141
|
+
COMPREPLY=( $(compgen -W "--json --badge --report --summary --score-only --fix --dry-run --watch --host --threshold --category --snapshot --snapshots --diff --compare --trend --days" -- "\${cur}") )
|
|
142
|
+
return 0
|
|
143
|
+
;;
|
|
144
|
+
evidence)
|
|
145
|
+
COMPREPLY=( $(compgen -W "--name --output --lines --no-docker --no-sysinfo --quiet --force --json" -- "\${cur}") )
|
|
146
|
+
return 0
|
|
147
|
+
;;
|
|
148
|
+
fleet)
|
|
149
|
+
COMPREPLY=( $(compgen -W "--json --sort" -- "\${cur}") )
|
|
150
|
+
return 0
|
|
151
|
+
;;
|
|
152
|
+
notify)
|
|
153
|
+
COMPREPLY=( $(compgen -W "--bot-token --chat-id --webhook-url --force" -- "\${cur}") )
|
|
154
|
+
return 0
|
|
155
|
+
;;
|
|
156
|
+
esac
|
|
157
|
+
fi
|
|
158
|
+
|
|
159
|
+
# Top-level command completions
|
|
160
|
+
if [[ \${COMP_CWORD} -eq 1 ]]; then
|
|
161
|
+
COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
|
|
162
|
+
return 0
|
|
163
|
+
fi
|
|
164
|
+
}
|
|
165
|
+
|
|
166
166
|
complete -F _kastell kastell`;
|
|
167
167
|
}
|
|
168
168
|
export function generateZshCompletions() {
|
|
169
|
-
return `#compdef kastell
|
|
170
|
-
# Generated by kastell -- zsh completion script
|
|
171
|
-
# Save to ~/.zfunc/_kastell and add: fpath=(~/.zfunc $fpath); autoload -Uz compinit && compinit
|
|
172
|
-
|
|
173
|
-
_kastell() {
|
|
174
|
-
local -a commands
|
|
175
|
-
commands=(
|
|
176
|
-
'init:Deploy a new Coolify instance on a cloud provider'
|
|
177
|
-
'list:List all registered servers'
|
|
178
|
-
'status:Check server and Coolify status'
|
|
179
|
-
'destroy:Destroy a registered server'
|
|
180
|
-
'config:Manage default configuration'
|
|
181
|
-
'ssh:SSH into a registered server'
|
|
182
|
-
'update:Update Coolify on a registered server'
|
|
183
|
-
'restart:Restart a registered server'
|
|
184
|
-
'logs:View server logs'
|
|
185
|
-
'monitor:Show server resource usage'
|
|
186
|
-
'health:Check health of all registered servers'
|
|
187
|
-
'doctor:Check local environment and configuration'
|
|
188
|
-
'firewall:Manage server firewall'
|
|
189
|
-
'domain:Manage server domain and SSL'
|
|
190
|
-
'secure:Manage server security'
|
|
191
|
-
'backup:Backup Coolify database and config'
|
|
192
|
-
'restore:Restore Coolify from a backup'
|
|
193
|
-
'export:Export server list to JSON'
|
|
194
|
-
'import:Import servers from JSON'
|
|
195
|
-
'add:Add an existing server to management'
|
|
196
|
-
'remove:Remove a server from local config'
|
|
197
|
-
'maintain:Run full maintenance cycle'
|
|
198
|
-
'snapshot:Manage server snapshots'
|
|
199
|
-
'completions:Generate shell completion scripts'
|
|
200
|
-
'guard:Manage autonomous security monitoring daemon'
|
|
201
|
-
'lock:Harden server to production standard'
|
|
202
|
-
'audit:Run a security audit on a server'
|
|
203
|
-
'evidence:Collect forensic evidence package from a server'
|
|
204
|
-
'fleet:Show health and security posture of all registered servers'
|
|
205
|
-
'notify:Manage notification channels'
|
|
206
|
-
'plugin:Manage kastell plugins'
|
|
207
|
-
)
|
|
208
|
-
|
|
209
|
-
_arguments -C \\
|
|
210
|
-
'1:command:->command' \\
|
|
211
|
-
'*::arg:->args'
|
|
212
|
-
|
|
213
|
-
case $state in
|
|
214
|
-
command)
|
|
215
|
-
_describe 'command' commands
|
|
216
|
-
;;
|
|
217
|
-
args)
|
|
218
|
-
case $words[1] in
|
|
219
|
-
init)
|
|
220
|
-
_arguments \\
|
|
221
|
-
'--provider[Cloud provider]:provider:(hetzner digitalocean vultr linode)' \\
|
|
222
|
-
'--token[API token]:token:' \\
|
|
223
|
-
'--token-stdin[Read token from stdin]' \\
|
|
224
|
-
'--region[Server region]:region:' \\
|
|
225
|
-
'--size[Server size]:size:' \\
|
|
226
|
-
'--name[Server name]:name:' \\
|
|
227
|
-
'--full-setup[Auto-configure firewall and SSH]' \\
|
|
228
|
-
'--config[Config file path]:path:_files' \\
|
|
229
|
-
'--template[Predefined template]:template:(starter production dev)' \\
|
|
230
|
-
'--no-open[Do not open browser]' \\
|
|
231
|
-
'--mode[Server mode]:mode:(coolify dokploy bare)' \\
|
|
232
|
-
'--dry-run[Show commands without executing]'
|
|
233
|
-
;;
|
|
234
|
-
status)
|
|
235
|
-
_arguments \\
|
|
236
|
-
'--all[Check all servers]' \\
|
|
237
|
-
'--autostart[Restart Coolify if down]'
|
|
238
|
-
;;
|
|
239
|
-
destroy)
|
|
240
|
-
_arguments \\
|
|
241
|
-
'--dry-run[Show commands without executing]' \\
|
|
242
|
-
'--force[Skip confirmation prompts]'
|
|
243
|
-
;;
|
|
244
|
-
config)
|
|
245
|
-
local -a subcommands
|
|
246
|
-
subcommands=('set' 'get' 'list' 'reset' 'validate')
|
|
247
|
-
_describe 'subcommand' subcommands
|
|
248
|
-
;;
|
|
249
|
-
ssh)
|
|
250
|
-
_arguments \\
|
|
251
|
-
{-c,--command}'[Execute a single command]:command:'
|
|
252
|
-
;;
|
|
253
|
-
update)
|
|
254
|
-
_arguments \\
|
|
255
|
-
'--all[Update all servers]' \\
|
|
256
|
-
'--dry-run[Show commands without executing]' \\
|
|
257
|
-
'--force[Skip confirmation prompts]'
|
|
258
|
-
;;
|
|
259
|
-
restart)
|
|
260
|
-
_arguments \\
|
|
261
|
-
'--dry-run[Show commands without executing]' \\
|
|
262
|
-
'--force[Skip confirmation prompts]'
|
|
263
|
-
;;
|
|
264
|
-
logs)
|
|
265
|
-
_arguments \\
|
|
266
|
-
{-n,--lines}'[Number of lines]:lines:' \\
|
|
267
|
-
{-f,--follow}'[Follow log output]' \\
|
|
268
|
-
{-s,--service}'[Log service]:service:(coolify docker system)'
|
|
269
|
-
;;
|
|
270
|
-
monitor)
|
|
271
|
-
_arguments \\
|
|
272
|
-
'--containers[Show Docker container list]'
|
|
273
|
-
;;
|
|
274
|
-
doctor)
|
|
275
|
-
_arguments \\
|
|
276
|
-
'--check-tokens[Validate provider API tokens]' \\
|
|
277
|
-
'--fresh[Force fresh SSH probe, skip cache]' \\
|
|
278
|
-
'--json[Output result as JSON]' \\
|
|
279
|
-
'--fix[Interactive fix mode]' \\
|
|
280
|
-
'--force[Skip confirmation prompts]' \\
|
|
281
|
-
'--dry-run[Show fix commands without executing]'
|
|
282
|
-
;;
|
|
283
|
-
firewall)
|
|
284
|
-
local -a subcommands
|
|
285
|
-
subcommands=('setup' 'add' 'remove' 'status')
|
|
286
|
-
_describe 'subcommand' subcommands
|
|
287
|
-
_arguments \\
|
|
288
|
-
'--port[Port number]:port:' \\
|
|
289
|
-
'--protocol[Protocol]:protocol:(tcp udp)' \\
|
|
290
|
-
'--dry-run[Show commands without executing]' \\
|
|
291
|
-
'--force[Skip confirmation prompts]'
|
|
292
|
-
;;
|
|
293
|
-
domain)
|
|
294
|
-
local -a subcommands
|
|
295
|
-
subcommands=('add' 'check' 'remove' 'list' 'info')
|
|
296
|
-
_describe 'subcommand' subcommands
|
|
297
|
-
_arguments \\
|
|
298
|
-
'--domain[Domain name]:domain:' \\
|
|
299
|
-
'--no-ssl[Disable HTTPS]' \\
|
|
300
|
-
'--dry-run[Show commands without executing]'
|
|
301
|
-
;;
|
|
302
|
-
secure)
|
|
303
|
-
local -a subcommands
|
|
304
|
-
subcommands=('setup' 'status' 'audit')
|
|
305
|
-
_describe 'subcommand' subcommands
|
|
306
|
-
_arguments \\
|
|
307
|
-
'--port[SSH port]:port:' \\
|
|
308
|
-
'--dry-run[Show commands without executing]' \\
|
|
309
|
-
'--force[Skip confirmation prompts]'
|
|
310
|
-
;;
|
|
311
|
-
backup)
|
|
312
|
-
_arguments \\
|
|
313
|
-
'--dry-run[Show commands without executing]' \\
|
|
314
|
-
'--all[Backup all servers]' \\
|
|
315
|
-
'--force[Skip confirmation prompts]'
|
|
316
|
-
;;
|
|
317
|
-
restore)
|
|
318
|
-
_arguments \\
|
|
319
|
-
'--backup[Backup timestamp]:backup:' \\
|
|
320
|
-
'--dry-run[Show commands without executing]' \\
|
|
321
|
-
'--force[Skip confirmation prompts]'
|
|
322
|
-
;;
|
|
323
|
-
add)
|
|
324
|
-
_arguments \\
|
|
325
|
-
'--provider[Cloud provider]:provider:(hetzner digitalocean vultr linode)' \\
|
|
326
|
-
'--ip[Server IP address]:ip:' \\
|
|
327
|
-
'--name[Server name]:name:' \\
|
|
328
|
-
'--skip-verify[Skip verification]' \\
|
|
329
|
-
'--mode[Server mode]:mode:(coolify dokploy bare)'
|
|
330
|
-
;;
|
|
331
|
-
remove)
|
|
332
|
-
_arguments \\
|
|
333
|
-
'--dry-run[Show commands without executing]' \\
|
|
334
|
-
'--force[Skip confirmation prompts]'
|
|
335
|
-
;;
|
|
336
|
-
maintain)
|
|
337
|
-
_arguments \\
|
|
338
|
-
'--skip-reboot[Skip the reboot step]' \\
|
|
339
|
-
'--all[Maintain all servers]' \\
|
|
340
|
-
'--dry-run[Show commands without executing]' \\
|
|
341
|
-
'--force[Skip confirmation prompts]'
|
|
342
|
-
;;
|
|
343
|
-
snapshot)
|
|
344
|
-
local -a subcommands
|
|
345
|
-
subcommands=('create' 'list' 'delete')
|
|
346
|
-
_describe 'subcommand' subcommands
|
|
347
|
-
_arguments \\
|
|
348
|
-
'--all[All servers]' \\
|
|
349
|
-
'--dry-run[Show commands without executing]' \\
|
|
350
|
-
'--force[Skip confirmation]'
|
|
351
|
-
;;
|
|
352
|
-
completions)
|
|
353
|
-
_arguments '1:shell:(bash zsh fish)'
|
|
354
|
-
;;
|
|
355
|
-
guard)
|
|
356
|
-
local -a subcommands
|
|
357
|
-
subcommands=('start' 'stop' 'status')
|
|
358
|
-
_describe 'subcommand' subcommands
|
|
359
|
-
_arguments \\
|
|
360
|
-
'--force[Skip confirmation prompts]'
|
|
361
|
-
;;
|
|
362
|
-
lock)
|
|
363
|
-
_arguments \\
|
|
364
|
-
'--production[Apply full production hardening profile]' \\
|
|
365
|
-
'--dry-run[Show commands without executing]' \\
|
|
366
|
-
'--force[Skip confirmation prompts]'
|
|
367
|
-
;;
|
|
368
|
-
audit)
|
|
369
|
-
_arguments \\
|
|
370
|
-
'--json[Output results as JSON]' \\
|
|
371
|
-
'--badge[Output SVG badge with score]' \\
|
|
372
|
-
'--report[Generate report]:format:(html md)' \\
|
|
373
|
-
'--summary[Show compact dashboard summary]' \\
|
|
374
|
-
'--score-only[Output only the score]' \\
|
|
375
|
-
'--fix[Interactive fix mode]' \\
|
|
376
|
-
'--dry-run[Show fix commands without executing]' \\
|
|
377
|
-
'--watch[Watch mode]:interval:' \\
|
|
378
|
-
'--host[Audit unregistered server]:user@ip:' \\
|
|
379
|
-
'--threshold[Exit code 1 if score below]:score:' \\
|
|
380
|
-
'--category[Comma-separated categories]:list:' \\
|
|
381
|
-
'--snapshot[Save audit as snapshot]:name:' \\
|
|
382
|
-
'--snapshots[List saved snapshots]' \\
|
|
383
|
-
'--diff[Compare two snapshots]:before:after:' \\
|
|
384
|
-
'--compare[Compare two servers]:server1:server2:' \\
|
|
385
|
-
'--trend[Show score trend over time]' \\
|
|
386
|
-
'--days[Limit trend to N days]:n:'
|
|
387
|
-
;;
|
|
388
|
-
evidence)
|
|
389
|
-
_arguments \\
|
|
390
|
-
'--name[Label for evidence directory]:label:' \\
|
|
391
|
-
'--output[Override output directory]:dir:_files' \\
|
|
392
|
-
'--lines[Log lines to collect]:n:' \\
|
|
393
|
-
'--no-docker[Skip Docker data collection]' \\
|
|
394
|
-
'--no-sysinfo[Skip system info collection]' \\
|
|
395
|
-
'--quiet[Suppress spinner output]' \\
|
|
396
|
-
'--force[Overwrite existing evidence]' \\
|
|
397
|
-
'--json[Print manifest JSON to stdout]'
|
|
398
|
-
;;
|
|
399
|
-
fleet)
|
|
400
|
-
_arguments \\
|
|
401
|
-
'--json[Output machine-readable JSON]' \\
|
|
402
|
-
'--sort[Sort by field]:field:(score name provider)'
|
|
403
|
-
;;
|
|
404
|
-
notify)
|
|
405
|
-
local -a subcommands
|
|
406
|
-
subcommands=('add' 'test')
|
|
407
|
-
_describe 'subcommand' subcommands
|
|
408
|
-
_arguments \\
|
|
409
|
-
'--bot-token[Telegram bot token]:token:' \\
|
|
410
|
-
'--chat-id[Telegram chat ID]:id:' \\
|
|
411
|
-
'--webhook-url[Discord or Slack webhook URL]:url:' \\
|
|
412
|
-
'--force[Skip interactive prompts]'
|
|
413
|
-
;;
|
|
414
|
-
plugin)
|
|
415
|
-
local -a subcommands
|
|
416
|
-
subcommands=('install:Install a plugin from npm registry' 'remove:Remove an installed plugin' 'list:List installed plugins' 'validate:Validate plugin manifest and entry point')
|
|
417
|
-
_describe 'subcommand' subcommands
|
|
418
|
-
_arguments \\
|
|
419
|
-
'--ver[Specific version to install]:version:' \\
|
|
420
|
-
'--force[Skip confirmation prompt]'
|
|
421
|
-
;;
|
|
422
|
-
esac
|
|
423
|
-
;;
|
|
424
|
-
esac
|
|
425
|
-
}
|
|
426
|
-
|
|
169
|
+
return `#compdef kastell
|
|
170
|
+
# Generated by kastell -- zsh completion script
|
|
171
|
+
# Save to ~/.zfunc/_kastell and add: fpath=(~/.zfunc $fpath); autoload -Uz compinit && compinit
|
|
172
|
+
|
|
173
|
+
_kastell() {
|
|
174
|
+
local -a commands
|
|
175
|
+
commands=(
|
|
176
|
+
'init:Deploy a new Coolify instance on a cloud provider'
|
|
177
|
+
'list:List all registered servers'
|
|
178
|
+
'status:Check server and Coolify status'
|
|
179
|
+
'destroy:Destroy a registered server'
|
|
180
|
+
'config:Manage default configuration'
|
|
181
|
+
'ssh:SSH into a registered server'
|
|
182
|
+
'update:Update Coolify on a registered server'
|
|
183
|
+
'restart:Restart a registered server'
|
|
184
|
+
'logs:View server logs'
|
|
185
|
+
'monitor:Show server resource usage'
|
|
186
|
+
'health:Check health of all registered servers'
|
|
187
|
+
'doctor:Check local environment and configuration'
|
|
188
|
+
'firewall:Manage server firewall'
|
|
189
|
+
'domain:Manage server domain and SSL'
|
|
190
|
+
'secure:Manage server security'
|
|
191
|
+
'backup:Backup Coolify database and config'
|
|
192
|
+
'restore:Restore Coolify from a backup'
|
|
193
|
+
'export:Export server list to JSON'
|
|
194
|
+
'import:Import servers from JSON'
|
|
195
|
+
'add:Add an existing server to management'
|
|
196
|
+
'remove:Remove a server from local config'
|
|
197
|
+
'maintain:Run full maintenance cycle'
|
|
198
|
+
'snapshot:Manage server snapshots'
|
|
199
|
+
'completions:Generate shell completion scripts'
|
|
200
|
+
'guard:Manage autonomous security monitoring daemon'
|
|
201
|
+
'lock:Harden server to production standard'
|
|
202
|
+
'audit:Run a security audit on a server'
|
|
203
|
+
'evidence:Collect forensic evidence package from a server'
|
|
204
|
+
'fleet:Show health and security posture of all registered servers'
|
|
205
|
+
'notify:Manage notification channels'
|
|
206
|
+
'plugin:Manage kastell plugins'
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
_arguments -C \\
|
|
210
|
+
'1:command:->command' \\
|
|
211
|
+
'*::arg:->args'
|
|
212
|
+
|
|
213
|
+
case $state in
|
|
214
|
+
command)
|
|
215
|
+
_describe 'command' commands
|
|
216
|
+
;;
|
|
217
|
+
args)
|
|
218
|
+
case $words[1] in
|
|
219
|
+
init)
|
|
220
|
+
_arguments \\
|
|
221
|
+
'--provider[Cloud provider]:provider:(hetzner digitalocean vultr linode)' \\
|
|
222
|
+
'--token[API token]:token:' \\
|
|
223
|
+
'--token-stdin[Read token from stdin]' \\
|
|
224
|
+
'--region[Server region]:region:' \\
|
|
225
|
+
'--size[Server size]:size:' \\
|
|
226
|
+
'--name[Server name]:name:' \\
|
|
227
|
+
'--full-setup[Auto-configure firewall and SSH]' \\
|
|
228
|
+
'--config[Config file path]:path:_files' \\
|
|
229
|
+
'--template[Predefined template]:template:(starter production dev)' \\
|
|
230
|
+
'--no-open[Do not open browser]' \\
|
|
231
|
+
'--mode[Server mode]:mode:(coolify dokploy bare)' \\
|
|
232
|
+
'--dry-run[Show commands without executing]'
|
|
233
|
+
;;
|
|
234
|
+
status)
|
|
235
|
+
_arguments \\
|
|
236
|
+
'--all[Check all servers]' \\
|
|
237
|
+
'--autostart[Restart Coolify if down]'
|
|
238
|
+
;;
|
|
239
|
+
destroy)
|
|
240
|
+
_arguments \\
|
|
241
|
+
'--dry-run[Show commands without executing]' \\
|
|
242
|
+
'--force[Skip confirmation prompts]'
|
|
243
|
+
;;
|
|
244
|
+
config)
|
|
245
|
+
local -a subcommands
|
|
246
|
+
subcommands=('set' 'get' 'list' 'reset' 'validate')
|
|
247
|
+
_describe 'subcommand' subcommands
|
|
248
|
+
;;
|
|
249
|
+
ssh)
|
|
250
|
+
_arguments \\
|
|
251
|
+
{-c,--command}'[Execute a single command]:command:'
|
|
252
|
+
;;
|
|
253
|
+
update)
|
|
254
|
+
_arguments \\
|
|
255
|
+
'--all[Update all servers]' \\
|
|
256
|
+
'--dry-run[Show commands without executing]' \\
|
|
257
|
+
'--force[Skip confirmation prompts]'
|
|
258
|
+
;;
|
|
259
|
+
restart)
|
|
260
|
+
_arguments \\
|
|
261
|
+
'--dry-run[Show commands without executing]' \\
|
|
262
|
+
'--force[Skip confirmation prompts]'
|
|
263
|
+
;;
|
|
264
|
+
logs)
|
|
265
|
+
_arguments \\
|
|
266
|
+
{-n,--lines}'[Number of lines]:lines:' \\
|
|
267
|
+
{-f,--follow}'[Follow log output]' \\
|
|
268
|
+
{-s,--service}'[Log service]:service:(coolify docker system)'
|
|
269
|
+
;;
|
|
270
|
+
monitor)
|
|
271
|
+
_arguments \\
|
|
272
|
+
'--containers[Show Docker container list]'
|
|
273
|
+
;;
|
|
274
|
+
doctor)
|
|
275
|
+
_arguments \\
|
|
276
|
+
'--check-tokens[Validate provider API tokens]' \\
|
|
277
|
+
'--fresh[Force fresh SSH probe, skip cache]' \\
|
|
278
|
+
'--json[Output result as JSON]' \\
|
|
279
|
+
'--fix[Interactive fix mode]' \\
|
|
280
|
+
'--force[Skip confirmation prompts]' \\
|
|
281
|
+
'--dry-run[Show fix commands without executing]'
|
|
282
|
+
;;
|
|
283
|
+
firewall)
|
|
284
|
+
local -a subcommands
|
|
285
|
+
subcommands=('setup' 'add' 'remove' 'status')
|
|
286
|
+
_describe 'subcommand' subcommands
|
|
287
|
+
_arguments \\
|
|
288
|
+
'--port[Port number]:port:' \\
|
|
289
|
+
'--protocol[Protocol]:protocol:(tcp udp)' \\
|
|
290
|
+
'--dry-run[Show commands without executing]' \\
|
|
291
|
+
'--force[Skip confirmation prompts]'
|
|
292
|
+
;;
|
|
293
|
+
domain)
|
|
294
|
+
local -a subcommands
|
|
295
|
+
subcommands=('add' 'check' 'remove' 'list' 'info')
|
|
296
|
+
_describe 'subcommand' subcommands
|
|
297
|
+
_arguments \\
|
|
298
|
+
'--domain[Domain name]:domain:' \\
|
|
299
|
+
'--no-ssl[Disable HTTPS]' \\
|
|
300
|
+
'--dry-run[Show commands without executing]'
|
|
301
|
+
;;
|
|
302
|
+
secure)
|
|
303
|
+
local -a subcommands
|
|
304
|
+
subcommands=('setup' 'status' 'audit')
|
|
305
|
+
_describe 'subcommand' subcommands
|
|
306
|
+
_arguments \\
|
|
307
|
+
'--port[SSH port]:port:' \\
|
|
308
|
+
'--dry-run[Show commands without executing]' \\
|
|
309
|
+
'--force[Skip confirmation prompts]'
|
|
310
|
+
;;
|
|
311
|
+
backup)
|
|
312
|
+
_arguments \\
|
|
313
|
+
'--dry-run[Show commands without executing]' \\
|
|
314
|
+
'--all[Backup all servers]' \\
|
|
315
|
+
'--force[Skip confirmation prompts]'
|
|
316
|
+
;;
|
|
317
|
+
restore)
|
|
318
|
+
_arguments \\
|
|
319
|
+
'--backup[Backup timestamp]:backup:' \\
|
|
320
|
+
'--dry-run[Show commands without executing]' \\
|
|
321
|
+
'--force[Skip confirmation prompts]'
|
|
322
|
+
;;
|
|
323
|
+
add)
|
|
324
|
+
_arguments \\
|
|
325
|
+
'--provider[Cloud provider]:provider:(hetzner digitalocean vultr linode)' \\
|
|
326
|
+
'--ip[Server IP address]:ip:' \\
|
|
327
|
+
'--name[Server name]:name:' \\
|
|
328
|
+
'--skip-verify[Skip verification]' \\
|
|
329
|
+
'--mode[Server mode]:mode:(coolify dokploy bare)'
|
|
330
|
+
;;
|
|
331
|
+
remove)
|
|
332
|
+
_arguments \\
|
|
333
|
+
'--dry-run[Show commands without executing]' \\
|
|
334
|
+
'--force[Skip confirmation prompts]'
|
|
335
|
+
;;
|
|
336
|
+
maintain)
|
|
337
|
+
_arguments \\
|
|
338
|
+
'--skip-reboot[Skip the reboot step]' \\
|
|
339
|
+
'--all[Maintain all servers]' \\
|
|
340
|
+
'--dry-run[Show commands without executing]' \\
|
|
341
|
+
'--force[Skip confirmation prompts]'
|
|
342
|
+
;;
|
|
343
|
+
snapshot)
|
|
344
|
+
local -a subcommands
|
|
345
|
+
subcommands=('create' 'list' 'delete')
|
|
346
|
+
_describe 'subcommand' subcommands
|
|
347
|
+
_arguments \\
|
|
348
|
+
'--all[All servers]' \\
|
|
349
|
+
'--dry-run[Show commands without executing]' \\
|
|
350
|
+
'--force[Skip confirmation]'
|
|
351
|
+
;;
|
|
352
|
+
completions)
|
|
353
|
+
_arguments '1:shell:(bash zsh fish)'
|
|
354
|
+
;;
|
|
355
|
+
guard)
|
|
356
|
+
local -a subcommands
|
|
357
|
+
subcommands=('start' 'stop' 'status')
|
|
358
|
+
_describe 'subcommand' subcommands
|
|
359
|
+
_arguments \\
|
|
360
|
+
'--force[Skip confirmation prompts]'
|
|
361
|
+
;;
|
|
362
|
+
lock)
|
|
363
|
+
_arguments \\
|
|
364
|
+
'--production[Apply full production hardening profile]' \\
|
|
365
|
+
'--dry-run[Show commands without executing]' \\
|
|
366
|
+
'--force[Skip confirmation prompts]'
|
|
367
|
+
;;
|
|
368
|
+
audit)
|
|
369
|
+
_arguments \\
|
|
370
|
+
'--json[Output results as JSON]' \\
|
|
371
|
+
'--badge[Output SVG badge with score]' \\
|
|
372
|
+
'--report[Generate report]:format:(html md)' \\
|
|
373
|
+
'--summary[Show compact dashboard summary]' \\
|
|
374
|
+
'--score-only[Output only the score]' \\
|
|
375
|
+
'--fix[Interactive fix mode]' \\
|
|
376
|
+
'--dry-run[Show fix commands without executing]' \\
|
|
377
|
+
'--watch[Watch mode]:interval:' \\
|
|
378
|
+
'--host[Audit unregistered server]:user@ip:' \\
|
|
379
|
+
'--threshold[Exit code 1 if score below]:score:' \\
|
|
380
|
+
'--category[Comma-separated categories]:list:' \\
|
|
381
|
+
'--snapshot[Save audit as snapshot]:name:' \\
|
|
382
|
+
'--snapshots[List saved snapshots]' \\
|
|
383
|
+
'--diff[Compare two snapshots]:before:after:' \\
|
|
384
|
+
'--compare[Compare two servers]:server1:server2:' \\
|
|
385
|
+
'--trend[Show score trend over time]' \\
|
|
386
|
+
'--days[Limit trend to N days]:n:'
|
|
387
|
+
;;
|
|
388
|
+
evidence)
|
|
389
|
+
_arguments \\
|
|
390
|
+
'--name[Label for evidence directory]:label:' \\
|
|
391
|
+
'--output[Override output directory]:dir:_files' \\
|
|
392
|
+
'--lines[Log lines to collect]:n:' \\
|
|
393
|
+
'--no-docker[Skip Docker data collection]' \\
|
|
394
|
+
'--no-sysinfo[Skip system info collection]' \\
|
|
395
|
+
'--quiet[Suppress spinner output]' \\
|
|
396
|
+
'--force[Overwrite existing evidence]' \\
|
|
397
|
+
'--json[Print manifest JSON to stdout]'
|
|
398
|
+
;;
|
|
399
|
+
fleet)
|
|
400
|
+
_arguments \\
|
|
401
|
+
'--json[Output machine-readable JSON]' \\
|
|
402
|
+
'--sort[Sort by field]:field:(score name provider)'
|
|
403
|
+
;;
|
|
404
|
+
notify)
|
|
405
|
+
local -a subcommands
|
|
406
|
+
subcommands=('add' 'test')
|
|
407
|
+
_describe 'subcommand' subcommands
|
|
408
|
+
_arguments \\
|
|
409
|
+
'--bot-token[Telegram bot token]:token:' \\
|
|
410
|
+
'--chat-id[Telegram chat ID]:id:' \\
|
|
411
|
+
'--webhook-url[Discord or Slack webhook URL]:url:' \\
|
|
412
|
+
'--force[Skip interactive prompts]'
|
|
413
|
+
;;
|
|
414
|
+
plugin)
|
|
415
|
+
local -a subcommands
|
|
416
|
+
subcommands=('install:Install a plugin from npm registry' 'remove:Remove an installed plugin' 'list:List installed plugins' 'validate:Validate plugin manifest and entry point')
|
|
417
|
+
_describe 'subcommand' subcommands
|
|
418
|
+
_arguments \\
|
|
419
|
+
'--ver[Specific version to install]:version:' \\
|
|
420
|
+
'--force[Skip confirmation prompt]'
|
|
421
|
+
;;
|
|
422
|
+
esac
|
|
423
|
+
;;
|
|
424
|
+
esac
|
|
425
|
+
}
|
|
426
|
+
|
|
427
427
|
_kastell`;
|
|
428
428
|
}
|
|
429
429
|
export function generateFishCompletions() {
|
|
430
|
-
return `# Generated by kastell -- fish completion script
|
|
431
|
-
# Save to ~/.config/fish/completions/kastell.fish
|
|
432
|
-
|
|
433
|
-
# Disable file completions by default
|
|
434
|
-
complete -c kastell -f
|
|
435
|
-
|
|
436
|
-
# Helper function: no subcommand entered yet
|
|
437
|
-
function __kastell_no_subcommand
|
|
438
|
-
set -l cmd (commandline -opc)
|
|
439
|
-
test (count $cmd) -eq 1
|
|
440
|
-
end
|
|
441
|
-
|
|
442
|
-
# Helper function: check current subcommand
|
|
443
|
-
function __kastell_using_subcommand
|
|
444
|
-
set -l cmd (commandline -opc)
|
|
445
|
-
test (count $cmd) -ge 2; and test $cmd[2] = $argv[1]
|
|
446
|
-
end
|
|
447
|
-
|
|
448
|
-
# Top-level commands
|
|
449
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'init' -d 'Deploy a new Coolify instance'
|
|
450
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'list' -d 'List all registered servers'
|
|
451
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'status' -d 'Check server and Coolify status'
|
|
452
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'destroy' -d 'Destroy a registered server'
|
|
453
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'config' -d 'Manage default configuration'
|
|
454
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'ssh' -d 'SSH into a registered server'
|
|
455
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'update' -d 'Update Coolify on a server'
|
|
456
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'restart' -d 'Restart a registered server'
|
|
457
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'logs' -d 'View server logs'
|
|
458
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'monitor' -d 'Show server resource usage'
|
|
459
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'health' -d 'Check health of servers'
|
|
460
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'doctor' -d 'Check local environment'
|
|
461
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'firewall' -d 'Manage server firewall'
|
|
462
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'domain' -d 'Manage server domain and SSL'
|
|
463
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'secure' -d 'Manage server security'
|
|
464
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'backup' -d 'Backup Coolify database'
|
|
465
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'restore' -d 'Restore from a backup'
|
|
466
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'export' -d 'Export server list to JSON'
|
|
467
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'import' -d 'Import servers from JSON'
|
|
468
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'add' -d 'Add an existing server'
|
|
469
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'remove' -d 'Remove a server from config'
|
|
470
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'maintain' -d 'Run full maintenance cycle'
|
|
471
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'snapshot' -d 'Manage server snapshots'
|
|
472
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'completions' -d 'Generate shell completions'
|
|
473
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'guard' -d 'Manage guard daemon'
|
|
474
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'lock' -d 'Harden server to production standard'
|
|
475
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'audit' -d 'Run a security audit'
|
|
476
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'evidence' -d 'Collect forensic evidence'
|
|
477
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'fleet' -d 'Show fleet health and security'
|
|
478
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'notify' -d 'Manage notification channels'
|
|
479
|
-
complete -c kastell -n '__kastell_no_subcommand' -a 'plugin' -d 'Manage kastell plugins'
|
|
480
|
-
|
|
481
|
-
# init options
|
|
482
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l provider -d 'Cloud provider'
|
|
483
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l token -d 'API token'
|
|
484
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l token-stdin -d 'Read token from stdin'
|
|
485
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l region -d 'Server region'
|
|
486
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l size -d 'Server size'
|
|
487
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l name -d 'Server name'
|
|
488
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l full-setup -d 'Auto-configure firewall and SSH'
|
|
489
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l config -d 'Config file path'
|
|
490
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l template -d 'Predefined template'
|
|
491
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l no-open -d 'Do not open browser'
|
|
492
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l mode -d 'Server mode'
|
|
493
|
-
complete -c kastell -n '__kastell_using_subcommand init' -l dry-run -d 'Show commands without executing'
|
|
494
|
-
|
|
495
|
-
# status options
|
|
496
|
-
complete -c kastell -n '__kastell_using_subcommand status' -l all -d 'Check all servers'
|
|
497
|
-
complete -c kastell -n '__kastell_using_subcommand status' -l autostart -d 'Restart Coolify if down'
|
|
498
|
-
|
|
499
|
-
# destroy options
|
|
500
|
-
complete -c kastell -n '__kastell_using_subcommand destroy' -l dry-run -d 'Show commands without executing'
|
|
501
|
-
complete -c kastell -n '__kastell_using_subcommand destroy' -l force -d 'Skip confirmation prompts'
|
|
502
|
-
|
|
503
|
-
# config subcommands
|
|
504
|
-
complete -c kastell -n '__kastell_using_subcommand config' -a 'set get list reset validate'
|
|
505
|
-
|
|
506
|
-
# ssh options
|
|
507
|
-
complete -c kastell -n '__kastell_using_subcommand ssh' -s c -l command -d 'Execute a single command'
|
|
508
|
-
|
|
509
|
-
# update options
|
|
510
|
-
complete -c kastell -n '__kastell_using_subcommand update' -l all -d 'Update all servers'
|
|
511
|
-
complete -c kastell -n '__kastell_using_subcommand update' -l dry-run -d 'Show commands without executing'
|
|
512
|
-
complete -c kastell -n '__kastell_using_subcommand update' -l force -d 'Skip confirmation prompts'
|
|
513
|
-
|
|
514
|
-
# restart options
|
|
515
|
-
complete -c kastell -n '__kastell_using_subcommand restart' -l dry-run -d 'Show commands without executing'
|
|
516
|
-
complete -c kastell -n '__kastell_using_subcommand restart' -l force -d 'Skip confirmation prompts'
|
|
517
|
-
|
|
518
|
-
# logs options
|
|
519
|
-
complete -c kastell -n '__kastell_using_subcommand logs' -s n -l lines -d 'Number of log lines'
|
|
520
|
-
complete -c kastell -n '__kastell_using_subcommand logs' -s f -l follow -d 'Follow log output'
|
|
521
|
-
complete -c kastell -n '__kastell_using_subcommand logs' -s s -l service -d 'Log service'
|
|
522
|
-
|
|
523
|
-
# monitor options
|
|
524
|
-
complete -c kastell -n '__kastell_using_subcommand monitor' -l containers -d 'Show Docker containers'
|
|
525
|
-
|
|
526
|
-
# doctor options
|
|
527
|
-
complete -c kastell -n '__kastell_using_subcommand doctor' -l check-tokens -d 'Validate API tokens'
|
|
528
|
-
complete -c kastell -n '__kastell_using_subcommand doctor' -l fresh -d 'Force fresh SSH probe, skip cache'
|
|
529
|
-
complete -c kastell -n '__kastell_using_subcommand doctor' -l json -d 'Output result as JSON'
|
|
530
|
-
complete -c kastell -n '__kastell_using_subcommand doctor' -l fix -d 'Interactive fix mode'
|
|
531
|
-
complete -c kastell -n '__kastell_using_subcommand doctor' -l force -d 'Skip confirmation prompts'
|
|
532
|
-
complete -c kastell -n '__kastell_using_subcommand doctor' -l dry-run -d 'Show fix commands without executing'
|
|
533
|
-
|
|
534
|
-
# firewall subcommands and options
|
|
535
|
-
complete -c kastell -n '__kastell_using_subcommand firewall' -a 'setup add remove status'
|
|
536
|
-
complete -c kastell -n '__kastell_using_subcommand firewall' -l port -d 'Port number'
|
|
537
|
-
complete -c kastell -n '__kastell_using_subcommand firewall' -l protocol -d 'Protocol (tcp/udp)'
|
|
538
|
-
complete -c kastell -n '__kastell_using_subcommand firewall' -l dry-run -d 'Show commands without executing'
|
|
539
|
-
complete -c kastell -n '__kastell_using_subcommand firewall' -l force -d 'Skip confirmation prompts'
|
|
540
|
-
|
|
541
|
-
# domain subcommands and options
|
|
542
|
-
complete -c kastell -n '__kastell_using_subcommand domain' -a 'add check remove list info'
|
|
543
|
-
complete -c kastell -n '__kastell_using_subcommand domain' -l domain -d 'Domain name'
|
|
544
|
-
complete -c kastell -n '__kastell_using_subcommand domain' -l no-ssl -d 'Disable HTTPS'
|
|
545
|
-
complete -c kastell -n '__kastell_using_subcommand domain' -l dry-run -d 'Show commands without executing'
|
|
546
|
-
|
|
547
|
-
# secure subcommands and options
|
|
548
|
-
complete -c kastell -n '__kastell_using_subcommand secure' -a 'setup status audit'
|
|
549
|
-
complete -c kastell -n '__kastell_using_subcommand secure' -l port -d 'SSH port'
|
|
550
|
-
complete -c kastell -n '__kastell_using_subcommand secure' -l dry-run -d 'Show commands without executing'
|
|
551
|
-
complete -c kastell -n '__kastell_using_subcommand secure' -l force -d 'Skip confirmation prompts'
|
|
552
|
-
|
|
553
|
-
# backup options
|
|
554
|
-
complete -c kastell -n '__kastell_using_subcommand backup' -l dry-run -d 'Show commands without executing'
|
|
555
|
-
complete -c kastell -n '__kastell_using_subcommand backup' -l all -d 'Backup all servers'
|
|
556
|
-
complete -c kastell -n '__kastell_using_subcommand backup' -l force -d 'Skip confirmation prompts'
|
|
557
|
-
|
|
558
|
-
# restore options
|
|
559
|
-
complete -c kastell -n '__kastell_using_subcommand restore' -l backup -d 'Backup timestamp'
|
|
560
|
-
complete -c kastell -n '__kastell_using_subcommand restore' -l dry-run -d 'Show commands without executing'
|
|
561
|
-
complete -c kastell -n '__kastell_using_subcommand restore' -l force -d 'Skip confirmation prompts'
|
|
562
|
-
|
|
563
|
-
# add options
|
|
564
|
-
complete -c kastell -n '__kastell_using_subcommand add' -l provider -d 'Cloud provider'
|
|
565
|
-
complete -c kastell -n '__kastell_using_subcommand add' -l ip -d 'Server IP address'
|
|
566
|
-
complete -c kastell -n '__kastell_using_subcommand add' -l name -d 'Server name'
|
|
567
|
-
complete -c kastell -n '__kastell_using_subcommand add' -l skip-verify -d 'Skip verification'
|
|
568
|
-
complete -c kastell -n '__kastell_using_subcommand add' -l mode -d 'Server mode'
|
|
569
|
-
|
|
570
|
-
# remove options
|
|
571
|
-
complete -c kastell -n '__kastell_using_subcommand remove' -l dry-run -d 'Show commands without executing'
|
|
572
|
-
complete -c kastell -n '__kastell_using_subcommand remove' -l force -d 'Skip confirmation prompts'
|
|
573
|
-
|
|
574
|
-
# maintain options
|
|
575
|
-
complete -c kastell -n '__kastell_using_subcommand maintain' -l skip-reboot -d 'Skip reboot step'
|
|
576
|
-
complete -c kastell -n '__kastell_using_subcommand maintain' -l all -d 'Maintain all servers'
|
|
577
|
-
complete -c kastell -n '__kastell_using_subcommand maintain' -l dry-run -d 'Show commands without executing'
|
|
578
|
-
complete -c kastell -n '__kastell_using_subcommand maintain' -l force -d 'Skip confirmation prompts'
|
|
579
|
-
|
|
580
|
-
# snapshot subcommands and options
|
|
581
|
-
complete -c kastell -n '__kastell_using_subcommand snapshot' -a 'create list delete'
|
|
582
|
-
complete -c kastell -n '__kastell_using_subcommand snapshot' -l all -d 'All servers'
|
|
583
|
-
complete -c kastell -n '__kastell_using_subcommand snapshot' -l dry-run -d 'Show commands without executing'
|
|
584
|
-
complete -c kastell -n '__kastell_using_subcommand snapshot' -l force -d 'Skip confirmation'
|
|
585
|
-
|
|
586
|
-
# completions subarguments
|
|
587
|
-
complete -c kastell -n '__kastell_using_subcommand completions' -a 'bash zsh fish'
|
|
588
|
-
|
|
589
|
-
# guard subcommands and options
|
|
590
|
-
complete -c kastell -n '__kastell_using_subcommand guard' -a 'start stop status'
|
|
591
|
-
complete -c kastell -n '__kastell_using_subcommand guard' -l force -d 'Skip confirmation prompts'
|
|
592
|
-
|
|
593
|
-
# lock options
|
|
594
|
-
complete -c kastell -n '__kastell_using_subcommand lock' -l production -d 'Apply full production hardening profile'
|
|
595
|
-
complete -c kastell -n '__kastell_using_subcommand lock' -l dry-run -d 'Show commands without executing'
|
|
596
|
-
complete -c kastell -n '__kastell_using_subcommand lock' -l force -d 'Skip confirmation prompts'
|
|
597
|
-
|
|
598
|
-
# audit options
|
|
599
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l json -d 'Output results as JSON'
|
|
600
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l badge -d 'Output SVG badge with score'
|
|
601
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l report -d 'Generate report (html or md)'
|
|
602
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l summary -d 'Compact dashboard summary'
|
|
603
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l score-only -d 'Output only the score'
|
|
604
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l fix -d 'Interactive fix mode'
|
|
605
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l dry-run -d 'Show fix commands without executing'
|
|
606
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l watch -d 'Watch mode'
|
|
607
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l host -d 'Audit unregistered server'
|
|
608
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l threshold -d 'Exit code 1 if below threshold'
|
|
609
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l category -d 'Comma-separated categories'
|
|
610
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l snapshot -d 'Save audit as snapshot'
|
|
611
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l snapshots -d 'List saved snapshots'
|
|
612
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l diff -d 'Compare two snapshots'
|
|
613
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l compare -d 'Compare two servers'
|
|
614
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l trend -d 'Show score trend over time'
|
|
615
|
-
complete -c kastell -n '__kastell_using_subcommand audit' -l days -d 'Limit trend to N days'
|
|
616
|
-
|
|
617
|
-
# evidence options
|
|
618
|
-
complete -c kastell -n '__kastell_using_subcommand evidence' -l name -d 'Label for evidence directory'
|
|
619
|
-
complete -c kastell -n '__kastell_using_subcommand evidence' -l output -d 'Override output directory'
|
|
620
|
-
complete -c kastell -n '__kastell_using_subcommand evidence' -l lines -d 'Log lines to collect'
|
|
621
|
-
complete -c kastell -n '__kastell_using_subcommand evidence' -l no-docker -d 'Skip Docker collection'
|
|
622
|
-
complete -c kastell -n '__kastell_using_subcommand evidence' -l no-sysinfo -d 'Skip system info'
|
|
623
|
-
complete -c kastell -n '__kastell_using_subcommand evidence' -l quiet -d 'Suppress spinner output'
|
|
624
|
-
complete -c kastell -n '__kastell_using_subcommand evidence' -l force -d 'Overwrite existing evidence'
|
|
625
|
-
complete -c kastell -n '__kastell_using_subcommand evidence' -l json -d 'Print manifest JSON'
|
|
626
|
-
|
|
627
|
-
# fleet options
|
|
628
|
-
complete -c kastell -n '__kastell_using_subcommand fleet' -l json -d 'Output machine-readable JSON'
|
|
629
|
-
complete -c kastell -n '__kastell_using_subcommand fleet' -l sort -d 'Sort by score/name/provider'
|
|
630
|
-
|
|
631
|
-
# notify subcommands and options
|
|
632
|
-
complete -c kastell -n '__kastell_using_subcommand notify' -a 'add test'
|
|
633
|
-
complete -c kastell -n '__kastell_using_subcommand notify' -l bot-token -d 'Telegram bot token'
|
|
634
|
-
complete -c kastell -n '__kastell_using_subcommand notify' -l chat-id -d 'Telegram chat ID'
|
|
635
|
-
complete -c kastell -n '__kastell_using_subcommand notify' -l webhook-url -d 'Discord or Slack webhook URL'
|
|
636
|
-
complete -c kastell -n '__kastell_using_subcommand notify' -l force -d 'Skip interactive prompts'
|
|
637
|
-
|
|
638
|
-
# plugin subcommands and options
|
|
639
|
-
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'install' -d 'Install a plugin from npm registry'
|
|
640
|
-
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'remove' -d 'Remove an installed plugin'
|
|
641
|
-
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'list' -d 'List installed plugins'
|
|
642
|
-
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'validate' -d 'Validate plugin manifest'
|
|
643
|
-
complete -c kastell -n '__kastell_using_subcommand plugin' -l force -d 'Skip confirmation prompt'
|
|
430
|
+
return `# Generated by kastell -- fish completion script
|
|
431
|
+
# Save to ~/.config/fish/completions/kastell.fish
|
|
432
|
+
|
|
433
|
+
# Disable file completions by default
|
|
434
|
+
complete -c kastell -f
|
|
435
|
+
|
|
436
|
+
# Helper function: no subcommand entered yet
|
|
437
|
+
function __kastell_no_subcommand
|
|
438
|
+
set -l cmd (commandline -opc)
|
|
439
|
+
test (count $cmd) -eq 1
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
# Helper function: check current subcommand
|
|
443
|
+
function __kastell_using_subcommand
|
|
444
|
+
set -l cmd (commandline -opc)
|
|
445
|
+
test (count $cmd) -ge 2; and test $cmd[2] = $argv[1]
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
# Top-level commands
|
|
449
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'init' -d 'Deploy a new Coolify instance'
|
|
450
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'list' -d 'List all registered servers'
|
|
451
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'status' -d 'Check server and Coolify status'
|
|
452
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'destroy' -d 'Destroy a registered server'
|
|
453
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'config' -d 'Manage default configuration'
|
|
454
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'ssh' -d 'SSH into a registered server'
|
|
455
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'update' -d 'Update Coolify on a server'
|
|
456
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'restart' -d 'Restart a registered server'
|
|
457
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'logs' -d 'View server logs'
|
|
458
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'monitor' -d 'Show server resource usage'
|
|
459
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'health' -d 'Check health of servers'
|
|
460
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'doctor' -d 'Check local environment'
|
|
461
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'firewall' -d 'Manage server firewall'
|
|
462
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'domain' -d 'Manage server domain and SSL'
|
|
463
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'secure' -d 'Manage server security'
|
|
464
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'backup' -d 'Backup Coolify database'
|
|
465
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'restore' -d 'Restore from a backup'
|
|
466
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'export' -d 'Export server list to JSON'
|
|
467
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'import' -d 'Import servers from JSON'
|
|
468
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'add' -d 'Add an existing server'
|
|
469
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'remove' -d 'Remove a server from config'
|
|
470
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'maintain' -d 'Run full maintenance cycle'
|
|
471
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'snapshot' -d 'Manage server snapshots'
|
|
472
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'completions' -d 'Generate shell completions'
|
|
473
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'guard' -d 'Manage guard daemon'
|
|
474
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'lock' -d 'Harden server to production standard'
|
|
475
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'audit' -d 'Run a security audit'
|
|
476
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'evidence' -d 'Collect forensic evidence'
|
|
477
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'fleet' -d 'Show fleet health and security'
|
|
478
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'notify' -d 'Manage notification channels'
|
|
479
|
+
complete -c kastell -n '__kastell_no_subcommand' -a 'plugin' -d 'Manage kastell plugins'
|
|
480
|
+
|
|
481
|
+
# init options
|
|
482
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l provider -d 'Cloud provider'
|
|
483
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l token -d 'API token'
|
|
484
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l token-stdin -d 'Read token from stdin'
|
|
485
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l region -d 'Server region'
|
|
486
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l size -d 'Server size'
|
|
487
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l name -d 'Server name'
|
|
488
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l full-setup -d 'Auto-configure firewall and SSH'
|
|
489
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l config -d 'Config file path'
|
|
490
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l template -d 'Predefined template'
|
|
491
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l no-open -d 'Do not open browser'
|
|
492
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l mode -d 'Server mode'
|
|
493
|
+
complete -c kastell -n '__kastell_using_subcommand init' -l dry-run -d 'Show commands without executing'
|
|
494
|
+
|
|
495
|
+
# status options
|
|
496
|
+
complete -c kastell -n '__kastell_using_subcommand status' -l all -d 'Check all servers'
|
|
497
|
+
complete -c kastell -n '__kastell_using_subcommand status' -l autostart -d 'Restart Coolify if down'
|
|
498
|
+
|
|
499
|
+
# destroy options
|
|
500
|
+
complete -c kastell -n '__kastell_using_subcommand destroy' -l dry-run -d 'Show commands without executing'
|
|
501
|
+
complete -c kastell -n '__kastell_using_subcommand destroy' -l force -d 'Skip confirmation prompts'
|
|
502
|
+
|
|
503
|
+
# config subcommands
|
|
504
|
+
complete -c kastell -n '__kastell_using_subcommand config' -a 'set get list reset validate'
|
|
505
|
+
|
|
506
|
+
# ssh options
|
|
507
|
+
complete -c kastell -n '__kastell_using_subcommand ssh' -s c -l command -d 'Execute a single command'
|
|
508
|
+
|
|
509
|
+
# update options
|
|
510
|
+
complete -c kastell -n '__kastell_using_subcommand update' -l all -d 'Update all servers'
|
|
511
|
+
complete -c kastell -n '__kastell_using_subcommand update' -l dry-run -d 'Show commands without executing'
|
|
512
|
+
complete -c kastell -n '__kastell_using_subcommand update' -l force -d 'Skip confirmation prompts'
|
|
513
|
+
|
|
514
|
+
# restart options
|
|
515
|
+
complete -c kastell -n '__kastell_using_subcommand restart' -l dry-run -d 'Show commands without executing'
|
|
516
|
+
complete -c kastell -n '__kastell_using_subcommand restart' -l force -d 'Skip confirmation prompts'
|
|
517
|
+
|
|
518
|
+
# logs options
|
|
519
|
+
complete -c kastell -n '__kastell_using_subcommand logs' -s n -l lines -d 'Number of log lines'
|
|
520
|
+
complete -c kastell -n '__kastell_using_subcommand logs' -s f -l follow -d 'Follow log output'
|
|
521
|
+
complete -c kastell -n '__kastell_using_subcommand logs' -s s -l service -d 'Log service'
|
|
522
|
+
|
|
523
|
+
# monitor options
|
|
524
|
+
complete -c kastell -n '__kastell_using_subcommand monitor' -l containers -d 'Show Docker containers'
|
|
525
|
+
|
|
526
|
+
# doctor options
|
|
527
|
+
complete -c kastell -n '__kastell_using_subcommand doctor' -l check-tokens -d 'Validate API tokens'
|
|
528
|
+
complete -c kastell -n '__kastell_using_subcommand doctor' -l fresh -d 'Force fresh SSH probe, skip cache'
|
|
529
|
+
complete -c kastell -n '__kastell_using_subcommand doctor' -l json -d 'Output result as JSON'
|
|
530
|
+
complete -c kastell -n '__kastell_using_subcommand doctor' -l fix -d 'Interactive fix mode'
|
|
531
|
+
complete -c kastell -n '__kastell_using_subcommand doctor' -l force -d 'Skip confirmation prompts'
|
|
532
|
+
complete -c kastell -n '__kastell_using_subcommand doctor' -l dry-run -d 'Show fix commands without executing'
|
|
533
|
+
|
|
534
|
+
# firewall subcommands and options
|
|
535
|
+
complete -c kastell -n '__kastell_using_subcommand firewall' -a 'setup add remove status'
|
|
536
|
+
complete -c kastell -n '__kastell_using_subcommand firewall' -l port -d 'Port number'
|
|
537
|
+
complete -c kastell -n '__kastell_using_subcommand firewall' -l protocol -d 'Protocol (tcp/udp)'
|
|
538
|
+
complete -c kastell -n '__kastell_using_subcommand firewall' -l dry-run -d 'Show commands without executing'
|
|
539
|
+
complete -c kastell -n '__kastell_using_subcommand firewall' -l force -d 'Skip confirmation prompts'
|
|
540
|
+
|
|
541
|
+
# domain subcommands and options
|
|
542
|
+
complete -c kastell -n '__kastell_using_subcommand domain' -a 'add check remove list info'
|
|
543
|
+
complete -c kastell -n '__kastell_using_subcommand domain' -l domain -d 'Domain name'
|
|
544
|
+
complete -c kastell -n '__kastell_using_subcommand domain' -l no-ssl -d 'Disable HTTPS'
|
|
545
|
+
complete -c kastell -n '__kastell_using_subcommand domain' -l dry-run -d 'Show commands without executing'
|
|
546
|
+
|
|
547
|
+
# secure subcommands and options
|
|
548
|
+
complete -c kastell -n '__kastell_using_subcommand secure' -a 'setup status audit'
|
|
549
|
+
complete -c kastell -n '__kastell_using_subcommand secure' -l port -d 'SSH port'
|
|
550
|
+
complete -c kastell -n '__kastell_using_subcommand secure' -l dry-run -d 'Show commands without executing'
|
|
551
|
+
complete -c kastell -n '__kastell_using_subcommand secure' -l force -d 'Skip confirmation prompts'
|
|
552
|
+
|
|
553
|
+
# backup options
|
|
554
|
+
complete -c kastell -n '__kastell_using_subcommand backup' -l dry-run -d 'Show commands without executing'
|
|
555
|
+
complete -c kastell -n '__kastell_using_subcommand backup' -l all -d 'Backup all servers'
|
|
556
|
+
complete -c kastell -n '__kastell_using_subcommand backup' -l force -d 'Skip confirmation prompts'
|
|
557
|
+
|
|
558
|
+
# restore options
|
|
559
|
+
complete -c kastell -n '__kastell_using_subcommand restore' -l backup -d 'Backup timestamp'
|
|
560
|
+
complete -c kastell -n '__kastell_using_subcommand restore' -l dry-run -d 'Show commands without executing'
|
|
561
|
+
complete -c kastell -n '__kastell_using_subcommand restore' -l force -d 'Skip confirmation prompts'
|
|
562
|
+
|
|
563
|
+
# add options
|
|
564
|
+
complete -c kastell -n '__kastell_using_subcommand add' -l provider -d 'Cloud provider'
|
|
565
|
+
complete -c kastell -n '__kastell_using_subcommand add' -l ip -d 'Server IP address'
|
|
566
|
+
complete -c kastell -n '__kastell_using_subcommand add' -l name -d 'Server name'
|
|
567
|
+
complete -c kastell -n '__kastell_using_subcommand add' -l skip-verify -d 'Skip verification'
|
|
568
|
+
complete -c kastell -n '__kastell_using_subcommand add' -l mode -d 'Server mode'
|
|
569
|
+
|
|
570
|
+
# remove options
|
|
571
|
+
complete -c kastell -n '__kastell_using_subcommand remove' -l dry-run -d 'Show commands without executing'
|
|
572
|
+
complete -c kastell -n '__kastell_using_subcommand remove' -l force -d 'Skip confirmation prompts'
|
|
573
|
+
|
|
574
|
+
# maintain options
|
|
575
|
+
complete -c kastell -n '__kastell_using_subcommand maintain' -l skip-reboot -d 'Skip reboot step'
|
|
576
|
+
complete -c kastell -n '__kastell_using_subcommand maintain' -l all -d 'Maintain all servers'
|
|
577
|
+
complete -c kastell -n '__kastell_using_subcommand maintain' -l dry-run -d 'Show commands without executing'
|
|
578
|
+
complete -c kastell -n '__kastell_using_subcommand maintain' -l force -d 'Skip confirmation prompts'
|
|
579
|
+
|
|
580
|
+
# snapshot subcommands and options
|
|
581
|
+
complete -c kastell -n '__kastell_using_subcommand snapshot' -a 'create list delete'
|
|
582
|
+
complete -c kastell -n '__kastell_using_subcommand snapshot' -l all -d 'All servers'
|
|
583
|
+
complete -c kastell -n '__kastell_using_subcommand snapshot' -l dry-run -d 'Show commands without executing'
|
|
584
|
+
complete -c kastell -n '__kastell_using_subcommand snapshot' -l force -d 'Skip confirmation'
|
|
585
|
+
|
|
586
|
+
# completions subarguments
|
|
587
|
+
complete -c kastell -n '__kastell_using_subcommand completions' -a 'bash zsh fish'
|
|
588
|
+
|
|
589
|
+
# guard subcommands and options
|
|
590
|
+
complete -c kastell -n '__kastell_using_subcommand guard' -a 'start stop status'
|
|
591
|
+
complete -c kastell -n '__kastell_using_subcommand guard' -l force -d 'Skip confirmation prompts'
|
|
592
|
+
|
|
593
|
+
# lock options
|
|
594
|
+
complete -c kastell -n '__kastell_using_subcommand lock' -l production -d 'Apply full production hardening profile'
|
|
595
|
+
complete -c kastell -n '__kastell_using_subcommand lock' -l dry-run -d 'Show commands without executing'
|
|
596
|
+
complete -c kastell -n '__kastell_using_subcommand lock' -l force -d 'Skip confirmation prompts'
|
|
597
|
+
|
|
598
|
+
# audit options
|
|
599
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l json -d 'Output results as JSON'
|
|
600
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l badge -d 'Output SVG badge with score'
|
|
601
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l report -d 'Generate report (html or md)'
|
|
602
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l summary -d 'Compact dashboard summary'
|
|
603
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l score-only -d 'Output only the score'
|
|
604
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l fix -d 'Interactive fix mode'
|
|
605
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l dry-run -d 'Show fix commands without executing'
|
|
606
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l watch -d 'Watch mode'
|
|
607
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l host -d 'Audit unregistered server'
|
|
608
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l threshold -d 'Exit code 1 if below threshold'
|
|
609
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l category -d 'Comma-separated categories'
|
|
610
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l snapshot -d 'Save audit as snapshot'
|
|
611
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l snapshots -d 'List saved snapshots'
|
|
612
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l diff -d 'Compare two snapshots'
|
|
613
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l compare -d 'Compare two servers'
|
|
614
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l trend -d 'Show score trend over time'
|
|
615
|
+
complete -c kastell -n '__kastell_using_subcommand audit' -l days -d 'Limit trend to N days'
|
|
616
|
+
|
|
617
|
+
# evidence options
|
|
618
|
+
complete -c kastell -n '__kastell_using_subcommand evidence' -l name -d 'Label for evidence directory'
|
|
619
|
+
complete -c kastell -n '__kastell_using_subcommand evidence' -l output -d 'Override output directory'
|
|
620
|
+
complete -c kastell -n '__kastell_using_subcommand evidence' -l lines -d 'Log lines to collect'
|
|
621
|
+
complete -c kastell -n '__kastell_using_subcommand evidence' -l no-docker -d 'Skip Docker collection'
|
|
622
|
+
complete -c kastell -n '__kastell_using_subcommand evidence' -l no-sysinfo -d 'Skip system info'
|
|
623
|
+
complete -c kastell -n '__kastell_using_subcommand evidence' -l quiet -d 'Suppress spinner output'
|
|
624
|
+
complete -c kastell -n '__kastell_using_subcommand evidence' -l force -d 'Overwrite existing evidence'
|
|
625
|
+
complete -c kastell -n '__kastell_using_subcommand evidence' -l json -d 'Print manifest JSON'
|
|
626
|
+
|
|
627
|
+
# fleet options
|
|
628
|
+
complete -c kastell -n '__kastell_using_subcommand fleet' -l json -d 'Output machine-readable JSON'
|
|
629
|
+
complete -c kastell -n '__kastell_using_subcommand fleet' -l sort -d 'Sort by score/name/provider'
|
|
630
|
+
|
|
631
|
+
# notify subcommands and options
|
|
632
|
+
complete -c kastell -n '__kastell_using_subcommand notify' -a 'add test'
|
|
633
|
+
complete -c kastell -n '__kastell_using_subcommand notify' -l bot-token -d 'Telegram bot token'
|
|
634
|
+
complete -c kastell -n '__kastell_using_subcommand notify' -l chat-id -d 'Telegram chat ID'
|
|
635
|
+
complete -c kastell -n '__kastell_using_subcommand notify' -l webhook-url -d 'Discord or Slack webhook URL'
|
|
636
|
+
complete -c kastell -n '__kastell_using_subcommand notify' -l force -d 'Skip interactive prompts'
|
|
637
|
+
|
|
638
|
+
# plugin subcommands and options
|
|
639
|
+
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'install' -d 'Install a plugin from npm registry'
|
|
640
|
+
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'remove' -d 'Remove an installed plugin'
|
|
641
|
+
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'list' -d 'List installed plugins'
|
|
642
|
+
complete -c kastell -n '__kastell_using_subcommand plugin' -a 'validate' -d 'Validate plugin manifest'
|
|
643
|
+
complete -c kastell -n '__kastell_using_subcommand plugin' -l force -d 'Skip confirmation prompt'
|
|
644
644
|
complete -c kastell -n '__kastell_using_subcommand plugin' -l ver -d 'Specific version to install' -r`;
|
|
645
645
|
}
|
|
646
646
|
//# sourceMappingURL=completions.js.map
|