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,338 @@
|
|
|
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
|
+
# Markdown Formatter Script
|
|
5
|
+
# Automatically fix common Codacy markdown formatting issues
|
|
6
|
+
#
|
|
7
|
+
# Usage: ./markdown-formatter.sh [file|directory]
|
|
8
|
+
#
|
|
9
|
+
# Common fixes applied:
|
|
10
|
+
# - Add blank lines around headers
|
|
11
|
+
# - Add blank lines around code blocks
|
|
12
|
+
# - Add blank lines around lists
|
|
13
|
+
# - Remove trailing whitespace
|
|
14
|
+
# - Fix inconsistent list markers
|
|
15
|
+
# - Add language specifiers to code blocks
|
|
16
|
+
# - Fix header spacing
|
|
17
|
+
# - Normalize emphasis markers
|
|
18
|
+
#
|
|
19
|
+
# Author: AI DevOps Framework
|
|
20
|
+
# Version: 1.1.1
|
|
21
|
+
# License: MIT
|
|
22
|
+
|
|
23
|
+
# Colors for output
|
|
24
|
+
readonly GREEN='\033[0;32m'
|
|
25
|
+
readonly BLUE='\033[0;34m'
|
|
26
|
+
readonly YELLOW='\033[1;33m'
|
|
27
|
+
readonly RED='\033[0;31m'
|
|
28
|
+
readonly PURPLE='\033[0;35m'
|
|
29
|
+
readonly NC='\033[0m' # No Color
|
|
30
|
+
|
|
31
|
+
# Common constants
|
|
32
|
+
readonly ERROR_UNKNOWN_COMMAND="Unknown command:"
|
|
33
|
+
# Print functions
|
|
34
|
+
print_success() {
|
|
35
|
+
local message="$1"
|
|
36
|
+
echo -e "${GREEN}✅ $message${NC}"
|
|
37
|
+
return 0
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
print_info() {
|
|
41
|
+
local message="$1"
|
|
42
|
+
echo -e "${BLUE}ℹ️ $message${NC}"
|
|
43
|
+
return 0
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
print_warning() {
|
|
47
|
+
local message="$1"
|
|
48
|
+
echo -e "${YELLOW}⚠️ $message${NC}"
|
|
49
|
+
return 0
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
print_error() {
|
|
53
|
+
local message="$1"
|
|
54
|
+
echo -e "${RED}❌ $message${NC}" >&2
|
|
55
|
+
return 0
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
print_header() {
|
|
59
|
+
local message="$1"
|
|
60
|
+
echo -e "${PURPLE}📝 $message${NC}"
|
|
61
|
+
return 0
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# Fix markdown formatting in a single file
|
|
65
|
+
fix_markdown_file() {
|
|
66
|
+
local file="$1"
|
|
67
|
+
local temp_file
|
|
68
|
+
temp_file=$(mktemp)
|
|
69
|
+
local changes_made=0
|
|
70
|
+
|
|
71
|
+
print_info "Processing: $file"
|
|
72
|
+
|
|
73
|
+
# Create backup
|
|
74
|
+
cp "$file" "${file}.bak"
|
|
75
|
+
|
|
76
|
+
# Apply simple, safe fixes
|
|
77
|
+
{
|
|
78
|
+
# Remove trailing whitespace
|
|
79
|
+
sed 's/[[:space:]]*$//' "$file" |
|
|
80
|
+
|
|
81
|
+
# Fix inconsistent list markers (use - for unordered lists)
|
|
82
|
+
sed 's/^[[:space:]]*\*[[:space:]]/- /' |
|
|
83
|
+
sed 's/^[[:space:]]*+[[:space:]]/- /' |
|
|
84
|
+
|
|
85
|
+
# Fix emphasis - use ** for bold, * for italic consistently
|
|
86
|
+
sed 's/__\([^_]*\)__/**\1**/g' | # Convert __ to **
|
|
87
|
+
|
|
88
|
+
# Remove multiple consecutive blank lines (max 2)
|
|
89
|
+
awk '
|
|
90
|
+
BEGIN { blank_count = 0 }
|
|
91
|
+
/^[[:space:]]*$/ {
|
|
92
|
+
blank_count++
|
|
93
|
+
if (blank_count <= 2) print
|
|
94
|
+
next
|
|
95
|
+
}
|
|
96
|
+
{ blank_count = 0; print }'
|
|
97
|
+
|
|
98
|
+
} > "$temp_file"
|
|
99
|
+
|
|
100
|
+
# Check if changes were made
|
|
101
|
+
if ! cmp -s "$file" "$temp_file"; then
|
|
102
|
+
mv "$temp_file" "$file"
|
|
103
|
+
changes_made=1
|
|
104
|
+
print_success "Fixed formatting in: $file"
|
|
105
|
+
else
|
|
106
|
+
rm "$temp_file"
|
|
107
|
+
print_info "No changes needed: $file"
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# Remove backup if no changes were made
|
|
111
|
+
if [[ $changes_made -eq 0 ]]; then
|
|
112
|
+
rm "${file}.bak"
|
|
113
|
+
fi
|
|
114
|
+
|
|
115
|
+
return $changes_made
|
|
116
|
+
return 0
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
# Process directory recursively
|
|
120
|
+
process_directory() {
|
|
121
|
+
local dir="$1"
|
|
122
|
+
local total_files=0
|
|
123
|
+
local changed_files=0
|
|
124
|
+
|
|
125
|
+
print_header "Processing markdown files in: $dir"
|
|
126
|
+
|
|
127
|
+
# Find all markdown files
|
|
128
|
+
while IFS= read -r -d '' file; do
|
|
129
|
+
((total_files++))
|
|
130
|
+
if fix_markdown_file "$file"; then
|
|
131
|
+
((changed_files++))
|
|
132
|
+
fi
|
|
133
|
+
done < <(find "$dir" -name "*.md" -type f -print0)
|
|
134
|
+
|
|
135
|
+
echo ""
|
|
136
|
+
print_info "Summary: $changed_files/$total_files files modified"
|
|
137
|
+
|
|
138
|
+
if [[ $changed_files -gt 0 ]]; then
|
|
139
|
+
print_success "Markdown formatting fixes applied successfully"
|
|
140
|
+
print_info "Backup files created with .bak extension"
|
|
141
|
+
return 0
|
|
142
|
+
else
|
|
143
|
+
print_info "No formatting issues found"
|
|
144
|
+
return 0
|
|
145
|
+
fi
|
|
146
|
+
return 0
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
# Advanced markdown fixes
|
|
150
|
+
apply_advanced_fixes() {
|
|
151
|
+
local file="$1"
|
|
152
|
+
local temp_file
|
|
153
|
+
temp_file=$(mktemp)
|
|
154
|
+
|
|
155
|
+
print_info "Applying advanced fixes to: $file"
|
|
156
|
+
|
|
157
|
+
# Advanced fixes using Python-like logic with awk
|
|
158
|
+
awk '
|
|
159
|
+
BEGIN {
|
|
160
|
+
in_code_block = 0
|
|
161
|
+
prev_was_header = 0
|
|
162
|
+
prev_was_list = 0
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
# Track code blocks
|
|
166
|
+
/^```/ {
|
|
167
|
+
in_code_block = !in_code_block
|
|
168
|
+
print
|
|
169
|
+
next
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
# Skip processing inside code blocks
|
|
173
|
+
in_code_block {
|
|
174
|
+
print
|
|
175
|
+
next
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
# Fix table formatting
|
|
179
|
+
/\|.*\|/ {
|
|
180
|
+
# Ensure spaces around pipes in tables
|
|
181
|
+
gsub(/\|/, " | ")
|
|
182
|
+
gsub(/ \| /, " | ")
|
|
183
|
+
gsub(/^ \| /, "| ")
|
|
184
|
+
gsub(/ \| $/, " |")
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
# Fix link formatting
|
|
188
|
+
{
|
|
189
|
+
# Fix spaces in link text
|
|
190
|
+
gsub(/\[\s+/, "[")
|
|
191
|
+
gsub(/\s+\]/, "]")
|
|
192
|
+
|
|
193
|
+
# Fix spaces around link URLs
|
|
194
|
+
gsub(/\]\s*\(/, "](")
|
|
195
|
+
gsub(/\(\s+/, "(")
|
|
196
|
+
gsub(/\s+\)/, ")")
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
# Fix emphasis spacing
|
|
200
|
+
{
|
|
201
|
+
# Remove spaces inside emphasis
|
|
202
|
+
gsub(/\*\s+/, "*")
|
|
203
|
+
gsub(/\s+\*/, "*")
|
|
204
|
+
gsub(/\*\*\s+/, "**")
|
|
205
|
+
gsub(/\s+\*\*/, "**")
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
# Print the line
|
|
209
|
+
{ print }
|
|
210
|
+
' "$file" > "$temp_file"
|
|
211
|
+
|
|
212
|
+
# Replace original if different
|
|
213
|
+
if ! cmp -s "$file" "$temp_file"; then
|
|
214
|
+
mv "$temp_file" "$file"
|
|
215
|
+
print_success "Applied advanced fixes to: $file"
|
|
216
|
+
return 0
|
|
217
|
+
else
|
|
218
|
+
rm "$temp_file"
|
|
219
|
+
return 1
|
|
220
|
+
fi
|
|
221
|
+
return 0
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
# Clean up backup files
|
|
225
|
+
cleanup_backups() {
|
|
226
|
+
local target="${1:-.}"
|
|
227
|
+
|
|
228
|
+
print_header "Cleaning up backup files"
|
|
229
|
+
|
|
230
|
+
local backup_count
|
|
231
|
+
backup_count=$(find "$target" -name "*.md.bak" -type f | wc -l)
|
|
232
|
+
|
|
233
|
+
if [[ $backup_count -gt 0 ]]; then
|
|
234
|
+
print_info "Found $backup_count backup files"
|
|
235
|
+
read -r -p "Remove all .md.bak files? (y/N): " confirm
|
|
236
|
+
|
|
237
|
+
if [[ $confirm =~ ^[Yy]$ ]]; then
|
|
238
|
+
find "$target" -name "*.md.bak" -type f -delete
|
|
239
|
+
print_success "Removed $backup_count backup files"
|
|
240
|
+
else
|
|
241
|
+
print_info "Backup files preserved"
|
|
242
|
+
fi
|
|
243
|
+
else
|
|
244
|
+
print_info "No backup files found"
|
|
245
|
+
fi
|
|
246
|
+
return 0
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
# Show help message
|
|
250
|
+
show_help() {
|
|
251
|
+
print_header "Markdown Formatter Help"
|
|
252
|
+
echo ""
|
|
253
|
+
echo "Usage: $0 [command] [target]"
|
|
254
|
+
echo ""
|
|
255
|
+
echo "Commands:"
|
|
256
|
+
echo " format [file|dir] - Format markdown files (default)"
|
|
257
|
+
echo " advanced [file|dir] - Apply advanced formatting fixes"
|
|
258
|
+
echo " cleanup [dir] - Remove backup files"
|
|
259
|
+
echo " help - Show this help message"
|
|
260
|
+
echo ""
|
|
261
|
+
echo "Examples:"
|
|
262
|
+
echo " $0 README.md"
|
|
263
|
+
echo " $0 format .agent/"
|
|
264
|
+
echo " $0 advanced ."
|
|
265
|
+
echo " $0 cleanup"
|
|
266
|
+
echo ""
|
|
267
|
+
echo "Common fixes applied:"
|
|
268
|
+
echo " • Add blank lines around headers, code blocks, lists"
|
|
269
|
+
echo " • Remove trailing whitespace"
|
|
270
|
+
echo " • Fix inconsistent list markers (use -)"
|
|
271
|
+
echo " • Normalize emphasis markers (** for bold, * for italic)"
|
|
272
|
+
echo " • Add language specifiers to code blocks"
|
|
273
|
+
echo " • Fix header spacing"
|
|
274
|
+
echo " • Remove excessive blank lines"
|
|
275
|
+
echo " • Fix table formatting"
|
|
276
|
+
echo " • Fix link and emphasis spacing"
|
|
277
|
+
echo ""
|
|
278
|
+
echo "Backup files (.bak) are created for all modified files."
|
|
279
|
+
return 0
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
# Main function
|
|
283
|
+
main() {
|
|
284
|
+
local _arg1="$1"
|
|
285
|
+
local command="${1:-format}"
|
|
286
|
+
local target="${2:-.}"
|
|
287
|
+
|
|
288
|
+
# Handle case where first argument is a file/directory
|
|
289
|
+
if [[ -f "$_arg1" || -d "$_arg1" ]]; then
|
|
290
|
+
command="format"
|
|
291
|
+
target="$_arg1"
|
|
292
|
+
fi
|
|
293
|
+
|
|
294
|
+
case "$command" in
|
|
295
|
+
"format")
|
|
296
|
+
if [[ -f "$target" ]]; then
|
|
297
|
+
if [[ "$target" == *.md ]]; then
|
|
298
|
+
fix_markdown_file "$target"
|
|
299
|
+
else
|
|
300
|
+
print_error "File is not a markdown file: $target"
|
|
301
|
+
return 1
|
|
302
|
+
fi
|
|
303
|
+
elif [[ -d "$target" ]]; then
|
|
304
|
+
process_directory "$target"
|
|
305
|
+
else
|
|
306
|
+
print_error "Target not found: $target"
|
|
307
|
+
return 1
|
|
308
|
+
fi
|
|
309
|
+
;;
|
|
310
|
+
"advanced")
|
|
311
|
+
if [[ -f "$target" && "$target" == *.md ]]; then
|
|
312
|
+
apply_advanced_fixes "$target"
|
|
313
|
+
elif [[ -d "$target" ]]; then
|
|
314
|
+
find "$target" -name "*.md" -type f | while read -r file; do
|
|
315
|
+
apply_advanced_fixes "$file"
|
|
316
|
+
done
|
|
317
|
+
else
|
|
318
|
+
print_error "Invalid target for advanced fixes: $target"
|
|
319
|
+
return 1
|
|
320
|
+
fi
|
|
321
|
+
;;
|
|
322
|
+
"cleanup")
|
|
323
|
+
cleanup_backups "$target"
|
|
324
|
+
;;
|
|
325
|
+
"help"|"--help"|"-h")
|
|
326
|
+
show_help
|
|
327
|
+
;;
|
|
328
|
+
*)
|
|
329
|
+
print_error "$ERROR_UNKNOWN_COMMAND $command"
|
|
330
|
+
show_help
|
|
331
|
+
return 1
|
|
332
|
+
;;
|
|
333
|
+
esac
|
|
334
|
+
return 0
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
# Execute main function with all arguments
|
|
338
|
+
main "$@"
|
|
@@ -0,0 +1,311 @@
|
|
|
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
|
+
# Markdown Lint Fix Script
|
|
5
|
+
# Fix common Codacy markdown issues using markdownlint-cli
|
|
6
|
+
#
|
|
7
|
+
# Usage: ./markdown-lint-fix.sh [file|directory]
|
|
8
|
+
#
|
|
9
|
+
# Author: AI DevOps Framework
|
|
10
|
+
# Version: 1.1.1
|
|
11
|
+
# License: MIT
|
|
12
|
+
|
|
13
|
+
# Colors for output
|
|
14
|
+
readonly GREEN='\033[0;32m'
|
|
15
|
+
readonly BLUE='\033[0;34m'
|
|
16
|
+
readonly YELLOW='\033[1;33m'
|
|
17
|
+
readonly RED='\033[0;31m'
|
|
18
|
+
readonly PURPLE='\033[0;35m'
|
|
19
|
+
readonly NC='\033[0m' # No Color
|
|
20
|
+
|
|
21
|
+
# Common constants
|
|
22
|
+
readonly ERROR_UNKNOWN_COMMAND="Unknown command:"
|
|
23
|
+
# Print functions
|
|
24
|
+
print_success() {
|
|
25
|
+
local message="$1"
|
|
26
|
+
echo -e "${GREEN}✅ $message${NC}"
|
|
27
|
+
return 0
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
print_info() {
|
|
31
|
+
local message="$1"
|
|
32
|
+
echo -e "${BLUE}ℹ️ $message${NC}"
|
|
33
|
+
return 0
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
print_warning() {
|
|
37
|
+
local message="$1"
|
|
38
|
+
echo -e "${YELLOW}⚠️ $message${NC}"
|
|
39
|
+
return 0
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
print_error() {
|
|
43
|
+
local message="$1"
|
|
44
|
+
echo -e "${RED}❌ $message${NC}" >&2
|
|
45
|
+
return 0
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
print_header() {
|
|
49
|
+
local message="$1"
|
|
50
|
+
echo -e "${PURPLE}📝 $message${NC}"
|
|
51
|
+
return 0
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Check if markdownlint-cli is installed
|
|
55
|
+
check_markdownlint() {
|
|
56
|
+
if command -v markdownlint &> /dev/null; then
|
|
57
|
+
return 0
|
|
58
|
+
else
|
|
59
|
+
return 1
|
|
60
|
+
fi
|
|
61
|
+
return 0
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# Install markdownlint-cli
|
|
65
|
+
install_markdownlint() {
|
|
66
|
+
print_header "Installing markdownlint-cli"
|
|
67
|
+
|
|
68
|
+
if command -v npm &> /dev/null; then
|
|
69
|
+
# Use --ignore-scripts to prevent execution of postinstall scripts for security
|
|
70
|
+
print_info "Installing markdownlint-cli via npm..."
|
|
71
|
+
npm install -g --ignore-scripts markdownlint-cli
|
|
72
|
+
|
|
73
|
+
if check_markdownlint; then
|
|
74
|
+
print_success "markdownlint-cli installed successfully"
|
|
75
|
+
return 0
|
|
76
|
+
else
|
|
77
|
+
print_error "Installation failed"
|
|
78
|
+
return 1
|
|
79
|
+
fi
|
|
80
|
+
else
|
|
81
|
+
print_error "npm not found. Please install Node.js and npm first."
|
|
82
|
+
print_info "Visit: https://nodejs.org/"
|
|
83
|
+
return 1
|
|
84
|
+
fi
|
|
85
|
+
return 0
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
# Create markdownlint configuration
|
|
89
|
+
create_markdownlint_config() {
|
|
90
|
+
local config_file=".markdownlint.json"
|
|
91
|
+
|
|
92
|
+
if [[ -f "$config_file" ]]; then
|
|
93
|
+
print_info "markdownlint config already exists: $config_file"
|
|
94
|
+
return 0
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
print_info "Creating markdownlint configuration: $config_file"
|
|
98
|
+
|
|
99
|
+
cat > "$config_file" << 'EOF'
|
|
100
|
+
{
|
|
101
|
+
"default": true,
|
|
102
|
+
"MD013": {
|
|
103
|
+
"line_length": 120,
|
|
104
|
+
"code_blocks": false,
|
|
105
|
+
"tables": false
|
|
106
|
+
},
|
|
107
|
+
"MD033": {
|
|
108
|
+
"allowed_elements": ["br", "sub", "sup"]
|
|
109
|
+
},
|
|
110
|
+
"MD041": false,
|
|
111
|
+
"MD046": {
|
|
112
|
+
"style": "fenced"
|
|
113
|
+
}
|
|
114
|
+
return 0
|
|
115
|
+
}
|
|
116
|
+
EOF
|
|
117
|
+
|
|
118
|
+
if [[ -f "$config_file" ]]; then
|
|
119
|
+
print_success "markdownlint configuration created"
|
|
120
|
+
return 0
|
|
121
|
+
else
|
|
122
|
+
print_error "Failed to create configuration"
|
|
123
|
+
return 1
|
|
124
|
+
fi
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
# Fix markdown files using markdownlint
|
|
128
|
+
fix_markdown_with_markdownlint() {
|
|
129
|
+
local target="$1"
|
|
130
|
+
|
|
131
|
+
print_header "Fixing Markdown Issues with markdownlint"
|
|
132
|
+
|
|
133
|
+
# Check if markdownlint is available
|
|
134
|
+
if ! check_markdownlint; then
|
|
135
|
+
print_warning "markdownlint-cli not found"
|
|
136
|
+
read -r -p "Install markdownlint-cli? (y/N): " install_confirm
|
|
137
|
+
|
|
138
|
+
if [[ $install_confirm =~ ^[Yy]$ ]]; then
|
|
139
|
+
if ! install_markdownlint; then
|
|
140
|
+
return 1
|
|
141
|
+
fi
|
|
142
|
+
else
|
|
143
|
+
print_info "Skipping markdownlint fixes"
|
|
144
|
+
return 0
|
|
145
|
+
fi
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
# Create config if it doesn't exist
|
|
149
|
+
create_markdownlint_config
|
|
150
|
+
|
|
151
|
+
# Run markdownlint with fix option
|
|
152
|
+
if [[ -f "$target" ]]; then
|
|
153
|
+
print_info "Fixing: $target"
|
|
154
|
+
markdownlint --fix "$target"
|
|
155
|
+
|
|
156
|
+
if markdownlint --fix "$target"; then
|
|
157
|
+
print_success "Fixed markdown issues in: $target"
|
|
158
|
+
else
|
|
159
|
+
print_warning "Some issues may require manual fixing in: $target"
|
|
160
|
+
fi
|
|
161
|
+
elif [[ -d "$target" ]]; then
|
|
162
|
+
print_info "Fixing all markdown files in: $target"
|
|
163
|
+
markdownlint --fix "$target/**/*.md"
|
|
164
|
+
|
|
165
|
+
if markdownlint --fix "$target"/*.md; then
|
|
166
|
+
print_success "Fixed markdown issues in directory: $target"
|
|
167
|
+
else
|
|
168
|
+
print_warning "Some issues may require manual fixing"
|
|
169
|
+
fi
|
|
170
|
+
else
|
|
171
|
+
print_error "Target not found: $target"
|
|
172
|
+
return 1
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
return 0
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
# Manual fixes for common Codacy issues
|
|
179
|
+
apply_manual_fixes() {
|
|
180
|
+
local file="$1"
|
|
181
|
+
local temp_file
|
|
182
|
+
temp_file=$(mktemp)
|
|
183
|
+
local changes_made=0
|
|
184
|
+
|
|
185
|
+
print_info "Applying manual fixes to: $file"
|
|
186
|
+
|
|
187
|
+
# Create backup
|
|
188
|
+
cp "$file" "${file}.bak"
|
|
189
|
+
|
|
190
|
+
# Apply manual fixes
|
|
191
|
+
{
|
|
192
|
+
# Remove trailing whitespace
|
|
193
|
+
sed 's/[[:space:]]*$//' "$file" |
|
|
194
|
+
|
|
195
|
+
# Fix list markers - use consistent dashes
|
|
196
|
+
sed 's/^[[:space:]]*\*[[:space:]]/- /' |
|
|
197
|
+
sed 's/^[[:space:]]*+[[:space:]]/- /' |
|
|
198
|
+
|
|
199
|
+
# Fix emphasis markers - use ** for bold
|
|
200
|
+
sed 's/__\([^_]*\)__/**\1**/g' |
|
|
201
|
+
|
|
202
|
+
# Remove excessive blank lines (max 2 consecutive)
|
|
203
|
+
awk '
|
|
204
|
+
BEGIN { blank_count = 0 }
|
|
205
|
+
/^[[:space:]]*$/ {
|
|
206
|
+
blank_count++
|
|
207
|
+
if (blank_count <= 2) print
|
|
208
|
+
next
|
|
209
|
+
}
|
|
210
|
+
{ blank_count = 0; print }'
|
|
211
|
+
|
|
212
|
+
} > "$temp_file"
|
|
213
|
+
|
|
214
|
+
# Check if changes were made
|
|
215
|
+
if ! cmp -s "$file" "$temp_file"; then
|
|
216
|
+
mv "$temp_file" "$file"
|
|
217
|
+
changes_made=1
|
|
218
|
+
print_success "Applied manual fixes to: $file"
|
|
219
|
+
else
|
|
220
|
+
rm "$temp_file"
|
|
221
|
+
print_info "No manual fixes needed: $file"
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
# Remove backup if no changes were made
|
|
225
|
+
if [[ $changes_made -eq 0 ]]; then
|
|
226
|
+
rm "${file}.bak"
|
|
227
|
+
fi
|
|
228
|
+
|
|
229
|
+
return $changes_made
|
|
230
|
+
return 0
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
# Show help message
|
|
234
|
+
show_help() {
|
|
235
|
+
print_header "Markdown Lint Fix Help"
|
|
236
|
+
echo ""
|
|
237
|
+
echo "Usage: $0 [command] [target]"
|
|
238
|
+
echo ""
|
|
239
|
+
echo "Commands:"
|
|
240
|
+
echo " fix [file|dir] - Fix markdown issues (default)"
|
|
241
|
+
echo " manual [file|dir] - Apply manual fixes only"
|
|
242
|
+
echo " install - Install markdownlint-cli"
|
|
243
|
+
echo " config - Create markdownlint configuration"
|
|
244
|
+
echo " help - Show this help message"
|
|
245
|
+
echo ""
|
|
246
|
+
echo "Examples:"
|
|
247
|
+
echo " $0 README.md"
|
|
248
|
+
echo " $0 fix .agent/"
|
|
249
|
+
echo " $0 manual ."
|
|
250
|
+
echo " $0 install"
|
|
251
|
+
echo ""
|
|
252
|
+
echo "This script fixes common Codacy markdown formatting issues:"
|
|
253
|
+
echo " • Trailing whitespace"
|
|
254
|
+
echo " • Inconsistent list markers"
|
|
255
|
+
echo " • Inconsistent emphasis markers"
|
|
256
|
+
echo " • Excessive blank lines"
|
|
257
|
+
echo " • Line length issues"
|
|
258
|
+
echo " • Header formatting"
|
|
259
|
+
echo ""
|
|
260
|
+
echo "Requires: markdownlint-cli (will offer to install if missing)"
|
|
261
|
+
return 0
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
# Main function
|
|
265
|
+
main() {
|
|
266
|
+
local _arg1="$1"
|
|
267
|
+
local command="${1:-fix}"
|
|
268
|
+
local target="${2:-.}"
|
|
269
|
+
|
|
270
|
+
# Handle case where first argument is a file/directory
|
|
271
|
+
if [[ -f "$_arg1" || -d "$_arg1" ]]; then
|
|
272
|
+
command="fix"
|
|
273
|
+
target="$_arg1"
|
|
274
|
+
fi
|
|
275
|
+
|
|
276
|
+
case "$command" in
|
|
277
|
+
"fix")
|
|
278
|
+
fix_markdown_with_markdownlint "$target"
|
|
279
|
+
;;
|
|
280
|
+
"manual")
|
|
281
|
+
if [[ -f "$target" && "$target" == *.md ]]; then
|
|
282
|
+
apply_manual_fixes "$target"
|
|
283
|
+
elif [[ -d "$target" ]]; then
|
|
284
|
+
find "$target" -name "*.md" -type f | while read -r file; do
|
|
285
|
+
apply_manual_fixes "$file"
|
|
286
|
+
done
|
|
287
|
+
else
|
|
288
|
+
print_error "Invalid target: $target"
|
|
289
|
+
return 1
|
|
290
|
+
fi
|
|
291
|
+
;;
|
|
292
|
+
"install")
|
|
293
|
+
install_markdownlint
|
|
294
|
+
;;
|
|
295
|
+
"config")
|
|
296
|
+
create_markdownlint_config
|
|
297
|
+
;;
|
|
298
|
+
"help"|"--help"|"-h")
|
|
299
|
+
show_help
|
|
300
|
+
;;
|
|
301
|
+
*)
|
|
302
|
+
print_error "$ERROR_UNKNOWN_COMMAND $command"
|
|
303
|
+
show_help
|
|
304
|
+
return 1
|
|
305
|
+
;;
|
|
306
|
+
esac
|
|
307
|
+
return 0
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
# Execute main function with all arguments
|
|
311
|
+
main "$@"
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
# Mass fix script to add return statements to all functions that need them
|
|
5
|
+
# Based on SonarCloud S7682 analysis
|
|
6
|
+
|
|
7
|
+
cd providers || exit
|
|
8
|
+
|
|
9
|
+
# Files and their function ending line numbers that need return statements
|
|
10
|
+
declare -A FILES_LINES=(
|
|
11
|
+
["101domains-helper.sh"]="522"
|
|
12
|
+
["closte-helper.sh"]="105 133 247"
|
|
13
|
+
["cloudron-helper.sh"]="73 103 129 161 177 191"
|
|
14
|
+
["code-audit-helper.sh"]="153 167 188 202 223 237 258 272 293 332 384 411"
|
|
15
|
+
["coolify-helper.sh"]="235"
|
|
16
|
+
["dns-helper.sh"]="90 254"
|
|
17
|
+
["git-platforms-helper.sh"]="156 202 217 247 261 344 388 425"
|
|
18
|
+
["hetzner-helper.sh"]="112 157"
|
|
19
|
+
["hostinger-helper.sh"]="72 110 139"
|
|
20
|
+
["localhost-helper.sh"]="166 189 266 328 460"
|
|
21
|
+
["mainwp-helper.sh"]="40 55 64 84 115 126 140 160 180 200 220 241 262 286 310 330 350 371 391 412 432 483 512"
|
|
22
|
+
["ses-helper.sh"]="338 359 383 408 442"
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
# Function to add return statement before closing brace
|
|
26
|
+
add_return_statement() {
|
|
27
|
+
local file="$1"
|
|
28
|
+
local line_num="$2"
|
|
29
|
+
|
|
30
|
+
# Check if line before closing brace already has return
|
|
31
|
+
local prev_line
|
|
32
|
+
prev_line=$((line_num - 1))
|
|
33
|
+
if ! sed -n "${prev_line}p" "$file" | grep -q "return"; then
|
|
34
|
+
echo "Adding return statement to $file at line $line_num"
|
|
35
|
+
# Insert return statement before the closing brace
|
|
36
|
+
sed -i "${prev_line}a\\ return 0" "$file"
|
|
37
|
+
else
|
|
38
|
+
echo "Return statement already exists in $file at line $line_num"
|
|
39
|
+
fi
|
|
40
|
+
return 0
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
# Process each file
|
|
44
|
+
for file in "${!FILES_LINES[@]}"; do
|
|
45
|
+
if [[ -f "$file" ]]; then
|
|
46
|
+
echo "Processing $file..."
|
|
47
|
+
lines="${FILES_LINES[$file]}"
|
|
48
|
+
|
|
49
|
+
# Process lines in reverse order to avoid line number shifts
|
|
50
|
+
for line_num in $(echo "$lines" | tr ' ' '\n' | sort -nr); do
|
|
51
|
+
add_return_statement "$file" "$line_num"
|
|
52
|
+
done
|
|
53
|
+
else
|
|
54
|
+
echo "File $file not found"
|
|
55
|
+
fi
|
|
56
|
+
done
|
|
57
|
+
|
|
58
|
+
echo "Mass return statement fix completed!"
|