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.
- package/.agent/AGENTS.md +614 -0
- package/.agent/accounts.md +65 -0
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
- package/.agent/aidevops/api-integrations.md +335 -0
- package/.agent/aidevops/architecture.md +510 -0
- package/.agent/aidevops/configs.md +274 -0
- package/.agent/aidevops/docs.md +244 -0
- package/.agent/aidevops/extension.md +311 -0
- package/.agent/aidevops/mcp-integrations.md +340 -0
- package/.agent/aidevops/mcp-troubleshooting.md +162 -0
- package/.agent/aidevops/memory-patterns.md +172 -0
- package/.agent/aidevops/providers.md +217 -0
- package/.agent/aidevops/recommendations.md +321 -0
- package/.agent/aidevops/requirements.md +301 -0
- package/.agent/aidevops/resources.md +214 -0
- package/.agent/aidevops/security-requirements.md +174 -0
- package/.agent/aidevops/security.md +350 -0
- package/.agent/aidevops/service-links.md +400 -0
- package/.agent/aidevops/services.md +357 -0
- package/.agent/aidevops/setup.md +153 -0
- package/.agent/aidevops/troubleshooting.md +389 -0
- package/.agent/aidevops.md +124 -0
- package/.agent/build-plus.md +244 -0
- package/.agent/content/guidelines.md +109 -0
- package/.agent/content.md +87 -0
- package/.agent/health.md +59 -0
- package/.agent/legal.md +59 -0
- package/.agent/loop-state/full-loop.local.md +16 -0
- package/.agent/loop-state/ralph-loop.local.md +10 -0
- package/.agent/marketing.md +440 -0
- package/.agent/memory/README.md +260 -0
- package/.agent/onboarding.md +796 -0
- package/.agent/plan-plus.md +245 -0
- package/.agent/research.md +100 -0
- package/.agent/sales.md +333 -0
- package/.agent/scripts/101domains-helper.sh +701 -0
- package/.agent/scripts/add-missing-returns.sh +140 -0
- package/.agent/scripts/agent-browser-helper.sh +311 -0
- package/.agent/scripts/agno-setup.sh +712 -0
- package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
- package/.agent/scripts/aidevops-update-check.sh +71 -0
- package/.agent/scripts/ampcode-cli.sh +522 -0
- package/.agent/scripts/auto-version-bump.sh +156 -0
- package/.agent/scripts/autogen-helper.sh +512 -0
- package/.agent/scripts/beads-sync-helper.sh +596 -0
- package/.agent/scripts/closte-helper.sh +5 -0
- package/.agent/scripts/cloudron-helper.sh +321 -0
- package/.agent/scripts/codacy-cli-chunked.sh +581 -0
- package/.agent/scripts/codacy-cli.sh +442 -0
- package/.agent/scripts/code-audit-helper.sh +5 -0
- package/.agent/scripts/coderabbit-cli.sh +417 -0
- package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
- package/.agent/scripts/commands/code-simplifier.md +86 -0
- package/.agent/scripts/commands/full-loop.md +246 -0
- package/.agent/scripts/commands/postflight-loop.md +103 -0
- package/.agent/scripts/commands/recall.md +182 -0
- package/.agent/scripts/commands/remember.md +132 -0
- package/.agent/scripts/commands/save-todo.md +175 -0
- package/.agent/scripts/commands/session-review.md +154 -0
- package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
- package/.agent/scripts/context-builder-helper.sh +522 -0
- package/.agent/scripts/coolify-cli-helper.sh +674 -0
- package/.agent/scripts/coolify-helper.sh +380 -0
- package/.agent/scripts/crawl4ai-examples.sh +401 -0
- package/.agent/scripts/crawl4ai-helper.sh +1078 -0
- package/.agent/scripts/crewai-helper.sh +681 -0
- package/.agent/scripts/dev-browser-helper.sh +513 -0
- package/.agent/scripts/dns-helper.sh +396 -0
- package/.agent/scripts/domain-research-helper.sh +917 -0
- package/.agent/scripts/dspy-helper.sh +285 -0
- package/.agent/scripts/dspyground-helper.sh +291 -0
- package/.agent/scripts/eeat-score-helper.sh +1242 -0
- package/.agent/scripts/efficient-return-fix.sh +92 -0
- package/.agent/scripts/extract-opencode-prompts.sh +128 -0
- package/.agent/scripts/find-missing-returns.sh +113 -0
- package/.agent/scripts/fix-auth-headers.sh +104 -0
- package/.agent/scripts/fix-common-strings.sh +254 -0
- package/.agent/scripts/fix-content-type.sh +100 -0
- package/.agent/scripts/fix-error-messages.sh +130 -0
- package/.agent/scripts/fix-misplaced-returns.sh +74 -0
- package/.agent/scripts/fix-remaining-literals.sh +152 -0
- package/.agent/scripts/fix-return-statements.sh +41 -0
- package/.agent/scripts/fix-s131-default-cases.sh +249 -0
- package/.agent/scripts/fix-sc2155-simple.sh +102 -0
- package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
- package/.agent/scripts/fix-string-literals.sh +273 -0
- package/.agent/scripts/full-loop-helper.sh +773 -0
- package/.agent/scripts/generate-opencode-agents.sh +497 -0
- package/.agent/scripts/generate-opencode-commands.sh +1629 -0
- package/.agent/scripts/generate-skills.sh +366 -0
- package/.agent/scripts/git-platforms-helper.sh +640 -0
- package/.agent/scripts/gitea-cli-helper.sh +743 -0
- package/.agent/scripts/github-cli-helper.sh +702 -0
- package/.agent/scripts/gitlab-cli-helper.sh +682 -0
- package/.agent/scripts/gsc-add-user-helper.sh +325 -0
- package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
- package/.agent/scripts/hetzner-helper.sh +485 -0
- package/.agent/scripts/hostinger-helper.sh +229 -0
- package/.agent/scripts/keyword-research-helper.sh +1815 -0
- package/.agent/scripts/langflow-helper.sh +544 -0
- package/.agent/scripts/linkedin-automation.py +241 -0
- package/.agent/scripts/linter-manager.sh +599 -0
- package/.agent/scripts/linters-local.sh +434 -0
- package/.agent/scripts/list-keys-helper.sh +488 -0
- package/.agent/scripts/local-browser-automation.py +339 -0
- package/.agent/scripts/localhost-helper.sh +744 -0
- package/.agent/scripts/loop-common.sh +806 -0
- package/.agent/scripts/mainwp-helper.sh +728 -0
- package/.agent/scripts/markdown-formatter.sh +338 -0
- package/.agent/scripts/markdown-lint-fix.sh +311 -0
- package/.agent/scripts/mass-fix-returns.sh +58 -0
- package/.agent/scripts/mcp-diagnose.sh +167 -0
- package/.agent/scripts/mcp-inspector-helper.sh +449 -0
- package/.agent/scripts/memory-helper.sh +650 -0
- package/.agent/scripts/monitor-code-review.sh +255 -0
- package/.agent/scripts/onboarding-helper.sh +706 -0
- package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
- package/.agent/scripts/opencode-test-helper.sh +213 -0
- package/.agent/scripts/pagespeed-helper.sh +464 -0
- package/.agent/scripts/pandoc-helper.sh +362 -0
- package/.agent/scripts/postflight-check.sh +555 -0
- package/.agent/scripts/pre-commit-hook.sh +259 -0
- package/.agent/scripts/pre-edit-check.sh +169 -0
- package/.agent/scripts/qlty-cli.sh +356 -0
- package/.agent/scripts/quality-cli-manager.sh +525 -0
- package/.agent/scripts/quality-feedback-helper.sh +462 -0
- package/.agent/scripts/quality-fix.sh +263 -0
- package/.agent/scripts/quality-loop-helper.sh +1108 -0
- package/.agent/scripts/ralph-loop-helper.sh +836 -0
- package/.agent/scripts/ralph-upstream-check.sh +341 -0
- package/.agent/scripts/secretlint-helper.sh +847 -0
- package/.agent/scripts/servers-helper.sh +241 -0
- package/.agent/scripts/ses-helper.sh +619 -0
- package/.agent/scripts/session-review-helper.sh +404 -0
- package/.agent/scripts/setup-linters-wizard.sh +379 -0
- package/.agent/scripts/setup-local-api-keys.sh +330 -0
- package/.agent/scripts/setup-mcp-integrations.sh +472 -0
- package/.agent/scripts/shared-constants.sh +246 -0
- package/.agent/scripts/site-crawler-helper.sh +1487 -0
- package/.agent/scripts/snyk-helper.sh +940 -0
- package/.agent/scripts/sonarcloud-autofix.sh +193 -0
- package/.agent/scripts/sonarcloud-cli.sh +191 -0
- package/.agent/scripts/sonarscanner-cli.sh +455 -0
- package/.agent/scripts/spaceship-helper.sh +747 -0
- package/.agent/scripts/stagehand-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-setup.sh +441 -0
- package/.agent/scripts/stagehand-setup.sh +439 -0
- package/.agent/scripts/system-cleanup.sh +340 -0
- package/.agent/scripts/terminal-title-helper.sh +388 -0
- package/.agent/scripts/terminal-title-setup.sh +549 -0
- package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
- package/.agent/scripts/test-stagehand-integration.sh +309 -0
- package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
- package/.agent/scripts/todo-ready.sh +263 -0
- package/.agent/scripts/tool-version-check.sh +362 -0
- package/.agent/scripts/toon-helper.sh +469 -0
- package/.agent/scripts/twilio-helper.sh +917 -0
- package/.agent/scripts/updown-helper.sh +279 -0
- package/.agent/scripts/validate-mcp-integrations.sh +250 -0
- package/.agent/scripts/validate-version-consistency.sh +131 -0
- package/.agent/scripts/vaultwarden-helper.sh +597 -0
- package/.agent/scripts/vercel-cli-helper.sh +816 -0
- package/.agent/scripts/verify-mirrors.sh +169 -0
- package/.agent/scripts/version-manager.sh +831 -0
- package/.agent/scripts/webhosting-helper.sh +471 -0
- package/.agent/scripts/webhosting-verify.sh +238 -0
- package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
- package/.agent/scripts/worktree-helper.sh +595 -0
- package/.agent/scripts/worktree-sessions.sh +577 -0
- package/.agent/seo/dataforseo.md +215 -0
- package/.agent/seo/domain-research.md +532 -0
- package/.agent/seo/eeat-score.md +659 -0
- package/.agent/seo/google-search-console.md +366 -0
- package/.agent/seo/gsc-sitemaps.md +282 -0
- package/.agent/seo/keyword-research.md +521 -0
- package/.agent/seo/serper.md +278 -0
- package/.agent/seo/site-crawler.md +387 -0
- package/.agent/seo.md +236 -0
- package/.agent/services/accounting/quickfile.md +159 -0
- package/.agent/services/communications/telfon.md +470 -0
- package/.agent/services/communications/twilio.md +569 -0
- package/.agent/services/crm/fluentcrm.md +449 -0
- package/.agent/services/email/ses.md +399 -0
- package/.agent/services/hosting/101domains.md +378 -0
- package/.agent/services/hosting/closte.md +177 -0
- package/.agent/services/hosting/cloudflare.md +251 -0
- package/.agent/services/hosting/cloudron.md +478 -0
- package/.agent/services/hosting/dns-providers.md +335 -0
- package/.agent/services/hosting/domain-purchasing.md +344 -0
- package/.agent/services/hosting/hetzner.md +327 -0
- package/.agent/services/hosting/hostinger.md +287 -0
- package/.agent/services/hosting/localhost.md +419 -0
- package/.agent/services/hosting/spaceship.md +353 -0
- package/.agent/services/hosting/webhosting.md +330 -0
- package/.agent/social-media.md +69 -0
- package/.agent/templates/plans-template.md +114 -0
- package/.agent/templates/prd-template.md +129 -0
- package/.agent/templates/tasks-template.md +108 -0
- package/.agent/templates/todo-template.md +89 -0
- package/.agent/tools/ai-assistants/agno.md +471 -0
- package/.agent/tools/ai-assistants/capsolver.md +326 -0
- package/.agent/tools/ai-assistants/configuration.md +221 -0
- package/.agent/tools/ai-assistants/overview.md +209 -0
- package/.agent/tools/ai-assistants/status.md +171 -0
- package/.agent/tools/ai-assistants/windsurf.md +193 -0
- package/.agent/tools/ai-orchestration/autogen.md +406 -0
- package/.agent/tools/ai-orchestration/crewai.md +445 -0
- package/.agent/tools/ai-orchestration/langflow.md +405 -0
- package/.agent/tools/ai-orchestration/openprose.md +487 -0
- package/.agent/tools/ai-orchestration/overview.md +362 -0
- package/.agent/tools/ai-orchestration/packaging.md +647 -0
- package/.agent/tools/browser/agent-browser.md +464 -0
- package/.agent/tools/browser/browser-automation.md +400 -0
- package/.agent/tools/browser/chrome-devtools.md +282 -0
- package/.agent/tools/browser/crawl4ai-integration.md +422 -0
- package/.agent/tools/browser/crawl4ai-resources.md +277 -0
- package/.agent/tools/browser/crawl4ai-usage.md +416 -0
- package/.agent/tools/browser/crawl4ai.md +585 -0
- package/.agent/tools/browser/dev-browser.md +341 -0
- package/.agent/tools/browser/pagespeed.md +260 -0
- package/.agent/tools/browser/playwright.md +266 -0
- package/.agent/tools/browser/playwriter.md +310 -0
- package/.agent/tools/browser/stagehand-examples.md +456 -0
- package/.agent/tools/browser/stagehand-python.md +483 -0
- package/.agent/tools/browser/stagehand.md +421 -0
- package/.agent/tools/build-agent/agent-review.md +224 -0
- package/.agent/tools/build-agent/build-agent.md +784 -0
- package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
- package/.agent/tools/build-mcp/api-wrapper.md +445 -0
- package/.agent/tools/build-mcp/build-mcp.md +240 -0
- package/.agent/tools/build-mcp/deployment.md +401 -0
- package/.agent/tools/build-mcp/server-patterns.md +632 -0
- package/.agent/tools/build-mcp/transports.md +366 -0
- package/.agent/tools/code-review/auditing.md +383 -0
- package/.agent/tools/code-review/automation.md +219 -0
- package/.agent/tools/code-review/best-practices.md +203 -0
- package/.agent/tools/code-review/codacy.md +151 -0
- package/.agent/tools/code-review/code-simplifier.md +174 -0
- package/.agent/tools/code-review/code-standards.md +309 -0
- package/.agent/tools/code-review/coderabbit.md +101 -0
- package/.agent/tools/code-review/management.md +155 -0
- package/.agent/tools/code-review/qlty.md +248 -0
- package/.agent/tools/code-review/secretlint.md +565 -0
- package/.agent/tools/code-review/setup.md +250 -0
- package/.agent/tools/code-review/snyk.md +563 -0
- package/.agent/tools/code-review/tools.md +230 -0
- package/.agent/tools/content/summarize.md +353 -0
- package/.agent/tools/context/augment-context-engine.md +468 -0
- package/.agent/tools/context/context-builder-agent.md +76 -0
- package/.agent/tools/context/context-builder.md +375 -0
- package/.agent/tools/context/context7.md +371 -0
- package/.agent/tools/context/dspy.md +302 -0
- package/.agent/tools/context/dspyground.md +374 -0
- package/.agent/tools/context/llm-tldr.md +219 -0
- package/.agent/tools/context/osgrep.md +488 -0
- package/.agent/tools/context/prompt-optimization.md +338 -0
- package/.agent/tools/context/toon.md +292 -0
- package/.agent/tools/conversion/pandoc.md +304 -0
- package/.agent/tools/credentials/api-key-management.md +154 -0
- package/.agent/tools/credentials/api-key-setup.md +224 -0
- package/.agent/tools/credentials/environment-variables.md +180 -0
- package/.agent/tools/credentials/vaultwarden.md +382 -0
- package/.agent/tools/data-extraction/outscraper.md +974 -0
- package/.agent/tools/deployment/coolify-cli.md +388 -0
- package/.agent/tools/deployment/coolify-setup.md +353 -0
- package/.agent/tools/deployment/coolify.md +345 -0
- package/.agent/tools/deployment/vercel.md +390 -0
- package/.agent/tools/git/authentication.md +132 -0
- package/.agent/tools/git/gitea-cli.md +193 -0
- package/.agent/tools/git/github-actions.md +207 -0
- package/.agent/tools/git/github-cli.md +223 -0
- package/.agent/tools/git/gitlab-cli.md +190 -0
- package/.agent/tools/git/opencode-github-security.md +350 -0
- package/.agent/tools/git/opencode-github.md +328 -0
- package/.agent/tools/git/opencode-gitlab.md +252 -0
- package/.agent/tools/git/security.md +196 -0
- package/.agent/tools/git.md +207 -0
- package/.agent/tools/opencode/oh-my-opencode.md +375 -0
- package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
- package/.agent/tools/opencode/opencode.md +651 -0
- package/.agent/tools/social-media/bird.md +437 -0
- package/.agent/tools/task-management/beads.md +336 -0
- package/.agent/tools/terminal/terminal-title.md +251 -0
- package/.agent/tools/ui/shadcn.md +196 -0
- package/.agent/tools/ui/ui-skills.md +115 -0
- package/.agent/tools/wordpress/localwp.md +311 -0
- package/.agent/tools/wordpress/mainwp.md +391 -0
- package/.agent/tools/wordpress/scf.md +527 -0
- package/.agent/tools/wordpress/wp-admin.md +729 -0
- package/.agent/tools/wordpress/wp-dev.md +940 -0
- package/.agent/tools/wordpress/wp-preferred.md +398 -0
- package/.agent/tools/wordpress.md +95 -0
- package/.agent/workflows/branch/bugfix.md +63 -0
- package/.agent/workflows/branch/chore.md +95 -0
- package/.agent/workflows/branch/experiment.md +115 -0
- package/.agent/workflows/branch/feature.md +59 -0
- package/.agent/workflows/branch/hotfix.md +98 -0
- package/.agent/workflows/branch/refactor.md +92 -0
- package/.agent/workflows/branch/release.md +96 -0
- package/.agent/workflows/branch.md +347 -0
- package/.agent/workflows/bug-fixing.md +267 -0
- package/.agent/workflows/changelog.md +129 -0
- package/.agent/workflows/code-audit-remote.md +279 -0
- package/.agent/workflows/conversation-starter.md +69 -0
- package/.agent/workflows/error-feedback.md +578 -0
- package/.agent/workflows/feature-development.md +355 -0
- package/.agent/workflows/git-workflow.md +702 -0
- package/.agent/workflows/multi-repo-workspace.md +268 -0
- package/.agent/workflows/plans.md +709 -0
- package/.agent/workflows/postflight.md +604 -0
- package/.agent/workflows/pr.md +571 -0
- package/.agent/workflows/preflight.md +278 -0
- package/.agent/workflows/ralph-loop.md +773 -0
- package/.agent/workflows/release.md +498 -0
- package/.agent/workflows/session-manager.md +254 -0
- package/.agent/workflows/session-review.md +311 -0
- package/.agent/workflows/sql-migrations.md +631 -0
- package/.agent/workflows/version-bump.md +283 -0
- package/.agent/workflows/wiki-update.md +333 -0
- package/.agent/workflows/worktree.md +477 -0
- package/LICENSE +21 -0
- package/README.md +1446 -0
- package/VERSION +1 -0
- package/aidevops.sh +1746 -0
- package/bin/aidevops +21 -0
- package/package.json +75 -0
- package/scripts/npm-postinstall.js +60 -0
- package/setup.sh +2366 -0
|
@@ -0,0 +1,674 @@
|
|
|
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 CLI Helper Script
|
|
5
|
+
# Comprehensive Coolify self-hosted deployment and management using Coolify CLI
|
|
6
|
+
# Managed by AI DevOps Framework
|
|
7
|
+
|
|
8
|
+
# Set strict mode
|
|
9
|
+
set -euo pipefail
|
|
10
|
+
|
|
11
|
+
# ------------------------------------------------------------------------------
|
|
12
|
+
# CONFIGURATION & CONSTANTS
|
|
13
|
+
# ------------------------------------------------------------------------------
|
|
14
|
+
|
|
15
|
+
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
|
+
readonly SCRIPT_DIR="$script_dir"
|
|
17
|
+
|
|
18
|
+
repo_root="$(dirname "$SCRIPT_DIR")"
|
|
19
|
+
readonly REPO_ROOT="$repo_root"
|
|
20
|
+
readonly CONFIG_FILE="$REPO_ROOT/configs/coolify-cli-config.json"
|
|
21
|
+
|
|
22
|
+
# Colors
|
|
23
|
+
readonly BLUE='\033[0;34m'
|
|
24
|
+
readonly GREEN='\033[0;32m'
|
|
25
|
+
readonly YELLOW='\033[1;33m'
|
|
26
|
+
readonly RED='\033[0;31m'
|
|
27
|
+
readonly NC='\033[0m'
|
|
28
|
+
|
|
29
|
+
# Common constants
|
|
30
|
+
readonly ERROR_UNKNOWN_COMMAND="Unknown command:"
|
|
31
|
+
# Error Messages
|
|
32
|
+
readonly ERROR_CONFIG_MISSING="Configuration file not found at $CONFIG_FILE"
|
|
33
|
+
readonly ERROR_COOLIFY_NOT_INSTALLED="Coolify CLI is required but not installed"
|
|
34
|
+
readonly ERROR_NOT_CONFIGURED="Coolify CLI is not configured. Run 'coolify context add'"
|
|
35
|
+
readonly ERROR_CONTEXT_MISSING="Context configuration not found"
|
|
36
|
+
# Removed unused error constants to fix ShellCheck SC2034 warnings
|
|
37
|
+
|
|
38
|
+
# Success Messages
|
|
39
|
+
readonly SUCCESS_APP_DEPLOYED="Application deployed successfully"
|
|
40
|
+
readonly SUCCESS_SERVER_ADDED="Server added successfully"
|
|
41
|
+
readonly SUCCESS_DATABASE_CREATED="Database created successfully"
|
|
42
|
+
readonly SUCCESS_CONTEXT_ADDED="Context added successfully"
|
|
43
|
+
# Removed unused success constant to fix ShellCheck SC2034 warning
|
|
44
|
+
|
|
45
|
+
# ------------------------------------------------------------------------------
|
|
46
|
+
# UTILITY FUNCTIONS
|
|
47
|
+
# ------------------------------------------------------------------------------
|
|
48
|
+
|
|
49
|
+
print_error() {
|
|
50
|
+
local msg="$1"
|
|
51
|
+
echo -e "${RED}[ERROR]${NC} $msg" >&2
|
|
52
|
+
return 0
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
print_success() {
|
|
56
|
+
local msg="$1"
|
|
57
|
+
echo -e "${GREEN}[SUCCESS]${NC} $msg"
|
|
58
|
+
return 0
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
print_info() {
|
|
62
|
+
local msg="$1"
|
|
63
|
+
echo -e "${BLUE}[INFO]${NC} $msg"
|
|
64
|
+
return 0
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
print_warning() {
|
|
68
|
+
local msg="$1"
|
|
69
|
+
echo -e "${YELLOW}[WARNING]${NC} $msg"
|
|
70
|
+
return 0
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
# ------------------------------------------------------------------------------
|
|
74
|
+
# DEPENDENCY CHECKS
|
|
75
|
+
# ------------------------------------------------------------------------------
|
|
76
|
+
|
|
77
|
+
check_dependencies() {
|
|
78
|
+
local command="${1:-}"
|
|
79
|
+
|
|
80
|
+
if ! command -v coolify &> /dev/null; then
|
|
81
|
+
print_error "$ERROR_COOLIFY_NOT_INSTALLED"
|
|
82
|
+
print_info "Install Coolify CLI:"
|
|
83
|
+
print_info " curl -fsSL https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.sh | bash"
|
|
84
|
+
print_info " Or: go install github.com/coollabsio/coolify-cli/coolify@latest"
|
|
85
|
+
exit 1
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Skip context check for local development commands and help
|
|
89
|
+
case "$command" in
|
|
90
|
+
"help"|"-h"|"--help"|"dev"|"build"|"init"|"list-contexts"|"add-context"|"version")
|
|
91
|
+
print_info "Running local command (context not required)"
|
|
92
|
+
;;
|
|
93
|
+
*)
|
|
94
|
+
if ! coolify context list &> /dev/null; then
|
|
95
|
+
print_error "$ERROR_NOT_CONFIGURED"
|
|
96
|
+
print_info "Add a context: coolify context add <name> <url> <token>"
|
|
97
|
+
print_info "Or use local development commands: dev, build, init"
|
|
98
|
+
exit 1
|
|
99
|
+
fi
|
|
100
|
+
;;
|
|
101
|
+
esac
|
|
102
|
+
|
|
103
|
+
if ! command -v jq &> /dev/null; then
|
|
104
|
+
print_error "jq is required but not installed"
|
|
105
|
+
print_info "Install: brew install jq (macOS) or sudo apt install jq (Ubuntu)"
|
|
106
|
+
exit 1
|
|
107
|
+
fi
|
|
108
|
+
return 0
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
# ------------------------------------------------------------------------------
|
|
112
|
+
# CONFIGURATION LOADING
|
|
113
|
+
# ------------------------------------------------------------------------------
|
|
114
|
+
|
|
115
|
+
load_config() {
|
|
116
|
+
if [[ ! -f "$CONFIG_FILE" ]]; then
|
|
117
|
+
print_error "$ERROR_CONFIG_MISSING"
|
|
118
|
+
print_info "Create configuration: cp configs/coolify-cli-config.json.txt $CONFIG_FILE"
|
|
119
|
+
return 1
|
|
120
|
+
fi
|
|
121
|
+
return 0
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
get_context_config() {
|
|
125
|
+
local context_name="$1"
|
|
126
|
+
|
|
127
|
+
if ! jq -e ".contexts.\"$context_name\"" "$CONFIG_FILE" &>/dev/null; then
|
|
128
|
+
print_error "$ERROR_CONTEXT_MISSING: $context_name"
|
|
129
|
+
return 1
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
jq -r ".contexts.\"$context_name\"" "$CONFIG_FILE"
|
|
133
|
+
return 0
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
# ------------------------------------------------------------------------------
|
|
137
|
+
# LOCAL DEVELOPMENT FUNCTIONS
|
|
138
|
+
# ------------------------------------------------------------------------------
|
|
139
|
+
|
|
140
|
+
start_local_dev_server() {
|
|
141
|
+
local context_name="$1"
|
|
142
|
+
local project_path="${2:-.}"
|
|
143
|
+
local port="${3:-3000}"
|
|
144
|
+
|
|
145
|
+
print_info "Starting local development server..."
|
|
146
|
+
print_info "Project path: $project_path"
|
|
147
|
+
print_info "Port: $port"
|
|
148
|
+
|
|
149
|
+
cd "$project_path" || {
|
|
150
|
+
print_error "Failed to change to project directory: $project_path"
|
|
151
|
+
return 1
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
# Check if we have a Coolify context configured
|
|
155
|
+
if coolify context list &> /dev/null && [[ -n "$context_name" ]]; then
|
|
156
|
+
print_info "Coolify context available - using Coolify development mode"
|
|
157
|
+
print_info "Note: This will use local development, not Coolify deployment"
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
print_info "Starting local development server (no Coolify deployment required)"
|
|
161
|
+
start_local_server "$project_path" "$port"
|
|
162
|
+
return 0
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
start_local_server() {
|
|
166
|
+
local port="$2"
|
|
167
|
+
|
|
168
|
+
print_info "Starting local development server on http://localhost:$port"
|
|
169
|
+
|
|
170
|
+
# Check for common development setups
|
|
171
|
+
if [[ -f "package.json" ]]; then
|
|
172
|
+
if jq -e '.scripts.dev' package.json &>/dev/null; then
|
|
173
|
+
print_info "Found 'dev' script in package.json"
|
|
174
|
+
PORT="$port" npm run dev
|
|
175
|
+
elif jq -e '.scripts.start' package.json &>/dev/null; then
|
|
176
|
+
print_info "Found 'start' script in package.json"
|
|
177
|
+
PORT="$port" npm run start
|
|
178
|
+
elif [[ -f "server.js" ]]; then
|
|
179
|
+
print_info "Found server.js - starting with Node.js"
|
|
180
|
+
PORT="$port" node server.js
|
|
181
|
+
elif [[ -f "index.js" ]]; then
|
|
182
|
+
print_info "Found index.js - starting with Node.js"
|
|
183
|
+
PORT="$port" node index.js
|
|
184
|
+
else
|
|
185
|
+
print_warning "No development script found in package.json"
|
|
186
|
+
print_info "Available scripts:"
|
|
187
|
+
jq -r '.scripts | keys[]' package.json 2>/dev/null || echo " No scripts found"
|
|
188
|
+
return 1
|
|
189
|
+
fi
|
|
190
|
+
elif [[ -f "docker-compose.yml" ]] || [[ -f "docker-compose.yaml" ]]; then
|
|
191
|
+
print_info "Found docker-compose file - starting with Docker Compose"
|
|
192
|
+
docker-compose up --build
|
|
193
|
+
elif [[ -f "Dockerfile" ]]; then
|
|
194
|
+
print_info "Found Dockerfile - building and running container"
|
|
195
|
+
local image_name
|
|
196
|
+
image_name="local-dev-$(basename "$PWD")"
|
|
197
|
+
docker build -t "$image_name" .
|
|
198
|
+
docker run -p "$port:$port" "$image_name"
|
|
199
|
+
elif [[ -f "index.html" ]]; then
|
|
200
|
+
print_info "Found index.html - starting simple HTTP server"
|
|
201
|
+
if command -v python3 &> /dev/null; then
|
|
202
|
+
print_info "Using Python 3 HTTP server"
|
|
203
|
+
python3 -m http.server "$port"
|
|
204
|
+
elif command -v python &> /dev/null; then
|
|
205
|
+
print_info "Using Python 2 HTTP server"
|
|
206
|
+
python -m SimpleHTTPServer "$port"
|
|
207
|
+
elif command -v npx &> /dev/null; then
|
|
208
|
+
print_info "Using npx serve"
|
|
209
|
+
npx serve -p "$port"
|
|
210
|
+
else
|
|
211
|
+
print_error "No suitable HTTP server found"
|
|
212
|
+
print_info "Install Python or Node.js to serve static files"
|
|
213
|
+
return 1
|
|
214
|
+
fi
|
|
215
|
+
else
|
|
216
|
+
print_error "No recognizable project structure found"
|
|
217
|
+
print_info "Expected: package.json, docker-compose.yml, Dockerfile, or index.html"
|
|
218
|
+
return 1
|
|
219
|
+
fi
|
|
220
|
+
return 0
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
# ------------------------------------------------------------------------------
|
|
224
|
+
# COOLIFY MANAGEMENT FUNCTIONS
|
|
225
|
+
# ------------------------------------------------------------------------------
|
|
226
|
+
|
|
227
|
+
list_applications() {
|
|
228
|
+
local context_name="${1:-}"
|
|
229
|
+
|
|
230
|
+
print_info "Listing Coolify applications..."
|
|
231
|
+
|
|
232
|
+
if [[ -n "$context_name" ]]; then
|
|
233
|
+
coolify --context "$context_name" app list
|
|
234
|
+
else
|
|
235
|
+
coolify app list
|
|
236
|
+
fi
|
|
237
|
+
return 0
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
deploy_application() {
|
|
241
|
+
local context_name="$1"
|
|
242
|
+
local app_identifier="$2"
|
|
243
|
+
local force="${3:-false}"
|
|
244
|
+
|
|
245
|
+
print_info "Deploying application: $app_identifier"
|
|
246
|
+
|
|
247
|
+
local deploy_args=()
|
|
248
|
+
if [[ "$force" == "true" ]]; then
|
|
249
|
+
deploy_args+=(--force)
|
|
250
|
+
fi
|
|
251
|
+
|
|
252
|
+
if [[ -n "$context_name" ]]; then
|
|
253
|
+
deploy_args+=(--context "$context_name")
|
|
254
|
+
fi
|
|
255
|
+
|
|
256
|
+
# Try to deploy by name first, then by UUID
|
|
257
|
+
if coolify "${deploy_args[@]}" deploy name "$app_identifier"; then
|
|
258
|
+
print_success "$SUCCESS_APP_DEPLOYED: $app_identifier"
|
|
259
|
+
elif coolify "${deploy_args[@]}" deploy uuid "$app_identifier"; then
|
|
260
|
+
print_success "$SUCCESS_APP_DEPLOYED: $app_identifier"
|
|
261
|
+
else
|
|
262
|
+
print_error "$ERROR_DEPLOYMENT_FAILED: $app_identifier"
|
|
263
|
+
return 1
|
|
264
|
+
fi
|
|
265
|
+
return 0
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
get_application_info() {
|
|
269
|
+
local context_name="$1"
|
|
270
|
+
local app_uuid="$2"
|
|
271
|
+
|
|
272
|
+
print_info "Getting application information: $app_uuid"
|
|
273
|
+
|
|
274
|
+
if [[ -n "$context_name" ]]; then
|
|
275
|
+
coolify --context "$context_name" app get "$app_uuid"
|
|
276
|
+
else
|
|
277
|
+
coolify app get "$app_uuid"
|
|
278
|
+
fi
|
|
279
|
+
return 0
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
list_servers() {
|
|
283
|
+
local context_name="${1:-}"
|
|
284
|
+
|
|
285
|
+
print_info "Listing Coolify servers..."
|
|
286
|
+
|
|
287
|
+
if [[ -n "$context_name" ]]; then
|
|
288
|
+
coolify --context "$context_name" server list
|
|
289
|
+
else
|
|
290
|
+
coolify server list
|
|
291
|
+
fi
|
|
292
|
+
return 0
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
add_server() {
|
|
296
|
+
local context_name="$1"
|
|
297
|
+
local server_name="$2"
|
|
298
|
+
local server_ip="$3"
|
|
299
|
+
local private_key_uuid="$4"
|
|
300
|
+
local port="${5:-22}"
|
|
301
|
+
local user="${6:-root}"
|
|
302
|
+
local validate="${7:-false}"
|
|
303
|
+
|
|
304
|
+
print_info "Adding server: $server_name ($server_ip)"
|
|
305
|
+
|
|
306
|
+
local server_args=("$server_name" "$server_ip" "$private_key_uuid")
|
|
307
|
+
server_args+=(--port "$port" --user "$user")
|
|
308
|
+
|
|
309
|
+
if [[ "$validate" == "true" ]]; then
|
|
310
|
+
server_args+=(--validate)
|
|
311
|
+
fi
|
|
312
|
+
|
|
313
|
+
if [[ -n "$context_name" ]]; then
|
|
314
|
+
server_args+=(--context "$context_name")
|
|
315
|
+
fi
|
|
316
|
+
|
|
317
|
+
if coolify server add "${server_args[@]}"; then
|
|
318
|
+
print_success "$SUCCESS_SERVER_ADDED: $server_name"
|
|
319
|
+
else
|
|
320
|
+
print_error "Failed to add server: $server_name"
|
|
321
|
+
return 1
|
|
322
|
+
fi
|
|
323
|
+
return 0
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
list_databases() {
|
|
327
|
+
local context_name="${1:-}"
|
|
328
|
+
|
|
329
|
+
print_info "Listing Coolify databases..."
|
|
330
|
+
|
|
331
|
+
if [[ -n "$context_name" ]]; then
|
|
332
|
+
coolify --context "$context_name" database list
|
|
333
|
+
else
|
|
334
|
+
coolify database list
|
|
335
|
+
fi
|
|
336
|
+
return 0
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
create_database() {
|
|
340
|
+
local context_name="$1"
|
|
341
|
+
local db_type="$2"
|
|
342
|
+
local server_uuid="$3"
|
|
343
|
+
local project_uuid="$4"
|
|
344
|
+
local environment_name="$5"
|
|
345
|
+
local db_name="${6:-}"
|
|
346
|
+
local instant_deploy="${7:-false}"
|
|
347
|
+
|
|
348
|
+
print_info "Creating $db_type database: $db_name"
|
|
349
|
+
|
|
350
|
+
local db_args=("$db_type")
|
|
351
|
+
db_args+=(--server-uuid "$server_uuid")
|
|
352
|
+
db_args+=(--project-uuid "$project_uuid")
|
|
353
|
+
db_args+=(--environment-name "$environment_name")
|
|
354
|
+
|
|
355
|
+
if [[ -n "$db_name" ]]; then
|
|
356
|
+
db_args+=(--name "$db_name")
|
|
357
|
+
fi
|
|
358
|
+
|
|
359
|
+
if [[ "$instant_deploy" == "true" ]]; then
|
|
360
|
+
db_args+=(--instant-deploy)
|
|
361
|
+
fi
|
|
362
|
+
|
|
363
|
+
if [[ -n "$context_name" ]]; then
|
|
364
|
+
db_args+=(--context "$context_name")
|
|
365
|
+
fi
|
|
366
|
+
|
|
367
|
+
if coolify database create "${db_args[@]}"; then
|
|
368
|
+
print_success "$SUCCESS_DATABASE_CREATED: $db_name"
|
|
369
|
+
else
|
|
370
|
+
print_error "Failed to create database: $db_name"
|
|
371
|
+
return 1
|
|
372
|
+
fi
|
|
373
|
+
return 0
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
# ------------------------------------------------------------------------------
|
|
377
|
+
# CONTEXT MANAGEMENT FUNCTIONS
|
|
378
|
+
# ------------------------------------------------------------------------------
|
|
379
|
+
|
|
380
|
+
list_contexts() {
|
|
381
|
+
print_info "Available Coolify contexts:"
|
|
382
|
+
|
|
383
|
+
if [[ -f "$CONFIG_FILE" ]]; then
|
|
384
|
+
jq -r '.contexts | keys[]' "$CONFIG_FILE" | while read -r context; do
|
|
385
|
+
local context_info
|
|
386
|
+
context_info=$(jq -r ".contexts.\"$context\"" "$CONFIG_FILE")
|
|
387
|
+
local url
|
|
388
|
+
url=$(echo "$context_info" | jq -r '.url // "Unknown URL"')
|
|
389
|
+
local description
|
|
390
|
+
description=$(echo "$context_info" | jq -r '.description // "No description"')
|
|
391
|
+
|
|
392
|
+
echo " - $context ($url): $description"
|
|
393
|
+
done
|
|
394
|
+
else
|
|
395
|
+
print_warning "No configuration file found"
|
|
396
|
+
fi
|
|
397
|
+
|
|
398
|
+
print_info ""
|
|
399
|
+
print_info "Coolify CLI contexts:"
|
|
400
|
+
coolify context list 2>/dev/null || print_warning "No Coolify CLI contexts configured"
|
|
401
|
+
return 0
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
add_context() {
|
|
405
|
+
local context_name="$1"
|
|
406
|
+
local url="$2"
|
|
407
|
+
local token="$3"
|
|
408
|
+
local set_default="${4:-false}"
|
|
409
|
+
|
|
410
|
+
print_info "Adding Coolify context: $context_name"
|
|
411
|
+
print_info "URL: $url"
|
|
412
|
+
|
|
413
|
+
local context_args=("$context_name" "$url" "$token")
|
|
414
|
+
|
|
415
|
+
if [[ "$set_default" == "true" ]]; then
|
|
416
|
+
context_args+=(--default)
|
|
417
|
+
fi
|
|
418
|
+
|
|
419
|
+
if coolify context add "${context_args[@]}"; then
|
|
420
|
+
print_success "$SUCCESS_CONTEXT_ADDED: $context_name"
|
|
421
|
+
|
|
422
|
+
# Add to our configuration file if it exists
|
|
423
|
+
if [[ -f "$CONFIG_FILE" ]]; then
|
|
424
|
+
jq --arg name "$context_name" --arg url "$url" --arg desc "Coolify instance at $url" \
|
|
425
|
+
'.contexts[$name] = {url: $url, description: $desc}' \
|
|
426
|
+
"$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
|
|
427
|
+
fi
|
|
428
|
+
else
|
|
429
|
+
print_error "Failed to add context: $context_name"
|
|
430
|
+
return 1
|
|
431
|
+
fi
|
|
432
|
+
return 0
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
# ------------------------------------------------------------------------------
|
|
436
|
+
# BUILD FUNCTIONS
|
|
437
|
+
# ------------------------------------------------------------------------------
|
|
438
|
+
|
|
439
|
+
build_project() {
|
|
440
|
+
local project_path="${2:-.}"
|
|
441
|
+
|
|
442
|
+
print_info "Building project locally..."
|
|
443
|
+
print_info "Project path: $project_path"
|
|
444
|
+
|
|
445
|
+
cd "$project_path" || {
|
|
446
|
+
print_error "Failed to change to project directory: $project_path"
|
|
447
|
+
return 1
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
# Check for common build setups
|
|
451
|
+
if [[ -f "package.json" ]]; then
|
|
452
|
+
if jq -e '.scripts.build' package.json &>/dev/null; then
|
|
453
|
+
print_info "Found 'build' script in package.json"
|
|
454
|
+
npm run build
|
|
455
|
+
local exit_code=$?
|
|
456
|
+
if [[ $exit_code -eq 0 ]]; then
|
|
457
|
+
print_success "Local build completed successfully"
|
|
458
|
+
|
|
459
|
+
# Show build output location
|
|
460
|
+
if [[ -d "dist" ]]; then
|
|
461
|
+
print_info "Build output: ./dist/"
|
|
462
|
+
elif [[ -d "build" ]]; then
|
|
463
|
+
print_info "Build output: ./build/"
|
|
464
|
+
elif [[ -d ".next" ]]; then
|
|
465
|
+
print_info "Build output: ./.next/"
|
|
466
|
+
elif [[ -d "out" ]]; then
|
|
467
|
+
print_info "Build output: ./out/"
|
|
468
|
+
fi
|
|
469
|
+
else
|
|
470
|
+
print_error "Local build failed"
|
|
471
|
+
return 1
|
|
472
|
+
fi
|
|
473
|
+
else
|
|
474
|
+
print_warning "No 'build' script found in package.json"
|
|
475
|
+
print_info "Available scripts:"
|
|
476
|
+
jq -r '.scripts | keys[]' package.json 2>/dev/null || echo " No scripts found"
|
|
477
|
+
return 1
|
|
478
|
+
fi
|
|
479
|
+
elif [[ -f "docker-compose.yml" ]] || [[ -f "docker-compose.yaml" ]]; then
|
|
480
|
+
print_info "Found docker-compose file - building services"
|
|
481
|
+
docker-compose build
|
|
482
|
+
elif [[ -f "Dockerfile" ]]; then
|
|
483
|
+
print_info "Found Dockerfile - building container"
|
|
484
|
+
local image_name
|
|
485
|
+
image_name="local-build-$(basename "$PWD")"
|
|
486
|
+
docker build -t "$image_name" .
|
|
487
|
+
print_success "Docker image built: $image_name"
|
|
488
|
+
else
|
|
489
|
+
print_warning "No build configuration found"
|
|
490
|
+
print_info "This appears to be a static project or requires manual build setup"
|
|
491
|
+
return 0
|
|
492
|
+
fi
|
|
493
|
+
return 0
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
# ------------------------------------------------------------------------------
|
|
497
|
+
# HELP FUNCTION
|
|
498
|
+
# ------------------------------------------------------------------------------
|
|
499
|
+
|
|
500
|
+
show_help() {
|
|
501
|
+
cat << 'EOF'
|
|
502
|
+
Coolify CLI Helper - Comprehensive self-hosted deployment and management
|
|
503
|
+
|
|
504
|
+
USAGE:
|
|
505
|
+
./.agent/scripts/coolify-cli-helper.sh [COMMAND] [CONTEXT] [OPTIONS...]
|
|
506
|
+
|
|
507
|
+
COMMANDS:
|
|
508
|
+
Local Development (No Context Required):
|
|
509
|
+
dev [context] [path] [port] - Start local development server
|
|
510
|
+
build [context] [path] - Build project locally
|
|
511
|
+
init [context] [path] [type] - Initialize project structure
|
|
512
|
+
|
|
513
|
+
Application Management:
|
|
514
|
+
list-apps [context] - List all applications
|
|
515
|
+
deploy [context] [app-name-or-uuid] [force] - Deploy application
|
|
516
|
+
get-app [context] [app-uuid] - Get application details
|
|
517
|
+
app-logs [context] [app-uuid] - Get application logs
|
|
518
|
+
|
|
519
|
+
Server Management:
|
|
520
|
+
list-servers [context] - List all servers
|
|
521
|
+
add-server [context] [name] [ip] [key-uuid] [port] [user] [validate] - Add server
|
|
522
|
+
get-server [context] [server-uuid] - Get server details
|
|
523
|
+
|
|
524
|
+
Database Management:
|
|
525
|
+
list-databases [context] - List all databases
|
|
526
|
+
create-db [context] [type] [server-uuid] [project-uuid] [env] [name] [deploy] - Create database
|
|
527
|
+
|
|
528
|
+
Context Management:
|
|
529
|
+
list-contexts - List configured contexts
|
|
530
|
+
add-context [name] [url] [token] [default] - Add Coolify context
|
|
531
|
+
use-context [name] - Switch to context
|
|
532
|
+
|
|
533
|
+
General:
|
|
534
|
+
help - Show this help message
|
|
535
|
+
version - Show Coolify CLI version
|
|
536
|
+
|
|
537
|
+
PARAMETERS:
|
|
538
|
+
context - Context name from configuration (optional for most commands)
|
|
539
|
+
path - Project path (default: current directory)
|
|
540
|
+
port - Development server port (default: 3000)
|
|
541
|
+
type - Project type: nodejs, docker, static (for init)
|
|
542
|
+
force - Force deployment (true/false, default: false)
|
|
543
|
+
validate - Validate server after adding (true/false, default: false)
|
|
544
|
+
|
|
545
|
+
EXAMPLES:
|
|
546
|
+
# Local development (no context required)
|
|
547
|
+
$0 dev local ./my-app 3000
|
|
548
|
+
$0 build local ./my-app
|
|
549
|
+
|
|
550
|
+
# Coolify operations (requires context)
|
|
551
|
+
$0 add-context production https://coolify.example.com your-api-token true
|
|
552
|
+
$0 list-apps production
|
|
553
|
+
$0 deploy production my-application
|
|
554
|
+
$0 create-db production postgresql server-uuid project-uuid main mydb true
|
|
555
|
+
|
|
556
|
+
# Server management
|
|
557
|
+
$0 add-server production myserver 192.168.1.100 key-uuid 22 root true
|
|
558
|
+
$0 list-servers production
|
|
559
|
+
|
|
560
|
+
CONFIGURATION:
|
|
561
|
+
File: configs/coolify-cli-config.json
|
|
562
|
+
Example: cp configs/coolify-cli-config.json.txt configs/coolify-cli-config.json
|
|
563
|
+
|
|
564
|
+
REQUIREMENTS:
|
|
565
|
+
- Coolify CLI installed (context optional for local development)
|
|
566
|
+
- jq JSON processor
|
|
567
|
+
- Docker (for Docker-based projects)
|
|
568
|
+
- Node.js (for Node.js projects)
|
|
569
|
+
- Valid Coolify API token (for deployment commands only)
|
|
570
|
+
|
|
571
|
+
LOCAL DEVELOPMENT:
|
|
572
|
+
The helper supports immediate local development without Coolify setup:
|
|
573
|
+
- Node.js projects with package.json
|
|
574
|
+
- Docker projects with Dockerfile or docker-compose.yml
|
|
575
|
+
- Static HTML projects
|
|
576
|
+
- Automatic framework detection and server startup
|
|
577
|
+
|
|
578
|
+
For more information, see: https://github.com/coollabsio/coolify-cli
|
|
579
|
+
EOF
|
|
580
|
+
return 0
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
# ------------------------------------------------------------------------------
|
|
584
|
+
# MAIN FUNCTION
|
|
585
|
+
# ------------------------------------------------------------------------------
|
|
586
|
+
|
|
587
|
+
main() {
|
|
588
|
+
local command="${1:-help}"
|
|
589
|
+
local context_name="${2:-}"
|
|
590
|
+
local target="${3:-}"
|
|
591
|
+
local options="${4:-}"
|
|
592
|
+
|
|
593
|
+
case "$command" in
|
|
594
|
+
"dev")
|
|
595
|
+
local project_path="$target"
|
|
596
|
+
local port="$options"
|
|
597
|
+
start_local_dev_server "$context_name" "$project_path" "$port"
|
|
598
|
+
;;
|
|
599
|
+
"build")
|
|
600
|
+
local project_path="$target"
|
|
601
|
+
build_project "$context_name" "$project_path"
|
|
602
|
+
;;
|
|
603
|
+
"list-apps")
|
|
604
|
+
list_applications "$context_name"
|
|
605
|
+
;;
|
|
606
|
+
"deploy")
|
|
607
|
+
local app_identifier="$target"
|
|
608
|
+
local force="$options"
|
|
609
|
+
deploy_application "$context_name" "$app_identifier" "$force"
|
|
610
|
+
;;
|
|
611
|
+
"get-app")
|
|
612
|
+
local app_uuid="$target"
|
|
613
|
+
get_application_info "$context_name" "$app_uuid"
|
|
614
|
+
;;
|
|
615
|
+
"list-servers")
|
|
616
|
+
list_servers "$context_name"
|
|
617
|
+
;;
|
|
618
|
+
"add-server")
|
|
619
|
+
local server_name="$target"
|
|
620
|
+
local server_ip="$options"
|
|
621
|
+
local private_key_uuid="${5:-}"
|
|
622
|
+
local port="${6:-22}"
|
|
623
|
+
local user="${7:-root}"
|
|
624
|
+
local validate="${8:-false}"
|
|
625
|
+
add_server "$context_name" "$server_name" "$server_ip" "$private_key_uuid" "$port" "$user" "$validate"
|
|
626
|
+
;;
|
|
627
|
+
"list-databases")
|
|
628
|
+
list_databases "$context_name"
|
|
629
|
+
;;
|
|
630
|
+
"create-db")
|
|
631
|
+
local db_type="$target"
|
|
632
|
+
local server_uuid="$options"
|
|
633
|
+
local project_uuid="${5:-}"
|
|
634
|
+
local environment_name="${6:-}"
|
|
635
|
+
local db_name="${7:-}"
|
|
636
|
+
local instant_deploy="${8:-false}"
|
|
637
|
+
create_database "$context_name" "$db_type" "$server_uuid" "$project_uuid" "$environment_name" "$db_name" "$instant_deploy"
|
|
638
|
+
;;
|
|
639
|
+
"list-contexts")
|
|
640
|
+
list_contexts
|
|
641
|
+
;;
|
|
642
|
+
"add-context")
|
|
643
|
+
local context_name="$target"
|
|
644
|
+
local url="$options"
|
|
645
|
+
local token="${5:-}"
|
|
646
|
+
local set_default="${6:-false}"
|
|
647
|
+
add_context "$context_name" "$url" "$token" "$set_default"
|
|
648
|
+
;;
|
|
649
|
+
"use-context")
|
|
650
|
+
local context_name="$target"
|
|
651
|
+
coolify context use "$context_name"
|
|
652
|
+
;;
|
|
653
|
+
"version")
|
|
654
|
+
coolify --version
|
|
655
|
+
;;
|
|
656
|
+
"help"|"-h"|"--help")
|
|
657
|
+
show_help
|
|
658
|
+
;;
|
|
659
|
+
*)
|
|
660
|
+
print_error "$ERROR_UNKNOWN_COMMAND $command"
|
|
661
|
+
print_info "Use '$0 help' for usage information"
|
|
662
|
+
exit 1
|
|
663
|
+
;;
|
|
664
|
+
esac
|
|
665
|
+
|
|
666
|
+
return 0
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
# Initialize
|
|
670
|
+
check_dependencies "${1:-help}"
|
|
671
|
+
load_config
|
|
672
|
+
|
|
673
|
+
# Execute main function
|
|
674
|
+
main "$@"
|