aidevops 2.52.1

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.
Files changed (329) hide show
  1. package/.agent/AGENTS.md +614 -0
  2. package/.agent/accounts.md +65 -0
  3. package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
  4. package/.agent/aidevops/api-integrations.md +335 -0
  5. package/.agent/aidevops/architecture.md +510 -0
  6. package/.agent/aidevops/configs.md +274 -0
  7. package/.agent/aidevops/docs.md +244 -0
  8. package/.agent/aidevops/extension.md +311 -0
  9. package/.agent/aidevops/mcp-integrations.md +340 -0
  10. package/.agent/aidevops/mcp-troubleshooting.md +162 -0
  11. package/.agent/aidevops/memory-patterns.md +172 -0
  12. package/.agent/aidevops/providers.md +217 -0
  13. package/.agent/aidevops/recommendations.md +321 -0
  14. package/.agent/aidevops/requirements.md +301 -0
  15. package/.agent/aidevops/resources.md +214 -0
  16. package/.agent/aidevops/security-requirements.md +174 -0
  17. package/.agent/aidevops/security.md +350 -0
  18. package/.agent/aidevops/service-links.md +400 -0
  19. package/.agent/aidevops/services.md +357 -0
  20. package/.agent/aidevops/setup.md +153 -0
  21. package/.agent/aidevops/troubleshooting.md +389 -0
  22. package/.agent/aidevops.md +124 -0
  23. package/.agent/build-plus.md +244 -0
  24. package/.agent/content/guidelines.md +109 -0
  25. package/.agent/content.md +87 -0
  26. package/.agent/health.md +59 -0
  27. package/.agent/legal.md +59 -0
  28. package/.agent/loop-state/full-loop.local.md +16 -0
  29. package/.agent/loop-state/ralph-loop.local.md +10 -0
  30. package/.agent/marketing.md +440 -0
  31. package/.agent/memory/README.md +260 -0
  32. package/.agent/onboarding.md +796 -0
  33. package/.agent/plan-plus.md +245 -0
  34. package/.agent/research.md +100 -0
  35. package/.agent/sales.md +333 -0
  36. package/.agent/scripts/101domains-helper.sh +701 -0
  37. package/.agent/scripts/add-missing-returns.sh +140 -0
  38. package/.agent/scripts/agent-browser-helper.sh +311 -0
  39. package/.agent/scripts/agno-setup.sh +712 -0
  40. package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
  41. package/.agent/scripts/aidevops-update-check.sh +71 -0
  42. package/.agent/scripts/ampcode-cli.sh +522 -0
  43. package/.agent/scripts/auto-version-bump.sh +156 -0
  44. package/.agent/scripts/autogen-helper.sh +512 -0
  45. package/.agent/scripts/beads-sync-helper.sh +596 -0
  46. package/.agent/scripts/closte-helper.sh +5 -0
  47. package/.agent/scripts/cloudron-helper.sh +321 -0
  48. package/.agent/scripts/codacy-cli-chunked.sh +581 -0
  49. package/.agent/scripts/codacy-cli.sh +442 -0
  50. package/.agent/scripts/code-audit-helper.sh +5 -0
  51. package/.agent/scripts/coderabbit-cli.sh +417 -0
  52. package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
  53. package/.agent/scripts/commands/code-simplifier.md +86 -0
  54. package/.agent/scripts/commands/full-loop.md +246 -0
  55. package/.agent/scripts/commands/postflight-loop.md +103 -0
  56. package/.agent/scripts/commands/recall.md +182 -0
  57. package/.agent/scripts/commands/remember.md +132 -0
  58. package/.agent/scripts/commands/save-todo.md +175 -0
  59. package/.agent/scripts/commands/session-review.md +154 -0
  60. package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
  61. package/.agent/scripts/context-builder-helper.sh +522 -0
  62. package/.agent/scripts/coolify-cli-helper.sh +674 -0
  63. package/.agent/scripts/coolify-helper.sh +380 -0
  64. package/.agent/scripts/crawl4ai-examples.sh +401 -0
  65. package/.agent/scripts/crawl4ai-helper.sh +1078 -0
  66. package/.agent/scripts/crewai-helper.sh +681 -0
  67. package/.agent/scripts/dev-browser-helper.sh +513 -0
  68. package/.agent/scripts/dns-helper.sh +396 -0
  69. package/.agent/scripts/domain-research-helper.sh +917 -0
  70. package/.agent/scripts/dspy-helper.sh +285 -0
  71. package/.agent/scripts/dspyground-helper.sh +291 -0
  72. package/.agent/scripts/eeat-score-helper.sh +1242 -0
  73. package/.agent/scripts/efficient-return-fix.sh +92 -0
  74. package/.agent/scripts/extract-opencode-prompts.sh +128 -0
  75. package/.agent/scripts/find-missing-returns.sh +113 -0
  76. package/.agent/scripts/fix-auth-headers.sh +104 -0
  77. package/.agent/scripts/fix-common-strings.sh +254 -0
  78. package/.agent/scripts/fix-content-type.sh +100 -0
  79. package/.agent/scripts/fix-error-messages.sh +130 -0
  80. package/.agent/scripts/fix-misplaced-returns.sh +74 -0
  81. package/.agent/scripts/fix-remaining-literals.sh +152 -0
  82. package/.agent/scripts/fix-return-statements.sh +41 -0
  83. package/.agent/scripts/fix-s131-default-cases.sh +249 -0
  84. package/.agent/scripts/fix-sc2155-simple.sh +102 -0
  85. package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
  86. package/.agent/scripts/fix-string-literals.sh +273 -0
  87. package/.agent/scripts/full-loop-helper.sh +773 -0
  88. package/.agent/scripts/generate-opencode-agents.sh +497 -0
  89. package/.agent/scripts/generate-opencode-commands.sh +1629 -0
  90. package/.agent/scripts/generate-skills.sh +366 -0
  91. package/.agent/scripts/git-platforms-helper.sh +640 -0
  92. package/.agent/scripts/gitea-cli-helper.sh +743 -0
  93. package/.agent/scripts/github-cli-helper.sh +702 -0
  94. package/.agent/scripts/gitlab-cli-helper.sh +682 -0
  95. package/.agent/scripts/gsc-add-user-helper.sh +325 -0
  96. package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
  97. package/.agent/scripts/hetzner-helper.sh +485 -0
  98. package/.agent/scripts/hostinger-helper.sh +229 -0
  99. package/.agent/scripts/keyword-research-helper.sh +1815 -0
  100. package/.agent/scripts/langflow-helper.sh +544 -0
  101. package/.agent/scripts/linkedin-automation.py +241 -0
  102. package/.agent/scripts/linter-manager.sh +599 -0
  103. package/.agent/scripts/linters-local.sh +434 -0
  104. package/.agent/scripts/list-keys-helper.sh +488 -0
  105. package/.agent/scripts/local-browser-automation.py +339 -0
  106. package/.agent/scripts/localhost-helper.sh +744 -0
  107. package/.agent/scripts/loop-common.sh +806 -0
  108. package/.agent/scripts/mainwp-helper.sh +728 -0
  109. package/.agent/scripts/markdown-formatter.sh +338 -0
  110. package/.agent/scripts/markdown-lint-fix.sh +311 -0
  111. package/.agent/scripts/mass-fix-returns.sh +58 -0
  112. package/.agent/scripts/mcp-diagnose.sh +167 -0
  113. package/.agent/scripts/mcp-inspector-helper.sh +449 -0
  114. package/.agent/scripts/memory-helper.sh +650 -0
  115. package/.agent/scripts/monitor-code-review.sh +255 -0
  116. package/.agent/scripts/onboarding-helper.sh +706 -0
  117. package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
  118. package/.agent/scripts/opencode-test-helper.sh +213 -0
  119. package/.agent/scripts/pagespeed-helper.sh +464 -0
  120. package/.agent/scripts/pandoc-helper.sh +362 -0
  121. package/.agent/scripts/postflight-check.sh +555 -0
  122. package/.agent/scripts/pre-commit-hook.sh +259 -0
  123. package/.agent/scripts/pre-edit-check.sh +169 -0
  124. package/.agent/scripts/qlty-cli.sh +356 -0
  125. package/.agent/scripts/quality-cli-manager.sh +525 -0
  126. package/.agent/scripts/quality-feedback-helper.sh +462 -0
  127. package/.agent/scripts/quality-fix.sh +263 -0
  128. package/.agent/scripts/quality-loop-helper.sh +1108 -0
  129. package/.agent/scripts/ralph-loop-helper.sh +836 -0
  130. package/.agent/scripts/ralph-upstream-check.sh +341 -0
  131. package/.agent/scripts/secretlint-helper.sh +847 -0
  132. package/.agent/scripts/servers-helper.sh +241 -0
  133. package/.agent/scripts/ses-helper.sh +619 -0
  134. package/.agent/scripts/session-review-helper.sh +404 -0
  135. package/.agent/scripts/setup-linters-wizard.sh +379 -0
  136. package/.agent/scripts/setup-local-api-keys.sh +330 -0
  137. package/.agent/scripts/setup-mcp-integrations.sh +472 -0
  138. package/.agent/scripts/shared-constants.sh +246 -0
  139. package/.agent/scripts/site-crawler-helper.sh +1487 -0
  140. package/.agent/scripts/snyk-helper.sh +940 -0
  141. package/.agent/scripts/sonarcloud-autofix.sh +193 -0
  142. package/.agent/scripts/sonarcloud-cli.sh +191 -0
  143. package/.agent/scripts/sonarscanner-cli.sh +455 -0
  144. package/.agent/scripts/spaceship-helper.sh +747 -0
  145. package/.agent/scripts/stagehand-helper.sh +321 -0
  146. package/.agent/scripts/stagehand-python-helper.sh +321 -0
  147. package/.agent/scripts/stagehand-python-setup.sh +441 -0
  148. package/.agent/scripts/stagehand-setup.sh +439 -0
  149. package/.agent/scripts/system-cleanup.sh +340 -0
  150. package/.agent/scripts/terminal-title-helper.sh +388 -0
  151. package/.agent/scripts/terminal-title-setup.sh +549 -0
  152. package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
  153. package/.agent/scripts/test-stagehand-integration.sh +309 -0
  154. package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
  155. package/.agent/scripts/todo-ready.sh +263 -0
  156. package/.agent/scripts/tool-version-check.sh +362 -0
  157. package/.agent/scripts/toon-helper.sh +469 -0
  158. package/.agent/scripts/twilio-helper.sh +917 -0
  159. package/.agent/scripts/updown-helper.sh +279 -0
  160. package/.agent/scripts/validate-mcp-integrations.sh +250 -0
  161. package/.agent/scripts/validate-version-consistency.sh +131 -0
  162. package/.agent/scripts/vaultwarden-helper.sh +597 -0
  163. package/.agent/scripts/vercel-cli-helper.sh +816 -0
  164. package/.agent/scripts/verify-mirrors.sh +169 -0
  165. package/.agent/scripts/version-manager.sh +831 -0
  166. package/.agent/scripts/webhosting-helper.sh +471 -0
  167. package/.agent/scripts/webhosting-verify.sh +238 -0
  168. package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
  169. package/.agent/scripts/worktree-helper.sh +595 -0
  170. package/.agent/scripts/worktree-sessions.sh +577 -0
  171. package/.agent/seo/dataforseo.md +215 -0
  172. package/.agent/seo/domain-research.md +532 -0
  173. package/.agent/seo/eeat-score.md +659 -0
  174. package/.agent/seo/google-search-console.md +366 -0
  175. package/.agent/seo/gsc-sitemaps.md +282 -0
  176. package/.agent/seo/keyword-research.md +521 -0
  177. package/.agent/seo/serper.md +278 -0
  178. package/.agent/seo/site-crawler.md +387 -0
  179. package/.agent/seo.md +236 -0
  180. package/.agent/services/accounting/quickfile.md +159 -0
  181. package/.agent/services/communications/telfon.md +470 -0
  182. package/.agent/services/communications/twilio.md +569 -0
  183. package/.agent/services/crm/fluentcrm.md +449 -0
  184. package/.agent/services/email/ses.md +399 -0
  185. package/.agent/services/hosting/101domains.md +378 -0
  186. package/.agent/services/hosting/closte.md +177 -0
  187. package/.agent/services/hosting/cloudflare.md +251 -0
  188. package/.agent/services/hosting/cloudron.md +478 -0
  189. package/.agent/services/hosting/dns-providers.md +335 -0
  190. package/.agent/services/hosting/domain-purchasing.md +344 -0
  191. package/.agent/services/hosting/hetzner.md +327 -0
  192. package/.agent/services/hosting/hostinger.md +287 -0
  193. package/.agent/services/hosting/localhost.md +419 -0
  194. package/.agent/services/hosting/spaceship.md +353 -0
  195. package/.agent/services/hosting/webhosting.md +330 -0
  196. package/.agent/social-media.md +69 -0
  197. package/.agent/templates/plans-template.md +114 -0
  198. package/.agent/templates/prd-template.md +129 -0
  199. package/.agent/templates/tasks-template.md +108 -0
  200. package/.agent/templates/todo-template.md +89 -0
  201. package/.agent/tools/ai-assistants/agno.md +471 -0
  202. package/.agent/tools/ai-assistants/capsolver.md +326 -0
  203. package/.agent/tools/ai-assistants/configuration.md +221 -0
  204. package/.agent/tools/ai-assistants/overview.md +209 -0
  205. package/.agent/tools/ai-assistants/status.md +171 -0
  206. package/.agent/tools/ai-assistants/windsurf.md +193 -0
  207. package/.agent/tools/ai-orchestration/autogen.md +406 -0
  208. package/.agent/tools/ai-orchestration/crewai.md +445 -0
  209. package/.agent/tools/ai-orchestration/langflow.md +405 -0
  210. package/.agent/tools/ai-orchestration/openprose.md +487 -0
  211. package/.agent/tools/ai-orchestration/overview.md +362 -0
  212. package/.agent/tools/ai-orchestration/packaging.md +647 -0
  213. package/.agent/tools/browser/agent-browser.md +464 -0
  214. package/.agent/tools/browser/browser-automation.md +400 -0
  215. package/.agent/tools/browser/chrome-devtools.md +282 -0
  216. package/.agent/tools/browser/crawl4ai-integration.md +422 -0
  217. package/.agent/tools/browser/crawl4ai-resources.md +277 -0
  218. package/.agent/tools/browser/crawl4ai-usage.md +416 -0
  219. package/.agent/tools/browser/crawl4ai.md +585 -0
  220. package/.agent/tools/browser/dev-browser.md +341 -0
  221. package/.agent/tools/browser/pagespeed.md +260 -0
  222. package/.agent/tools/browser/playwright.md +266 -0
  223. package/.agent/tools/browser/playwriter.md +310 -0
  224. package/.agent/tools/browser/stagehand-examples.md +456 -0
  225. package/.agent/tools/browser/stagehand-python.md +483 -0
  226. package/.agent/tools/browser/stagehand.md +421 -0
  227. package/.agent/tools/build-agent/agent-review.md +224 -0
  228. package/.agent/tools/build-agent/build-agent.md +784 -0
  229. package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
  230. package/.agent/tools/build-mcp/api-wrapper.md +445 -0
  231. package/.agent/tools/build-mcp/build-mcp.md +240 -0
  232. package/.agent/tools/build-mcp/deployment.md +401 -0
  233. package/.agent/tools/build-mcp/server-patterns.md +632 -0
  234. package/.agent/tools/build-mcp/transports.md +366 -0
  235. package/.agent/tools/code-review/auditing.md +383 -0
  236. package/.agent/tools/code-review/automation.md +219 -0
  237. package/.agent/tools/code-review/best-practices.md +203 -0
  238. package/.agent/tools/code-review/codacy.md +151 -0
  239. package/.agent/tools/code-review/code-simplifier.md +174 -0
  240. package/.agent/tools/code-review/code-standards.md +309 -0
  241. package/.agent/tools/code-review/coderabbit.md +101 -0
  242. package/.agent/tools/code-review/management.md +155 -0
  243. package/.agent/tools/code-review/qlty.md +248 -0
  244. package/.agent/tools/code-review/secretlint.md +565 -0
  245. package/.agent/tools/code-review/setup.md +250 -0
  246. package/.agent/tools/code-review/snyk.md +563 -0
  247. package/.agent/tools/code-review/tools.md +230 -0
  248. package/.agent/tools/content/summarize.md +353 -0
  249. package/.agent/tools/context/augment-context-engine.md +468 -0
  250. package/.agent/tools/context/context-builder-agent.md +76 -0
  251. package/.agent/tools/context/context-builder.md +375 -0
  252. package/.agent/tools/context/context7.md +371 -0
  253. package/.agent/tools/context/dspy.md +302 -0
  254. package/.agent/tools/context/dspyground.md +374 -0
  255. package/.agent/tools/context/llm-tldr.md +219 -0
  256. package/.agent/tools/context/osgrep.md +488 -0
  257. package/.agent/tools/context/prompt-optimization.md +338 -0
  258. package/.agent/tools/context/toon.md +292 -0
  259. package/.agent/tools/conversion/pandoc.md +304 -0
  260. package/.agent/tools/credentials/api-key-management.md +154 -0
  261. package/.agent/tools/credentials/api-key-setup.md +224 -0
  262. package/.agent/tools/credentials/environment-variables.md +180 -0
  263. package/.agent/tools/credentials/vaultwarden.md +382 -0
  264. package/.agent/tools/data-extraction/outscraper.md +974 -0
  265. package/.agent/tools/deployment/coolify-cli.md +388 -0
  266. package/.agent/tools/deployment/coolify-setup.md +353 -0
  267. package/.agent/tools/deployment/coolify.md +345 -0
  268. package/.agent/tools/deployment/vercel.md +390 -0
  269. package/.agent/tools/git/authentication.md +132 -0
  270. package/.agent/tools/git/gitea-cli.md +193 -0
  271. package/.agent/tools/git/github-actions.md +207 -0
  272. package/.agent/tools/git/github-cli.md +223 -0
  273. package/.agent/tools/git/gitlab-cli.md +190 -0
  274. package/.agent/tools/git/opencode-github-security.md +350 -0
  275. package/.agent/tools/git/opencode-github.md +328 -0
  276. package/.agent/tools/git/opencode-gitlab.md +252 -0
  277. package/.agent/tools/git/security.md +196 -0
  278. package/.agent/tools/git.md +207 -0
  279. package/.agent/tools/opencode/oh-my-opencode.md +375 -0
  280. package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
  281. package/.agent/tools/opencode/opencode.md +651 -0
  282. package/.agent/tools/social-media/bird.md +437 -0
  283. package/.agent/tools/task-management/beads.md +336 -0
  284. package/.agent/tools/terminal/terminal-title.md +251 -0
  285. package/.agent/tools/ui/shadcn.md +196 -0
  286. package/.agent/tools/ui/ui-skills.md +115 -0
  287. package/.agent/tools/wordpress/localwp.md +311 -0
  288. package/.agent/tools/wordpress/mainwp.md +391 -0
  289. package/.agent/tools/wordpress/scf.md +527 -0
  290. package/.agent/tools/wordpress/wp-admin.md +729 -0
  291. package/.agent/tools/wordpress/wp-dev.md +940 -0
  292. package/.agent/tools/wordpress/wp-preferred.md +398 -0
  293. package/.agent/tools/wordpress.md +95 -0
  294. package/.agent/workflows/branch/bugfix.md +63 -0
  295. package/.agent/workflows/branch/chore.md +95 -0
  296. package/.agent/workflows/branch/experiment.md +115 -0
  297. package/.agent/workflows/branch/feature.md +59 -0
  298. package/.agent/workflows/branch/hotfix.md +98 -0
  299. package/.agent/workflows/branch/refactor.md +92 -0
  300. package/.agent/workflows/branch/release.md +96 -0
  301. package/.agent/workflows/branch.md +347 -0
  302. package/.agent/workflows/bug-fixing.md +267 -0
  303. package/.agent/workflows/changelog.md +129 -0
  304. package/.agent/workflows/code-audit-remote.md +279 -0
  305. package/.agent/workflows/conversation-starter.md +69 -0
  306. package/.agent/workflows/error-feedback.md +578 -0
  307. package/.agent/workflows/feature-development.md +355 -0
  308. package/.agent/workflows/git-workflow.md +702 -0
  309. package/.agent/workflows/multi-repo-workspace.md +268 -0
  310. package/.agent/workflows/plans.md +709 -0
  311. package/.agent/workflows/postflight.md +604 -0
  312. package/.agent/workflows/pr.md +571 -0
  313. package/.agent/workflows/preflight.md +278 -0
  314. package/.agent/workflows/ralph-loop.md +773 -0
  315. package/.agent/workflows/release.md +498 -0
  316. package/.agent/workflows/session-manager.md +254 -0
  317. package/.agent/workflows/session-review.md +311 -0
  318. package/.agent/workflows/sql-migrations.md +631 -0
  319. package/.agent/workflows/version-bump.md +283 -0
  320. package/.agent/workflows/wiki-update.md +333 -0
  321. package/.agent/workflows/worktree.md +477 -0
  322. package/LICENSE +21 -0
  323. package/README.md +1446 -0
  324. package/VERSION +1 -0
  325. package/aidevops.sh +1746 -0
  326. package/bin/aidevops +21 -0
  327. package/package.json +75 -0
  328. package/scripts/npm-postinstall.js +60 -0
  329. package/setup.sh +2366 -0
@@ -0,0 +1,380 @@
1
+ #!/bin/bash
2
+ # shellcheck disable=SC2034,SC2155,SC2317,SC2329,SC2016,SC2181,SC1091,SC2154,SC2015,SC2086,SC2129,SC2030,SC2031,SC2119,SC2120,SC2001,SC2162,SC2088,SC2089,SC2090,SC2029,SC2006,SC2153
3
+
4
+ # Coolify Helper Script
5
+ # This script provides easy access to Coolify-hosted applications and services
6
+
7
+ # Colors for output
8
+
9
+ GREEN='\033[0;32m'
10
+ BLUE='\033[0;34m'
11
+ YELLOW='\033[1;33m'
12
+ RED='\033[0;31m'
13
+ NC='\033[0m' # No Color
14
+
15
+ # Error message constants
16
+ # readonly USAGE_PREFIX="Usage:" # Currently unused
17
+ readonly ERROR_UNKNOWN_COMMAND="Unknown command:"
18
+
19
+ # Configuration file
20
+ CONFIG_FILE="../configs/coolify-config.json"
21
+
22
+ # Function to print colored output
23
+ print_info() {
24
+ local msg="$1"
25
+ echo -e "${BLUE}[INFO]${NC} $msg"
26
+ return 0
27
+ }
28
+
29
+ print_success() {
30
+ local msg="$1"
31
+ echo -e "${GREEN}[SUCCESS]${NC} $msg"
32
+ return 0
33
+ }
34
+
35
+ print_warning() {
36
+ local msg="$1"
37
+ echo -e "${YELLOW}[WARNING]${NC} $msg"
38
+ return 0
39
+ }
40
+
41
+ print_error() {
42
+ local msg="$1"
43
+ echo -e "${RED}[ERROR]${NC} $msg" >&2
44
+ return 0
45
+ }
46
+
47
+ # Check if config file exists
48
+ check_config() {
49
+ if [[ ! -f "$CONFIG_FILE" ]]; then
50
+ print_error "Configuration file not found: $CONFIG_FILE"
51
+ print_info "Copy and customize: cp ../configs/coolify-config.json.txt $CONFIG_FILE"
52
+ exit 1
53
+ fi
54
+
55
+ if ! jq empty "$CONFIG_FILE" 2>/dev/null; then
56
+ print_error "Invalid JSON in configuration file: $CONFIG_FILE"
57
+ exit 1
58
+ fi
59
+
60
+ return 0
61
+ }
62
+
63
+ # List all Coolify servers
64
+ list_servers() {
65
+ check_config
66
+ print_info "Available Coolify servers:"
67
+
68
+ if ! command -v jq >/dev/null 2>&1; then
69
+ print_error "jq is required for JSON parsing. Install with: brew install jq"
70
+ return 1
71
+ fi
72
+
73
+ servers=$(jq -r '.servers | keys[]' "$CONFIG_FILE")
74
+ for server in $servers; do
75
+ name=$(jq -r ".servers.$server.name" "$CONFIG_FILE")
76
+ host=$(jq -r ".servers.$server.host" "$CONFIG_FILE")
77
+ coolify_url=$(jq -r ".servers.$server.coolify_url" "$CONFIG_FILE")
78
+ description=$(jq -r ".servers.$server.description" "$CONFIG_FILE")
79
+
80
+ echo " - $server: $name"
81
+ echo " Host: $host"
82
+ echo " Coolify URL: $coolify_url"
83
+ echo " Description: $description"
84
+ echo ""
85
+ done
86
+ return 0
87
+ }
88
+
89
+ # Connect to Coolify server via SSH
90
+ connect_server() {
91
+ local server="$1"
92
+
93
+ if [[ -z "$server" ]]; then
94
+ print_error "Usage: connect [server-name]"
95
+ list_servers
96
+ return 1
97
+ fi
98
+
99
+ check_config
100
+
101
+ local host
102
+ host=$(jq -r ".servers.$server.host" "$CONFIG_FILE")
103
+ local port
104
+ port=$(jq -r ".servers.$server.port" "$CONFIG_FILE")
105
+ local username
106
+ username=$(jq -r ".servers.$server.username" "$CONFIG_FILE")
107
+ local ssh_key
108
+ ssh_key=$(jq -r ".servers.$server.ssh_key" "$CONFIG_FILE")
109
+
110
+ if [[ "$host" == "null" ]]; then
111
+ print_error "Server '$server' not found in configuration"
112
+ list_servers
113
+ return 1
114
+ fi
115
+
116
+ print_info "Connecting to $server ($host)..."
117
+
118
+ if [[ "$ssh_key" != "null" ]]; then
119
+ ssh -i "$ssh_key" -p "$port" "$username@$host"
120
+ else
121
+ ssh -p "$port" "$username@$host"
122
+ fi
123
+ return 0
124
+ }
125
+
126
+ # Open Coolify web interface
127
+ open_coolify() {
128
+ local server="${1:-coolify-main}"
129
+
130
+ check_config
131
+
132
+ local coolify_url
133
+ coolify_url=$(jq -r ".servers.$server.coolify_url" "$CONFIG_FILE")
134
+
135
+ if [[ "$coolify_url" == "null" ]]; then
136
+ print_error "Coolify URL not found for server '$server'"
137
+ return 1
138
+ fi
139
+
140
+ print_info "Opening Coolify web interface: $coolify_url"
141
+
142
+ if command -v open >/dev/null 2>&1; then
143
+ # macOS
144
+ open "$coolify_url"
145
+ elif command -v xdg-open >/dev/null 2>&1; then
146
+ # Linux
147
+ xdg-open "$coolify_url"
148
+ else
149
+ print_info "Please open this URL in your browser: $coolify_url"
150
+ fi
151
+ return 0
152
+ }
153
+
154
+ # List applications on a server
155
+ list_apps() {
156
+ local server="${1:-main_server}"
157
+
158
+ check_config
159
+
160
+ print_info "Applications on $server:"
161
+
162
+ local apps
163
+ apps=$(jq -r ".applications.${server}[]?.name" "$CONFIG_FILE" 2>/dev/null)
164
+ if [[ -z "$apps" ]]; then
165
+ print_warning "No applications configured for server '$server'"
166
+ return 1
167
+ fi
168
+
169
+ echo "$apps" | while read -r app; do
170
+ if [[ -n "$app" ]]; then
171
+ local type
172
+ type=$(jq -r ".applications.${server}[] | select(.name==\"$app\") | .type" "$CONFIG_FILE")
173
+ local domain
174
+ domain=$(jq -r ".applications.${server}[] | select(.name==\"$app\") | .domain" "$CONFIG_FILE")
175
+ local branch
176
+ branch=$(jq -r ".applications.${server}[] | select(.name==\"$app\") | .branch" "$CONFIG_FILE")
177
+
178
+ echo " - $app ($type)"
179
+ echo " Domain: $domain"
180
+ echo " Branch: $branch"
181
+ echo ""
182
+ fi
183
+ done
184
+ return 0
185
+ }
186
+
187
+ # Execute command on Coolify server
188
+ exec_command() {
189
+ local server="$1"
190
+ local command="$2"
191
+
192
+ if [[ -z "$server" || -z "$command" ]]; then
193
+ print_error "Usage: exec [server-name] [command]"
194
+ return 1
195
+ fi
196
+
197
+ check_config
198
+
199
+ local host
200
+ host=$(jq -r ".servers.$server.host" "$CONFIG_FILE")
201
+ local port
202
+ port=$(jq -r ".servers.$server.port" "$CONFIG_FILE")
203
+ local username
204
+ username=$(jq -r ".servers.$server.username" "$CONFIG_FILE")
205
+ local ssh_key
206
+ ssh_key=$(jq -r ".servers.$server.ssh_key" "$CONFIG_FILE")
207
+
208
+ if [[ "$host" == "null" ]]; then
209
+ print_error "Server '$server' not found in configuration"
210
+ return 1
211
+ fi
212
+
213
+ print_info "Executing on $server: $command"
214
+
215
+ if [[ "$ssh_key" != "null" ]]; then
216
+ ssh -i "$ssh_key" -p "$port" "$username@$host" "$command"
217
+ else
218
+ ssh -p "$port" "$username@$host" "$command"
219
+ fi
220
+ return 0
221
+ }
222
+
223
+ # Check Coolify server status
224
+ check_status() {
225
+ local server="${1:-coolify-main}"
226
+
227
+ check_config
228
+
229
+ local host
230
+ host=$(jq -r ".servers.$server.host" "$CONFIG_FILE")
231
+ local coolify_url
232
+ coolify_url=$(jq -r ".servers.$server.coolify_url" "$CONFIG_FILE")
233
+
234
+ if [[ "$host" == "null" ]]; then
235
+ print_error "Server '$server' not found in configuration"
236
+ return 1
237
+ fi
238
+
239
+ print_info "Checking status of $server..."
240
+
241
+ # Check SSH connectivity
242
+ if exec_command "$server" "echo 'SSH connection successful'" >/dev/null 2>&1; then
243
+ print_success "SSH connection: OK"
244
+ else
245
+ print_error "SSH connection: FAILED"
246
+ fi
247
+
248
+ # Check Coolify web interface
249
+ if curl -s --head "$coolify_url" | head -n 1 | grep -q "200 OK"; then
250
+ print_success "Coolify web interface: OK"
251
+ else
252
+ print_warning "Coolify web interface: Not responding"
253
+ fi
254
+
255
+ # Check Docker status
256
+ print_info "Docker containers:"
257
+ exec_command "$server" "docker ps --format 'table {{.Names}}\t{{.Status}}'"
258
+ return 0
259
+ }
260
+
261
+ # Generate SSH configs for Coolify servers
262
+ generate_ssh_configs() {
263
+ check_config
264
+
265
+ print_info "Generating SSH configurations for Coolify servers..."
266
+
267
+ local ssh_config="$HOME/.ssh/config"
268
+ local temp_config="/tmp/coolify_ssh_config"
269
+
270
+ echo "# Coolify Servers - Generated by coolify-helper.sh" > "$temp_config"
271
+ echo "# $(date)" >> "$temp_config"
272
+ echo "" >> "$temp_config"
273
+
274
+ servers=$(jq -r '.servers | keys[]' "$CONFIG_FILE")
275
+ for server in $servers; do
276
+ local name
277
+ name=$(jq -r ".servers.$server.name" "$CONFIG_FILE")
278
+ local host
279
+ host=$(jq -r ".servers.$server.host" "$CONFIG_FILE")
280
+ local port
281
+ port=$(jq -r ".servers.$server.port" "$CONFIG_FILE")
282
+ local username
283
+ username=$(jq -r ".servers.$server.username" "$CONFIG_FILE")
284
+ local ssh_key
285
+ ssh_key=$(jq -r ".servers.$server.ssh_key" "$CONFIG_FILE")
286
+
287
+ echo "Host $server" >> "$temp_config"
288
+ echo " HostName $host" >> "$temp_config"
289
+ echo " Port $port" >> "$temp_config"
290
+ echo " User $username" >> "$temp_config"
291
+
292
+ if [[ "$ssh_key" != "null" ]]; then
293
+ echo " IdentityFile $ssh_key" >> "$temp_config"
294
+ fi
295
+
296
+ echo " # $name" >> "$temp_config"
297
+ echo "" >> "$temp_config"
298
+ done
299
+
300
+ print_success "SSH configuration generated: $temp_config"
301
+ print_info "To add to your SSH config: cat $temp_config >> $ssh_config"
302
+ return 0
303
+ }
304
+
305
+ # Main function
306
+ main() {
307
+ # Assign positional parameters to local variables
308
+ local command="${1:-help}"
309
+ local param2="$2"
310
+ local param3="$3"
311
+
312
+ local server_name="$param2"
313
+ local command_to_run="$param3"
314
+
315
+ # Main command handler
316
+ case "$command" in
317
+ "list")
318
+ list_servers
319
+ ;;
320
+ "connect")
321
+ connect_server "$server_name"
322
+ ;;
323
+ "open")
324
+ open_coolify "$server_name"
325
+ ;;
326
+ "apps")
327
+ list_apps "$server_name"
328
+ ;;
329
+ "exec")
330
+ exec_command "$server_name" "$command_to_run"
331
+ ;;
332
+ "status")
333
+ check_status "$param2"
334
+ ;;
335
+ "generate-ssh-configs")
336
+ generate_ssh_configs
337
+ ;;
338
+ "help"|"-h"|"--help"|"")
339
+ echo "Coolify Helper Script"
340
+ echo "$USAGE_COMMAND_OPTIONS"
341
+ echo ""
342
+ echo "Server Management Commands:"
343
+ echo " list - List all configured Coolify servers"
344
+ echo " connect [server] - Connect to Coolify server via SSH"
345
+ echo " open [server] - Open Coolify web interface in browser"
346
+ echo " status [server] - Check server and Coolify status"
347
+ echo " exec [server] [command] - Execute command on Coolify server"
348
+ echo " generate-ssh-configs - Generate SSH configurations"
349
+ echo ""
350
+ echo "Application Management Commands:"
351
+ echo " apps [server] - List applications on server"
352
+ echo ""
353
+ echo "Examples:"
354
+ echo " $0 list"
355
+ echo " $0 connect coolify-main"
356
+ echo " $0 open coolify-staging"
357
+ echo " $0 apps main_server"
358
+ echo " $0 exec coolify-main 'docker ps'"
359
+ echo " $0 status coolify-main"
360
+ echo ""
361
+ echo "Server Names:"
362
+ echo " - coolify-main (default production server)"
363
+ echo " - coolify-staging (staging server)"
364
+ echo ""
365
+ echo "Requirements:"
366
+ echo " - jq for JSON parsing"
367
+ echo " - SSH access to Coolify servers"
368
+ echo " - Coolify installed and running on target servers"
369
+ ;;
370
+ *)
371
+ print_error "$ERROR_UNKNOWN_COMMAND $command"
372
+ print_info "$HELP_USAGE_INFO"
373
+ exit 1
374
+ ;;
375
+ esac
376
+ return 0
377
+ }
378
+
379
+ # Run main function
380
+ main "$@"