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,356 @@
|
|
|
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
|
+
# Qlty CLI Integration Script
|
|
5
|
+
# Universal linting, auto-formatting, security scanning, and maintainability
|
|
6
|
+
#
|
|
7
|
+
# Author: AI DevOps Framework
|
|
8
|
+
# Version: 1.1.1
|
|
9
|
+
|
|
10
|
+
# Colors for output
|
|
11
|
+
readonly GREEN='\033[0;32m'
|
|
12
|
+
readonly RED='\033[0;31m'
|
|
13
|
+
readonly YELLOW='\033[1;33m'
|
|
14
|
+
readonly BLUE='\033[0;34m'
|
|
15
|
+
readonly NC='\033[0m'
|
|
16
|
+
|
|
17
|
+
# Common constants
|
|
18
|
+
readonly ERROR_UNKNOWN_COMMAND="Unknown command:"
|
|
19
|
+
print_success() {
|
|
20
|
+
local _arg1="$1"
|
|
21
|
+
echo -e "${GREEN}✅ $_arg1${NC}"
|
|
22
|
+
return 0
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
print_error() {
|
|
26
|
+
local _arg1="$1"
|
|
27
|
+
echo -e "${RED}❌ $_arg1${NC}" >&2
|
|
28
|
+
return 0
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
print_warning() {
|
|
32
|
+
local _arg1="$1"
|
|
33
|
+
echo -e "${YELLOW}⚠️ $_arg1${NC}"
|
|
34
|
+
return 0
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
print_info() {
|
|
38
|
+
local _arg1="$1"
|
|
39
|
+
echo -e "${BLUE}ℹ️ $_arg1${NC}"
|
|
40
|
+
return 0
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
print_header() {
|
|
44
|
+
local _arg1="$1"
|
|
45
|
+
echo -e "${BLUE}🚀 $_arg1${NC}"
|
|
46
|
+
echo "=========================================="
|
|
47
|
+
return 0
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
# Load API configuration with intelligent credential selection
|
|
51
|
+
load_api_config() {
|
|
52
|
+
local org="${1:-marcusquinn}" # Default to marcusquinn organization
|
|
53
|
+
|
|
54
|
+
# First check environment variables (set via mcp-env.sh, sourced by .zshrc)
|
|
55
|
+
local account_api_key="${QLTY_ACCOUNT_API_KEY:-}"
|
|
56
|
+
local api_key="${QLTY_API_KEY:-}"
|
|
57
|
+
local workspace_id="${QLTY_WORKSPACE_ID:-}"
|
|
58
|
+
|
|
59
|
+
# Intelligent credential selection
|
|
60
|
+
if [[ -n "$account_api_key" ]]; then
|
|
61
|
+
# Prefer account-level API key (broader access)
|
|
62
|
+
export QLTY_API_TOKEN="$account_api_key"
|
|
63
|
+
print_info "Using Qlty Account API Key (account-wide access)"
|
|
64
|
+
|
|
65
|
+
if [[ -n "$workspace_id" ]]; then
|
|
66
|
+
export QLTY_WORKSPACE_ID="$workspace_id"
|
|
67
|
+
print_info "Loaded Qlty Workspace ID for organization: $org"
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
if [[ -n "$api_key" ]]; then
|
|
71
|
+
print_info "Note: Organization Coverage Token available but using Account API Key for broader access"
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
return 0
|
|
75
|
+
|
|
76
|
+
elif [[ -n "$api_key" ]]; then
|
|
77
|
+
# Fall back to organization-specific coverage token
|
|
78
|
+
export QLTY_COVERAGE_TOKEN="$api_key"
|
|
79
|
+
print_info "Using Qlty Coverage Token for organization: $org"
|
|
80
|
+
|
|
81
|
+
if [[ -n "$workspace_id" ]]; then
|
|
82
|
+
export QLTY_WORKSPACE_ID="$workspace_id"
|
|
83
|
+
print_info "Loaded Qlty Workspace ID for organization: $org"
|
|
84
|
+
else
|
|
85
|
+
print_warning "No Qlty Workspace ID found for organization: $org (optional)"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
return 0
|
|
89
|
+
|
|
90
|
+
else
|
|
91
|
+
# No credentials found
|
|
92
|
+
print_warning "No Qlty credentials found"
|
|
93
|
+
print_info "Add to ~/.config/aidevops/mcp-env.sh:"
|
|
94
|
+
print_info " export QLTY_ACCOUNT_API_KEY=\"your-key\""
|
|
95
|
+
print_info " export QLTY_WORKSPACE_ID=\"your-workspace-id\""
|
|
96
|
+
return 1
|
|
97
|
+
fi
|
|
98
|
+
return 0
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# Install Qlty CLI
|
|
102
|
+
install_qlty() {
|
|
103
|
+
print_header "Installing Qlty CLI"
|
|
104
|
+
|
|
105
|
+
if command -v qlty &> /dev/null; then
|
|
106
|
+
print_warning "Qlty CLI already installed: $(qlty --version)"
|
|
107
|
+
return 0
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
print_info "Installing Qlty CLI..."
|
|
111
|
+
|
|
112
|
+
# Install using the official installer
|
|
113
|
+
# Use --proto =https to enforce HTTPS and prevent protocol downgrade
|
|
114
|
+
if command -v curl &> /dev/null; then
|
|
115
|
+
curl --proto '=https' -sSL https://qlty.sh | bash
|
|
116
|
+
else
|
|
117
|
+
print_error "curl is required to install Qlty CLI"
|
|
118
|
+
return 1
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
# Update PATH for current session
|
|
122
|
+
export PATH="$HOME/.qlty/bin:$PATH"
|
|
123
|
+
|
|
124
|
+
# Verify installation
|
|
125
|
+
if command -v qlty &> /dev/null; then
|
|
126
|
+
print_success "Qlty CLI installed successfully: $(qlty --version)"
|
|
127
|
+
print_info "PATH updated for current session. Restart shell for permanent access."
|
|
128
|
+
return 0
|
|
129
|
+
else
|
|
130
|
+
print_error "Failed to install Qlty CLI"
|
|
131
|
+
return 1
|
|
132
|
+
fi
|
|
133
|
+
return 0
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
# Initialize Qlty in repository
|
|
137
|
+
init_qlty() {
|
|
138
|
+
print_header "Initializing Qlty in Repository"
|
|
139
|
+
|
|
140
|
+
if [[ ! -d ".git" ]]; then
|
|
141
|
+
print_error "Not in a Git repository. Qlty requires a Git repository."
|
|
142
|
+
return 1
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
if [[ -f ".qlty/qlty.toml" ]]; then
|
|
146
|
+
print_warning "Qlty already initialized (.qlty/qlty.toml exists)"
|
|
147
|
+
return 0
|
|
148
|
+
fi
|
|
149
|
+
|
|
150
|
+
print_info "Initializing Qlty configuration..."
|
|
151
|
+
qlty init
|
|
152
|
+
|
|
153
|
+
if [[ -f ".qlty/qlty.toml" ]]; then
|
|
154
|
+
print_success "Qlty initialized successfully"
|
|
155
|
+
print_info "Configuration file created: .qlty/qlty.toml"
|
|
156
|
+
return 0
|
|
157
|
+
else
|
|
158
|
+
print_error "Failed to initialize Qlty"
|
|
159
|
+
return 1
|
|
160
|
+
fi
|
|
161
|
+
return 0
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
# Run Qlty check (linting)
|
|
165
|
+
check_qlty() {
|
|
166
|
+
local sample_size="$1"
|
|
167
|
+
local org="$2"
|
|
168
|
+
|
|
169
|
+
print_header "Running Qlty Code Quality Check"
|
|
170
|
+
|
|
171
|
+
# Load API configuration
|
|
172
|
+
load_api_config "$org"
|
|
173
|
+
|
|
174
|
+
if [[ ! -f ".qlty/qlty.toml" ]]; then
|
|
175
|
+
print_error "Qlty not initialized. Run 'init' first."
|
|
176
|
+
return 1
|
|
177
|
+
fi
|
|
178
|
+
|
|
179
|
+
local cmd="qlty check"
|
|
180
|
+
|
|
181
|
+
if [[ -n "$sample_size" ]]; then
|
|
182
|
+
cmd="$cmd --sample=$sample_size"
|
|
183
|
+
print_info "Running check with sample size: $sample_size"
|
|
184
|
+
else
|
|
185
|
+
print_info "Running full codebase check"
|
|
186
|
+
fi
|
|
187
|
+
|
|
188
|
+
print_info "Executing: $cmd"
|
|
189
|
+
eval "$cmd"
|
|
190
|
+
|
|
191
|
+
return $?
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
# Run Qlty auto-formatting
|
|
195
|
+
format_qlty() {
|
|
196
|
+
local scope="$1"
|
|
197
|
+
local org="$2"
|
|
198
|
+
|
|
199
|
+
print_header "Running Qlty Auto-Formatting"
|
|
200
|
+
|
|
201
|
+
# Load API configuration
|
|
202
|
+
load_api_config "$org"
|
|
203
|
+
|
|
204
|
+
if [[ ! -f ".qlty/qlty.toml" ]]; then
|
|
205
|
+
print_error "Qlty not initialized. Run 'init' first."
|
|
206
|
+
return 1
|
|
207
|
+
fi
|
|
208
|
+
|
|
209
|
+
local cmd="qlty fmt"
|
|
210
|
+
|
|
211
|
+
if [[ "$scope" == "--all" ]]; then
|
|
212
|
+
cmd="$cmd --all"
|
|
213
|
+
print_info "Auto-formatting entire codebase"
|
|
214
|
+
else
|
|
215
|
+
print_info "Auto-formatting changed files"
|
|
216
|
+
fi
|
|
217
|
+
|
|
218
|
+
print_info "Executing: $cmd"
|
|
219
|
+
|
|
220
|
+
if eval "$cmd"; then
|
|
221
|
+
print_success "Auto-formatting completed successfully"
|
|
222
|
+
return 0
|
|
223
|
+
else
|
|
224
|
+
print_error "Auto-formatting failed"
|
|
225
|
+
return 1
|
|
226
|
+
fi
|
|
227
|
+
return 0
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
# Run Qlty code smells detection
|
|
231
|
+
smells_qlty() {
|
|
232
|
+
local scope="$1"
|
|
233
|
+
local org="$2"
|
|
234
|
+
|
|
235
|
+
print_header "Running Qlty Code Smells Detection"
|
|
236
|
+
|
|
237
|
+
# Load API configuration
|
|
238
|
+
load_api_config "$org"
|
|
239
|
+
|
|
240
|
+
if [[ ! -f ".qlty/qlty.toml" ]]; then
|
|
241
|
+
print_error "Qlty not initialized. Run 'init' first."
|
|
242
|
+
return 1
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
local cmd="qlty smells"
|
|
246
|
+
|
|
247
|
+
if [[ "$scope" == "--all" ]]; then
|
|
248
|
+
cmd="$cmd --all"
|
|
249
|
+
print_info "Scanning entire codebase for code smells"
|
|
250
|
+
else
|
|
251
|
+
print_info "Scanning changed files for code smells"
|
|
252
|
+
fi
|
|
253
|
+
|
|
254
|
+
print_info "Executing: $cmd"
|
|
255
|
+
eval "$cmd"
|
|
256
|
+
|
|
257
|
+
return $?
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
# Show help
|
|
261
|
+
show_help() {
|
|
262
|
+
echo "Qlty CLI Integration - Universal Code Quality Tool"
|
|
263
|
+
echo ""
|
|
264
|
+
echo "Usage: $0 <command> [options]"
|
|
265
|
+
echo ""
|
|
266
|
+
echo "Commands:"
|
|
267
|
+
echo " install - Install Qlty CLI"
|
|
268
|
+
echo " init - Initialize Qlty in repository"
|
|
269
|
+
echo " check [sample] [org] - Run code quality check (optionally with sample size and organization)"
|
|
270
|
+
echo " fmt [--all] [org] - Auto-format code (optionally entire codebase and organization)"
|
|
271
|
+
echo " smells [--all] [org] - Detect code smells (optionally entire codebase and organization)"
|
|
272
|
+
echo " help - Show this help message"
|
|
273
|
+
echo ""
|
|
274
|
+
echo "Examples:"
|
|
275
|
+
echo " $0 install"
|
|
276
|
+
echo " $0 init"
|
|
277
|
+
echo " $0 check 5 # Check sample of 5 issues (default: marcusquinn org)"
|
|
278
|
+
echo " $0 check 5 myorg # Check sample of 5 issues for 'myorg' organization"
|
|
279
|
+
echo " $0 fmt --all # Format entire codebase (default: marcusquinn org)"
|
|
280
|
+
echo " $0 fmt --all myorg # Format entire codebase for 'myorg' organization"
|
|
281
|
+
echo " $0 smells --all # Scan all files for code smells"
|
|
282
|
+
echo ""
|
|
283
|
+
echo "Features:"
|
|
284
|
+
echo " 🐛 Linting: 70+ tools for 40+ languages"
|
|
285
|
+
echo " 🖌️ Auto-formatting: Consistent code style"
|
|
286
|
+
echo " 💩 Code smells: Duplication and complexity detection"
|
|
287
|
+
echo " 🚨 Security: SAST, SCA, secret detection"
|
|
288
|
+
echo " ⚡ Performance: Fast, concurrent execution"
|
|
289
|
+
echo ""
|
|
290
|
+
echo "Qlty Credential Management:"
|
|
291
|
+
echo " Add to ~/.config/aidevops/mcp-env.sh:"
|
|
292
|
+
echo " export QLTY_ACCOUNT_API_KEY=\"qltp_...\""
|
|
293
|
+
echo " export QLTY_API_KEY=\"qltcw_...\""
|
|
294
|
+
echo " export QLTY_WORKSPACE_ID=\"...\""
|
|
295
|
+
echo " Then run: source ~/.zshrc"
|
|
296
|
+
echo ""
|
|
297
|
+
echo "Credential Priority:"
|
|
298
|
+
echo " 1. Account API Key (qltp_...) - Preferred for account-wide access"
|
|
299
|
+
echo " 2. Coverage Token (qltcw_...) - Organization-specific access"
|
|
300
|
+
echo ""
|
|
301
|
+
echo "Current Qlty Configuration:"
|
|
302
|
+
if [[ -n "${QLTY_ACCOUNT_API_KEY:-}" ]]; then
|
|
303
|
+
echo " Account API Key: Configured (account-wide access)"
|
|
304
|
+
else
|
|
305
|
+
echo " Account API Key: Not configured"
|
|
306
|
+
fi
|
|
307
|
+
if [[ -n "${QLTY_API_KEY:-}" ]]; then
|
|
308
|
+
echo " Coverage Token: Configured"
|
|
309
|
+
else
|
|
310
|
+
echo " Coverage Token: Not configured"
|
|
311
|
+
fi
|
|
312
|
+
if [[ -n "${QLTY_WORKSPACE_ID:-}" ]]; then
|
|
313
|
+
echo " Workspace ID: Configured"
|
|
314
|
+
else
|
|
315
|
+
echo " Workspace ID: Not configured"
|
|
316
|
+
fi
|
|
317
|
+
return 0
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
# Main execution
|
|
321
|
+
main() {
|
|
322
|
+
local _arg1="$1"
|
|
323
|
+
local _arg2="$2"
|
|
324
|
+
local command="$1"
|
|
325
|
+
shift
|
|
326
|
+
|
|
327
|
+
case "$command" in
|
|
328
|
+
"install")
|
|
329
|
+
install_qlty
|
|
330
|
+
;;
|
|
331
|
+
"init")
|
|
332
|
+
init_qlty
|
|
333
|
+
;;
|
|
334
|
+
"check")
|
|
335
|
+
check_qlty "$_arg1" "$_arg2"
|
|
336
|
+
;;
|
|
337
|
+
"fmt")
|
|
338
|
+
format_qlty "$_arg1" "$_arg2"
|
|
339
|
+
;;
|
|
340
|
+
"smells")
|
|
341
|
+
smells_qlty "$_arg1" "$_arg2"
|
|
342
|
+
;;
|
|
343
|
+
"help"|"--help"|"-h"|"")
|
|
344
|
+
show_help
|
|
345
|
+
;;
|
|
346
|
+
*)
|
|
347
|
+
print_error "$ERROR_UNKNOWN_COMMAND $command"
|
|
348
|
+
echo ""
|
|
349
|
+
show_help
|
|
350
|
+
return 1
|
|
351
|
+
;;
|
|
352
|
+
esac
|
|
353
|
+
return 0
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
main "$@"
|