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,522 @@
|
|
|
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
|
+
# AmpCode CLI Integration Script
|
|
5
|
+
# Professional AI coding assistant integration
|
|
6
|
+
#
|
|
7
|
+
# Usage: ./ampcode-cli.sh [command] [options]
|
|
8
|
+
# Commands:
|
|
9
|
+
# install - Install AmpCode CLI
|
|
10
|
+
# setup - Configure AmpCode with API key
|
|
11
|
+
# scan - Run code scan and analysis
|
|
12
|
+
# review - Get AI code review
|
|
13
|
+
# fix - Apply AI-suggested fixes
|
|
14
|
+
# status - Check AmpCode status
|
|
15
|
+
#
|
|
16
|
+
# Author: AI DevOps Framework
|
|
17
|
+
# Version: 1.0.0
|
|
18
|
+
# License: MIT
|
|
19
|
+
|
|
20
|
+
# Colors for output
|
|
21
|
+
readonly GREEN='\033[0;32m'
|
|
22
|
+
readonly BLUE='\033[0;34m'
|
|
23
|
+
readonly YELLOW='\033[1;33m'
|
|
24
|
+
readonly RED='\033[0;31m'
|
|
25
|
+
readonly PURPLE='\033[0;35m'
|
|
26
|
+
readonly NC='\033[0m' # No Color
|
|
27
|
+
|
|
28
|
+
# Common constants
|
|
29
|
+
readonly ERROR_UNKNOWN_COMMAND="Unknown command:"
|
|
30
|
+
# Configuration
|
|
31
|
+
readonly AMPCODE_API_CONFIG="configs/ampcode-config.json"
|
|
32
|
+
readonly AMPCODE_RESULTS_DIR=".agent/tmp/ampcode"
|
|
33
|
+
|
|
34
|
+
# Print functions
|
|
35
|
+
print_success() {
|
|
36
|
+
local message="$1"
|
|
37
|
+
echo -e "${GREEN}✅ $message${NC}"
|
|
38
|
+
return 0
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
print_info() {
|
|
42
|
+
local message="$1"
|
|
43
|
+
echo -e "${BLUE}ℹ️ $message${NC}"
|
|
44
|
+
return 0
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
print_warning() {
|
|
48
|
+
local message="$1"
|
|
49
|
+
echo -e "${YELLOW}⚠️ $message${NC}"
|
|
50
|
+
return 0
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
print_error() {
|
|
54
|
+
local message="$1"
|
|
55
|
+
echo -e "${RED}❌ $message${NC}" >&2
|
|
56
|
+
return 0
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
print_header() {
|
|
60
|
+
local message="$1"
|
|
61
|
+
echo -e "${PURPLE}🤖 $message${NC}"
|
|
62
|
+
return 0
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Ensure results directory exists
|
|
66
|
+
ensure_results_dir() {
|
|
67
|
+
mkdir -p "$AMPCODE_RESULTS_DIR"
|
|
68
|
+
return 0
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
# Load API configuration
|
|
72
|
+
load_api_config() {
|
|
73
|
+
# Check environment variable first (set via mcp-env.sh, sourced by .zshrc)
|
|
74
|
+
if [[ -n "${AMPCODE_API_KEY:-}" ]]; then
|
|
75
|
+
print_info "Using AmpCode API key from environment"
|
|
76
|
+
return 0
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
# Fallback to config file
|
|
80
|
+
if [[ -f "$AMPCODE_API_CONFIG" ]] && command -v jq >/dev/null 2>&1; then
|
|
81
|
+
local api_key
|
|
82
|
+
api_key=$(jq -r '.api_key // empty' "$AMPCODE_API_CONFIG" 2>/dev/null)
|
|
83
|
+
if [[ -n "$api_key" ]]; then
|
|
84
|
+
export AMPCODE_API_KEY="$api_key"
|
|
85
|
+
print_info "Loaded AmpCode API key from configuration"
|
|
86
|
+
return 0
|
|
87
|
+
fi
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
print_warning "AMPCODE_API_KEY not found in environment"
|
|
91
|
+
print_info "Add to ~/.config/aidevops/mcp-env.sh:"
|
|
92
|
+
print_info " export AMPCODE_API_KEY=\"your-api-key\""
|
|
93
|
+
return 1
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
# Check if AmpCode CLI is installed
|
|
97
|
+
check_ampcode_cli() {
|
|
98
|
+
local ampcode_cmd="amp" # Likely CLI command name
|
|
99
|
+
|
|
100
|
+
if command -v "$ampcode_cmd" &> /dev/null; then
|
|
101
|
+
local version
|
|
102
|
+
version=$("$ampcode_cmd" --version 2>/dev/null || echo "unknown")
|
|
103
|
+
print_success "AmpCode CLI installed: $version"
|
|
104
|
+
return 0
|
|
105
|
+
else
|
|
106
|
+
print_warning "AmpCode CLI not found"
|
|
107
|
+
print_info "Expected CLI command: amp"
|
|
108
|
+
return 1
|
|
109
|
+
fi
|
|
110
|
+
return 0
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
# Install AmpCode CLI
|
|
114
|
+
install_ampcode_cli() {
|
|
115
|
+
print_header "Installing AmpCode CLI"
|
|
116
|
+
|
|
117
|
+
# Check if already installed
|
|
118
|
+
if check_ampcode_cli; then
|
|
119
|
+
print_info "AmpCode CLI is already installed"
|
|
120
|
+
return 0
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
# Detect platform and install method
|
|
124
|
+
local platform
|
|
125
|
+
case "$(uname -s)" in
|
|
126
|
+
Darwin*)
|
|
127
|
+
platform="macOS"
|
|
128
|
+
if command -v brew &> /dev/null; then
|
|
129
|
+
print_info "Installing via Homebrew..."
|
|
130
|
+
# Install via npm as common method
|
|
131
|
+
if command -v npm &> /dev/null; then
|
|
132
|
+
# NOSONAR - npm scripts required for CLI binary installation
|
|
133
|
+
npm install -g @ampcode/cli
|
|
134
|
+
else
|
|
135
|
+
print_error "npm not found. Please install Node.js first"
|
|
136
|
+
return 1
|
|
137
|
+
fi
|
|
138
|
+
else
|
|
139
|
+
print_error "Homebrew not found. Please install Homebrew first"
|
|
140
|
+
return 1
|
|
141
|
+
fi
|
|
142
|
+
;;
|
|
143
|
+
Linux*)
|
|
144
|
+
platform="Linux"
|
|
145
|
+
if command -v npm &> /dev/null; then
|
|
146
|
+
print_info "Installing via npm..."
|
|
147
|
+
# NOSONAR - npm scripts required for CLI binary installation
|
|
148
|
+
npm install -g @ampcode/cli
|
|
149
|
+
else
|
|
150
|
+
print_error "npm not found. Please install Node.js first"
|
|
151
|
+
return 1
|
|
152
|
+
fi
|
|
153
|
+
;;
|
|
154
|
+
*)
|
|
155
|
+
print_error "Unsupported platform: $(uname -s)"
|
|
156
|
+
return 1
|
|
157
|
+
;;
|
|
158
|
+
esac
|
|
159
|
+
|
|
160
|
+
# Verify installation
|
|
161
|
+
if check_ampcode_cli; then
|
|
162
|
+
print_success "AmpCode CLI installed successfully on $platform"
|
|
163
|
+
return 0
|
|
164
|
+
else
|
|
165
|
+
print_error "Installation failed"
|
|
166
|
+
print_info "Alternative: Visit https://ampcode.com to download CLI"
|
|
167
|
+
return 1
|
|
168
|
+
fi
|
|
169
|
+
return 0
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
# Setup AmpCode configuration
|
|
173
|
+
setup_ampcode_config() {
|
|
174
|
+
print_header "Setting Up AmpCode Configuration"
|
|
175
|
+
|
|
176
|
+
# Load existing config
|
|
177
|
+
if ! load_api_config; then
|
|
178
|
+
print_info "Please visit https://ampcode.com to get your API key"
|
|
179
|
+
print_info "Then run: Add AMPCODE_API_KEY to ~/.config/aidevops/mcp-env.sh"
|
|
180
|
+
return 1
|
|
181
|
+
fi
|
|
182
|
+
|
|
183
|
+
# Create config file
|
|
184
|
+
mkdir -p configs
|
|
185
|
+
cat > "$AMPCODE_API_CONFIG" << 'EOF'
|
|
186
|
+
{
|
|
187
|
+
"api_key": "",
|
|
188
|
+
"organisation": "",
|
|
189
|
+
"workspace": "",
|
|
190
|
+
"preferences": {
|
|
191
|
+
"auto_review": true,
|
|
192
|
+
"severity_threshold": "medium",
|
|
193
|
+
"focus_areas": ["security", "performance", "maintainability"]
|
|
194
|
+
}
|
|
195
|
+
return 0
|
|
196
|
+
}
|
|
197
|
+
EOF
|
|
198
|
+
|
|
199
|
+
# Update config with API key
|
|
200
|
+
if command -v jq >/dev/null 2>&1 && [[ -n "$AMPCODE_API_KEY" ]]; then
|
|
201
|
+
jq --arg api_key "$AMPCODE_API_KEY" '.api_key = $api_key' "$AMPCODE_API_CONFIG" > "${AMPCODE_API_CONFIG}.tmp"
|
|
202
|
+
mv "${AMPCODE_API_CONFIG}.tmp" "$AMPCODE_API_CONFIG"
|
|
203
|
+
fi
|
|
204
|
+
|
|
205
|
+
print_success "AmpCode configuration created: $AMPCODE_API_CONFIG"
|
|
206
|
+
print_info "You can customize the configuration file as needed"
|
|
207
|
+
return 0
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
# Run code scan
|
|
211
|
+
run_code_scan() {
|
|
212
|
+
local target_path="${1:-.}"
|
|
213
|
+
local output_format="${2:-json}"
|
|
214
|
+
|
|
215
|
+
print_header "Running AmpCode Code Scan"
|
|
216
|
+
|
|
217
|
+
# Ensure CLI is installed
|
|
218
|
+
if ! check_ampcode_cli; then
|
|
219
|
+
print_error "AmpCode CLI not installed"
|
|
220
|
+
print_info "Run: $0 install"
|
|
221
|
+
return 1
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
# Load API configuration
|
|
225
|
+
if ! load_api_config; then
|
|
226
|
+
print_error "API configuration not found"
|
|
227
|
+
print_info "Run: $0 setup"
|
|
228
|
+
return 1
|
|
229
|
+
fi
|
|
230
|
+
|
|
231
|
+
ensure_results_dir
|
|
232
|
+
local output_file="$AMPCODE_RESULTS_DIR/scan-$(date +%Y%m%d-%H%M%S).$output_format"
|
|
233
|
+
|
|
234
|
+
print_info "Scanning path: $target_path"
|
|
235
|
+
print_info "Output format: $output_format"
|
|
236
|
+
|
|
237
|
+
local cmd="amp scan --path $target_path --format $output_format --output $output_file"
|
|
238
|
+
print_info "Executing: $cmd"
|
|
239
|
+
|
|
240
|
+
local start_time
|
|
241
|
+
start_time=$(date +%s)
|
|
242
|
+
eval "$cmd"
|
|
243
|
+
local exit_code=$?
|
|
244
|
+
local end_time
|
|
245
|
+
end_time=$(date +%s)
|
|
246
|
+
local duration
|
|
247
|
+
duration=$((end_time - start_time))
|
|
248
|
+
|
|
249
|
+
if [[ $exit_code -eq 0 ]]; then
|
|
250
|
+
print_success "Code scan completed in ${duration}s"
|
|
251
|
+
print_info "Results saved to: $output_file"
|
|
252
|
+
|
|
253
|
+
# Show summary
|
|
254
|
+
if [[ -f "$output_file" && "$output_format" == "json" ]] && command -v jq >/dev/null 2>&1; then
|
|
255
|
+
local issues
|
|
256
|
+
issues=$(jq '.issues | length // 0' "$output_file" 2>/dev/null || echo "0")
|
|
257
|
+
local suggestions
|
|
258
|
+
suggestions=$(jq '.suggestions | length // 0' "$output_file" 2>/dev/null || echo "0")
|
|
259
|
+
print_info "Issues found: $issues"
|
|
260
|
+
print_info "AI suggestions: $suggestions"
|
|
261
|
+
fi
|
|
262
|
+
return 0
|
|
263
|
+
else
|
|
264
|
+
print_error "Code scan failed after ${duration}s"
|
|
265
|
+
return 1
|
|
266
|
+
fi
|
|
267
|
+
return 0
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
# Get AI code review
|
|
271
|
+
get_ai_review() {
|
|
272
|
+
local target_path="${1:-.}"
|
|
273
|
+
local severity_level="${2:-medium}"
|
|
274
|
+
|
|
275
|
+
print_header "Getting AmpCode AI Review"
|
|
276
|
+
|
|
277
|
+
# Ensure CLI is installed
|
|
278
|
+
if ! check_ampcode_cli; then
|
|
279
|
+
print_error "AmpCode CLI not installed"
|
|
280
|
+
return 1
|
|
281
|
+
fi
|
|
282
|
+
|
|
283
|
+
# Load API configuration
|
|
284
|
+
if ! load_api_config; then
|
|
285
|
+
print_error "API configuration not found"
|
|
286
|
+
return 1
|
|
287
|
+
fi
|
|
288
|
+
|
|
289
|
+
ensure_results_dir
|
|
290
|
+
local review_file="$AMPCODE_RESULTS_DIR/review-$(date +%Y%m%d-%H%M%S).md"
|
|
291
|
+
|
|
292
|
+
print_info "Reviewing path: $target_path"
|
|
293
|
+
print_info "Severity level: $severity_level"
|
|
294
|
+
|
|
295
|
+
local cmd="amp review --path $target_path --severity $severity_level --output $review_file"
|
|
296
|
+
print_info "Executing: $cmd"
|
|
297
|
+
|
|
298
|
+
local start_time
|
|
299
|
+
start_time=$(date +%s)
|
|
300
|
+
eval "$cmd"
|
|
301
|
+
local exit_code=$?
|
|
302
|
+
local end_time
|
|
303
|
+
end_time=$(date +%s)
|
|
304
|
+
local duration
|
|
305
|
+
duration=$((end_time - start_time))
|
|
306
|
+
|
|
307
|
+
if [[ $exit_code -eq 0 ]]; then
|
|
308
|
+
print_success "AI review completed in ${duration}s"
|
|
309
|
+
print_info "Review saved to: $review_file"
|
|
310
|
+
|
|
311
|
+
# Show preview
|
|
312
|
+
if [[ -f "$review_file" ]]; then
|
|
313
|
+
print_info "Review preview:"
|
|
314
|
+
echo ""
|
|
315
|
+
head -20 "$review_file"
|
|
316
|
+
echo ""
|
|
317
|
+
local total_lines
|
|
318
|
+
total_lines=$(wc -l < "$review_file")
|
|
319
|
+
print_info "Total review lines: $total_lines"
|
|
320
|
+
fi
|
|
321
|
+
return 0
|
|
322
|
+
else
|
|
323
|
+
print_error "AI review failed after ${duration}s"
|
|
324
|
+
return 1
|
|
325
|
+
fi
|
|
326
|
+
return 0
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
# Apply AI-suggested fixes
|
|
330
|
+
apply_fixes() {
|
|
331
|
+
local target_path="${1:-.}"
|
|
332
|
+
local auto_apply="${2:-false}"
|
|
333
|
+
|
|
334
|
+
print_header "Applying AmpCode AI Fixes"
|
|
335
|
+
|
|
336
|
+
# Ensure CLI is installed
|
|
337
|
+
if ! check_ampcode_cli; then
|
|
338
|
+
print_error "AmpCode CLI not installed"
|
|
339
|
+
return 1
|
|
340
|
+
fi
|
|
341
|
+
|
|
342
|
+
# Load API configuration
|
|
343
|
+
if ! load_api_config; then
|
|
344
|
+
print_error "API configuration not found"
|
|
345
|
+
return 1
|
|
346
|
+
fi
|
|
347
|
+
|
|
348
|
+
ensure_results_dir
|
|
349
|
+
local fixes_file="$AMPCODE_RESULTS_DIR/fixes-$(date +%Y%m%d-%H%M%S).json"
|
|
350
|
+
|
|
351
|
+
print_info "Analyzing fixes for: $target_path"
|
|
352
|
+
|
|
353
|
+
local cmd="amp analyze --path $target_path --suggest-fixes --output $fixes_file"
|
|
354
|
+
print_info "Executing: $cmd"
|
|
355
|
+
|
|
356
|
+
local start_time
|
|
357
|
+
start_time=$(date +%s)
|
|
358
|
+
eval "$cmd"
|
|
359
|
+
local exit_code=$?
|
|
360
|
+
local end_time
|
|
361
|
+
end_time=$(date +%s)
|
|
362
|
+
local duration
|
|
363
|
+
duration=$((end_time - start_time))
|
|
364
|
+
|
|
365
|
+
if [[ $exit_code -eq 0 && -f "$fixes_file" ]]; then
|
|
366
|
+
print_success "Fix analysis completed in ${duration}s"
|
|
367
|
+
|
|
368
|
+
if command -v jq >/dev/null 2>&1; then
|
|
369
|
+
local fixes_count
|
|
370
|
+
fixes_count=$(jq '.fixes | length // 0' "$fixes_file" 2>/dev/null || echo "0")
|
|
371
|
+
print_info "AI fixes available: $fixes_count"
|
|
372
|
+
fi
|
|
373
|
+
|
|
374
|
+
if [[ "$auto_apply" == "true" ]]; then
|
|
375
|
+
print_warning "Auto-apply enabled - Apply with caution!"
|
|
376
|
+
print_info "Applying fixes..."
|
|
377
|
+
|
|
378
|
+
local apply_cmd="amp apply-fixes --file $fixes_file"
|
|
379
|
+
eval "$apply_cmd"
|
|
380
|
+
local apply_exit_code=$?
|
|
381
|
+
|
|
382
|
+
if [[ $apply_exit_code -eq 0 ]]; then
|
|
383
|
+
print_success "Fixes applied successfully"
|
|
384
|
+
else
|
|
385
|
+
print_error "Failed to apply some fixes"
|
|
386
|
+
return 1
|
|
387
|
+
fi
|
|
388
|
+
else
|
|
389
|
+
print_info "Use --auto-apply flag to automatically apply fixes"
|
|
390
|
+
print_info "Review fixes file: $fixes_file"
|
|
391
|
+
fi
|
|
392
|
+
|
|
393
|
+
return 0
|
|
394
|
+
else
|
|
395
|
+
print_error "Fix analysis failed after ${duration}s"
|
|
396
|
+
return 1
|
|
397
|
+
fi
|
|
398
|
+
return 0
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
# Show AmpCode status
|
|
402
|
+
show_status() {
|
|
403
|
+
print_header "AmpCode CLI Status"
|
|
404
|
+
|
|
405
|
+
# Check CLI installation
|
|
406
|
+
if check_ampcode_cli; then
|
|
407
|
+
echo ""
|
|
408
|
+
else
|
|
409
|
+
print_info "Run: $0 install"
|
|
410
|
+
echo ""
|
|
411
|
+
fi
|
|
412
|
+
|
|
413
|
+
# Check configuration
|
|
414
|
+
echo "Configuration Status:"
|
|
415
|
+
if load_api_config; then
|
|
416
|
+
print_success "API Key: ✅ Configured"
|
|
417
|
+
else
|
|
418
|
+
print_warning "API Key: ⚠️ Not configured"
|
|
419
|
+
print_info "Run: $0 setup"
|
|
420
|
+
fi
|
|
421
|
+
|
|
422
|
+
if [[ -f "$AMPCODE_API_CONFIG" ]]; then
|
|
423
|
+
print_success "Config File: ✅ $AMPCODE_API_CONFIG"
|
|
424
|
+
else
|
|
425
|
+
print_warning "Config File: ❌ Not found"
|
|
426
|
+
fi
|
|
427
|
+
|
|
428
|
+
echo ""
|
|
429
|
+
print_info "Recent Results:"
|
|
430
|
+
find "$AMPCODE_RESULTS_DIR" -name "*.json" -o -name "*.md" 2>/dev/null | sort -r | head -3 | while read -r file; do
|
|
431
|
+
local age
|
|
432
|
+
age=$(find "$file" -mmin +1 2>/dev/null || echo "0")
|
|
433
|
+
local size
|
|
434
|
+
size=$(du -h "$file" 2>/dev/null | cut -f1 || echo "unknown")
|
|
435
|
+
local type
|
|
436
|
+
type=$(basename "$file" | sed 's/.*\.//' | sed 's/-.*/./')
|
|
437
|
+
print_info " $(basename "$file") (${type} - $size)"
|
|
438
|
+
done
|
|
439
|
+
|
|
440
|
+
return 0
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
# Show help
|
|
444
|
+
show_help() {
|
|
445
|
+
print_header "AmpCode CLI Integration Help"
|
|
446
|
+
echo ""
|
|
447
|
+
echo "Usage: $0 [command] [options]"
|
|
448
|
+
echo ""
|
|
449
|
+
echo "Commands:"
|
|
450
|
+
echo " install - Install AmpCode CLI"
|
|
451
|
+
echo " setup - Configure AmpCode with API key"
|
|
452
|
+
echo " scan [path] - Run code scan and analysis"
|
|
453
|
+
echo " review [path] - Get AI code review"
|
|
454
|
+
echo " fix [path] - Apply AI-suggested fixes"
|
|
455
|
+
echo " status - Check AmpCode status"
|
|
456
|
+
echo " help - Show this help message"
|
|
457
|
+
echo ""
|
|
458
|
+
echo "Examples:"
|
|
459
|
+
echo " $0 install"
|
|
460
|
+
echo " $0 setup"
|
|
461
|
+
echo " $0 scan ./src"
|
|
462
|
+
echo " $0 review --severity high"
|
|
463
|
+
echo " $0 fix --auto-apply"
|
|
464
|
+
echo ""
|
|
465
|
+
echo "Setup:"
|
|
466
|
+
echo " 1. Visit https://ampcode.com to create account"
|
|
467
|
+
echo " 2. Get your API key"
|
|
468
|
+
echo " 3. Run: Add AMPCODE_API_KEY to ~/.config/aidevops/mcp-env.sh"
|
|
469
|
+
echo " 4. Run: $0 setup"
|
|
470
|
+
echo ""
|
|
471
|
+
echo "This script integrates AmpCode's professional AI coding assistant"
|
|
472
|
+
echo "with the AI DevOps Framework for enhanced code quality and productivity."
|
|
473
|
+
echo ""
|
|
474
|
+
return 0
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
# Main function
|
|
478
|
+
main() {
|
|
479
|
+
local _arg2="$2"
|
|
480
|
+
local _arg3="$3"
|
|
481
|
+
local command="${1:-help}"
|
|
482
|
+
|
|
483
|
+
# Ensure temp directory exists
|
|
484
|
+
mkdir -p .agent/tmp
|
|
485
|
+
|
|
486
|
+
case "$command" in
|
|
487
|
+
"install")
|
|
488
|
+
install_ampcode_cli
|
|
489
|
+
;;
|
|
490
|
+
"setup")
|
|
491
|
+
setup_ampcode_config
|
|
492
|
+
;;
|
|
493
|
+
"scan")
|
|
494
|
+
run_code_scan "$_arg2" "$_arg3"
|
|
495
|
+
;;
|
|
496
|
+
"review")
|
|
497
|
+
get_ai_review "$_arg2" "$_arg3"
|
|
498
|
+
;;
|
|
499
|
+
"fix")
|
|
500
|
+
if [[ "$_arg2" == "--auto-apply" ]]; then
|
|
501
|
+
apply_fixes "$_arg3" "true"
|
|
502
|
+
else
|
|
503
|
+
apply_fixes "$_arg2" "false"
|
|
504
|
+
fi
|
|
505
|
+
;;
|
|
506
|
+
"status")
|
|
507
|
+
show_status
|
|
508
|
+
;;
|
|
509
|
+
"help"|"--help"|"-h")
|
|
510
|
+
show_help
|
|
511
|
+
;;
|
|
512
|
+
*)
|
|
513
|
+
print_error "$ERROR_UNKNOWN_COMMAND $command"
|
|
514
|
+
show_help
|
|
515
|
+
return 1
|
|
516
|
+
;;
|
|
517
|
+
esac
|
|
518
|
+
return 0
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
# Execute main function with all arguments
|
|
522
|
+
main "$@"
|
|
@@ -0,0 +1,156 @@
|
|
|
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
|
+
# Auto Version Bump Script for AI DevOps Framework
|
|
5
|
+
# Automatically determines version bump type based on commit message
|
|
6
|
+
#
|
|
7
|
+
# Author: AI DevOps Framework
|
|
8
|
+
# Version: 1.1.1
|
|
9
|
+
|
|
10
|
+
# Colors for output
|
|
11
|
+
readonly GREEN='\033[0;32m'
|
|
12
|
+
readonly BLUE='\033[0;34m'
|
|
13
|
+
readonly YELLOW='\033[1;33m'
|
|
14
|
+
readonly RED='\033[0;31m'
|
|
15
|
+
readonly NC='\033[0m' # No Color
|
|
16
|
+
|
|
17
|
+
print_info() { local msg="$1"; echo -e "${BLUE}[INFO]${NC} $msg"; return 0; }
|
|
18
|
+
print_success() { local msg="$1"; echo -e "${GREEN}[SUCCESS]${NC} $msg"; return 0; }
|
|
19
|
+
print_warning() { local msg="$1"; echo -e "${YELLOW}[WARNING]${NC} $msg"; return 0; }
|
|
20
|
+
print_error() { local msg="$1"; echo -e "${RED}[ERROR]${NC} $msg" >&2; return 0; }
|
|
21
|
+
|
|
22
|
+
# Repository root directory
|
|
23
|
+
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" || exit
|
|
24
|
+
VERSION_MANAGER="$REPO_ROOT/.agent/scripts/version-manager.sh"
|
|
25
|
+
|
|
26
|
+
# Function to determine version bump type from commit message
|
|
27
|
+
determine_bump_type() {
|
|
28
|
+
local commit_message="$1"
|
|
29
|
+
|
|
30
|
+
# Major version indicators (breaking changes)
|
|
31
|
+
if echo "$commit_message" | grep -qE "BREAKING|MAJOR|💥|🚨.*BREAKING"; then
|
|
32
|
+
echo "major"
|
|
33
|
+
return 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Minor version indicators (new features)
|
|
37
|
+
if echo "$commit_message" | grep -qE "FEATURE|FEAT|NEW|ADD|✨|🚀|📦|🎯.*NEW|🎯.*ADD"; then
|
|
38
|
+
echo "minor"
|
|
39
|
+
return 0
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# Patch version indicators (bug fixes, improvements)
|
|
43
|
+
if echo "$commit_message" | grep -qE "FIX|PATCH|BUG|IMPROVE|UPDATE|ENHANCE|🔧|🐛|📝|🎨|♻️|⚡|🔒|📊"; then
|
|
44
|
+
echo "patch"
|
|
45
|
+
return 0
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Default to patch for any other changes
|
|
49
|
+
echo "patch"
|
|
50
|
+
return 0
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
# Function to check if version should be bumped
|
|
54
|
+
should_bump_version() {
|
|
55
|
+
local commit_message="$1"
|
|
56
|
+
|
|
57
|
+
# Skip version bump for certain commit types
|
|
58
|
+
if echo "$commit_message" | grep -qE "^(docs|style|test|chore|ci|build):|WIP|SKIP.*VERSION|NO.*VERSION"; then
|
|
59
|
+
return 1
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
return 0
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Function to update version badge in README
|
|
66
|
+
update_version_badge() {
|
|
67
|
+
local new_version="$1"
|
|
68
|
+
local readme_file="$REPO_ROOT/README.md"
|
|
69
|
+
|
|
70
|
+
if [[ -f "$readme_file" ]]; then
|
|
71
|
+
# Use more robust regex pattern for version numbers (handles single and multi-digit)
|
|
72
|
+
# macOS sed requires different syntax for extended regex
|
|
73
|
+
sed -i '' "s/Version-[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*-blue/Version-$new_version-blue/" "$readme_file"
|
|
74
|
+
|
|
75
|
+
# Validate the update was successful
|
|
76
|
+
if grep -q "Version-$new_version-blue" "$readme_file"; then
|
|
77
|
+
print_success "Updated version badge in README.md to $new_version"
|
|
78
|
+
else
|
|
79
|
+
print_error "Failed to update version badge in README.md"
|
|
80
|
+
fi
|
|
81
|
+
fi
|
|
82
|
+
return 0
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
# Main function
|
|
86
|
+
main() {
|
|
87
|
+
local commit_message="$1"
|
|
88
|
+
|
|
89
|
+
if [[ -z "$commit_message" ]]; then
|
|
90
|
+
# Get the last commit message
|
|
91
|
+
commit_message=$(git log -1 --pretty=%B 2>/dev/null)
|
|
92
|
+
if [[ -z "$commit_message" ]]; then
|
|
93
|
+
print_error "No commit message provided and unable to get last commit"
|
|
94
|
+
exit 1
|
|
95
|
+
fi
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
print_info "Analyzing commit message: $commit_message"
|
|
99
|
+
|
|
100
|
+
if ! should_bump_version "$commit_message"; then
|
|
101
|
+
print_info "Skipping version bump for this commit type"
|
|
102
|
+
exit 0
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
local bump_type
|
|
106
|
+
bump_type=$(determine_bump_type "$commit_message")
|
|
107
|
+
|
|
108
|
+
print_info "Determined bump type: $bump_type"
|
|
109
|
+
|
|
110
|
+
if [[ -x "$VERSION_MANAGER" ]]; then
|
|
111
|
+
local current_version
|
|
112
|
+
current_version=$("$VERSION_MANAGER" get)
|
|
113
|
+
|
|
114
|
+
local new_version
|
|
115
|
+
new_version=$("$VERSION_MANAGER" bump "$bump_type")
|
|
116
|
+
|
|
117
|
+
if [[ $? -eq 0 ]]; then
|
|
118
|
+
print_success "Version bumped: $current_version → $new_version"
|
|
119
|
+
update_version_badge "$new_version"
|
|
120
|
+
|
|
121
|
+
# Add updated files to git
|
|
122
|
+
git add VERSION README.md sonar-project.properties setup.sh 2>/dev/null
|
|
123
|
+
|
|
124
|
+
echo "$new_version"
|
|
125
|
+
else
|
|
126
|
+
print_error "Failed to bump version"
|
|
127
|
+
exit 1
|
|
128
|
+
fi
|
|
129
|
+
else
|
|
130
|
+
print_error "Version manager script not found or not executable"
|
|
131
|
+
exit 1
|
|
132
|
+
fi
|
|
133
|
+
return 0
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
# Show usage if no arguments and not in git repo
|
|
137
|
+
if [[ $# -eq 0 && ! -d .git ]]; then
|
|
138
|
+
echo "Auto Version Bump for AI DevOps Framework"
|
|
139
|
+
echo ""
|
|
140
|
+
echo "Usage: $0 [commit_message]"
|
|
141
|
+
echo ""
|
|
142
|
+
echo "Automatically determines version bump type based on commit message:"
|
|
143
|
+
echo " MAJOR: BREAKING, MAJOR, 💥, 🚨 BREAKING"
|
|
144
|
+
echo " MINOR: FEATURE, FEAT, NEW, ADD, ✨, 🚀, 📦, 🎯 NEW/ADD"
|
|
145
|
+
echo " PATCH: FIX, PATCH, BUG, IMPROVE, UPDATE, ENHANCE, 🔧, 🐛, 📝, 🎨, ♻️, ⚡, 🔒, 📊"
|
|
146
|
+
echo ""
|
|
147
|
+
echo "Skips version bump for: docs, style, test, chore, ci, build, WIP, SKIP VERSION, NO VERSION"
|
|
148
|
+
echo ""
|
|
149
|
+
echo "Examples:"
|
|
150
|
+
echo " $0 '🚀 FEATURE: Add new Hetzner integration'"
|
|
151
|
+
echo " $0 '🔧 FIX: Resolve badge display issue'"
|
|
152
|
+
echo " $0 '💥 BREAKING: Change API structure'"
|
|
153
|
+
exit 0
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
main "$@"
|