Add a confirmation gate and --yes bypass to core dev sync so batch file distribution follows the same safety model as the other AI-agent commands.
502 lines
21 KiB
JSON
502 lines
21 KiB
JSON
{
|
|
"cmd": {
|
|
"deploy": {
|
|
"short": "Manage deployments via Coolify",
|
|
"long": "Manage deployments, servers, applications and services via the Coolify API."
|
|
},
|
|
"dev": {
|
|
"short": "Multi-repo development workflows",
|
|
"long": "Development workflow commands for managing multiple repositories.\n\nIncludes git operations, forge integration, CI status, and dev environment management.",
|
|
"api": {
|
|
"short": "API synchronisation tools",
|
|
"test_gen": {
|
|
"short": "Generate public API test stubs",
|
|
"long": "Scan internal service packages and generate compile-time tests for their public API wrappers."
|
|
}
|
|
},
|
|
"health": {
|
|
"short": "Quick health check across all repos",
|
|
"long": "Show a one-line summary of repository health: total repos, dirty count, push/pull status and errors.",
|
|
"repos": "repos",
|
|
"to_push": "to push",
|
|
"to_pull": "to pull",
|
|
"dirty_label": "Dirty:",
|
|
"ahead_label": "Ahead:",
|
|
"behind_label": "Behind:",
|
|
"errors": "errors",
|
|
"errors_label": "Errors:",
|
|
"more": "(+{{.Count}} more)",
|
|
"flag": {
|
|
"verbose": "Show per-repo details"
|
|
}
|
|
},
|
|
"work": {
|
|
"short": "Combined status, commit and push workflow",
|
|
"long": "Show status table for all repos, optionally commit dirty repos and push unpushed commits in a single workflow.",
|
|
"flag": {
|
|
"status": "Show status table only (no commit or push)",
|
|
"commit": "Auto-commit dirty repos before pushing"
|
|
},
|
|
"table_modified": "Modified",
|
|
"table_untracked": "Untracked",
|
|
"table_staged": "Staged",
|
|
"table_ahead": "Ahead",
|
|
"all_up_to_date": "All repos are up to date.",
|
|
"use_commit_flag": "Tip: use --commit to auto-commit dirty repos",
|
|
"error_prefix": "error:"
|
|
},
|
|
"commit": {
|
|
"short": "Claude-assisted commit for dirty repos",
|
|
"long": "Generate commit messages with Claude for repositories that have uncommitted changes.\n\nRuns in single-repo mode when inside a git repo, or multi-repo mode with a registry.",
|
|
"flag": {
|
|
"all": "Commit all dirty repos without prompting"
|
|
},
|
|
"committing": "Committing..."
|
|
},
|
|
"push": {
|
|
"short": "Push repos with unpushed commits",
|
|
"long": "Push all repositories that have commits ahead of remote.\n\nHandles diverged branches by offering to pull and retry.",
|
|
"flag": {
|
|
"force": "Push without confirmation"
|
|
},
|
|
"confirm": "Push?",
|
|
"confirm_push": "Push {{.Commits}} commit(s) across {{.Repos}} repo(s)?",
|
|
"all_up_to_date": "All repos are up to date.",
|
|
"done_pushed": "{{.Count}} pushed",
|
|
"diverged": "branch has diverged",
|
|
"diverged_help": "Some repos have diverged from remote. This usually means someone pushed while you were working.",
|
|
"pull_and_retry": "Pull and retry push?",
|
|
"uncommitted_changes_commit": "Uncommitted changes found. Commit first?"
|
|
},
|
|
"pull": {
|
|
"short": "Pull repos that are behind remote",
|
|
"long": "Pull latest changes for repositories that are behind their remote tracking branch.",
|
|
"flag": {
|
|
"all": "Pull all repos, not just those behind"
|
|
},
|
|
"pulling": "pulling",
|
|
"pulling_repos": "Pulling {{.Count}} repo(s)...",
|
|
"all_up_to_date": "All repos are up to date.",
|
|
"done_pulled": "{{.Count}} pulled",
|
|
"repos_behind": "{{.Count}} repo(s) behind remote",
|
|
"commits_behind": "{{.Count}} commit(s) behind"
|
|
},
|
|
"tag": {
|
|
"short": "Tag and push all repos in dependency order",
|
|
"long": "Bump patch version, update Go dependencies, tag and push all repos in topological order.",
|
|
"flag": {
|
|
"dry_run": "Preview the tag plan without making changes",
|
|
"force": "Tag without confirmation"
|
|
}
|
|
},
|
|
"impact": {
|
|
"short": "Analyse dependency impact of a repo",
|
|
"long": "Show which repositories are affected when a given repo changes, including direct and transitive dependents.",
|
|
"analysis_for": "Impact analysis for",
|
|
"direct_dependents": "{{.Count}} direct dependent(s)",
|
|
"transitive_dependents": "{{.Count}} transitive dependent(s)",
|
|
"no_dependents": "{{.Name}} has no dependents",
|
|
"changes_affect": "Changes to {{.Repo}} affect {{.Affected}} of {{.Total}} repos",
|
|
"requires_registry": "Impact analysis requires a repos.yaml registry"
|
|
},
|
|
"issues": {
|
|
"short": "List open issues across repos",
|
|
"long": "Fetch and display open issues from the Forge API across all registered repositories.",
|
|
"flag": {
|
|
"assignee": "Filter by assignee username",
|
|
"limit": "Maximum issues per repo"
|
|
},
|
|
"open_issues": "{{.Count}} open issue(s)",
|
|
"no_issues": "No open issues found."
|
|
},
|
|
"reviews": {
|
|
"short": "List pull requests needing review",
|
|
"long": "Show open pull requests with review status across all registered repositories.",
|
|
"flag": {
|
|
"all": "Include draft PRs",
|
|
"author": "Filter by PR author"
|
|
},
|
|
"open_prs": "{{.Count}} open PR(s)",
|
|
"no_prs": "No open pull requests found.",
|
|
"approved": "{{.Count}} approved",
|
|
"changes_requested": "{{.Count}} changes requested",
|
|
"draft": "[draft]",
|
|
"status_approved": "approved",
|
|
"status_changes": "changes requested",
|
|
"status_pending": "pending review"
|
|
},
|
|
"ci": {
|
|
"short": "Check CI workflow status",
|
|
"long": "Show CI/CD pipeline status for all repos, with pass/fail counts and optional branch filtering.",
|
|
"flag": {
|
|
"branch": "Branch to check (default: main)",
|
|
"failed": "Show only failed workflows"
|
|
},
|
|
"passing": "{{.Count}} passing",
|
|
"failing": "{{.Count}} failing",
|
|
"repos_checked": "{{.Count}} repos checked",
|
|
"no_ci": "{{.Count}} no CI"
|
|
},
|
|
"apply": {
|
|
"short": "Run a command across repos",
|
|
"long": "Execute a shell command or script in every repo directory, optionally committing and pushing changes.\n\nDesigned for safe batch operations by AI agents.",
|
|
"action": "Action",
|
|
"cancelled": "Cancelled.",
|
|
"confirm": "Proceed?",
|
|
"dry_run_mode": "[dry-run] No changes will be made",
|
|
"no_changes": "no changes",
|
|
"summary": "Summary",
|
|
"targets": "Targets",
|
|
"warning": "This will run the command in each repo directory.",
|
|
"flag": {
|
|
"command": "Shell command to run in each repo",
|
|
"script": "Script file to run in each repo",
|
|
"repos": "Comma-separated list of repo names to target",
|
|
"commit": "Commit changes after running",
|
|
"message": "Commit message (required with --commit)",
|
|
"push": "Push after committing",
|
|
"co_author": "Co-author for commits",
|
|
"dry_run": "Preview without making changes",
|
|
"yes": "Skip confirmation prompt",
|
|
"continue": "Continue on error instead of stopping"
|
|
},
|
|
"error": {
|
|
"no_command": "Either --command or --script is required",
|
|
"both_command_script": "Cannot use both --command and --script",
|
|
"no_repos": "No target repos found",
|
|
"command_failed": "Command failed — stopping (use --continue to skip failures)",
|
|
"commit_needs_message": "--commit requires --message"
|
|
}
|
|
},
|
|
"file_sync": {
|
|
"short": "Sync a file or directory to repos",
|
|
"long": "Copy a file or directory to matching repos, optionally committing and pushing the changes.\n\nDesigned for safe file distribution by AI agents.",
|
|
"source": "Source",
|
|
"targets": "Targets",
|
|
"warning": "This will copy files into each target repo.",
|
|
"confirm": "Sync these repos?",
|
|
"dry_run_mode": "[dry-run] No changes will be made",
|
|
"no_changes": "no changes",
|
|
"summary": "Summary",
|
|
"flag": {
|
|
"to": "Target repo pattern (e.g. core-*)",
|
|
"message": "Commit message (omit to leave uncommitted)",
|
|
"push": "Push after committing",
|
|
"co_author": "Co-author for commits",
|
|
"dry_run": "Preview without making changes",
|
|
"yes": "Skip confirmation prompt"
|
|
},
|
|
"error": {
|
|
"source_not_found": "Source not found: {{.Path}}",
|
|
"no_targets": "No target repos matched the pattern"
|
|
}
|
|
},
|
|
"sync": {
|
|
"short": "Synchronise public API surfaces",
|
|
"long": "Scan internal service packages and regenerate public API wrappers to keep them in sync."
|
|
},
|
|
"workflow": {
|
|
"short": "Manage CI workflow files",
|
|
"long": "List and synchronise CI/CD workflow files across all registered repositories.",
|
|
"no_workflows": "No workflow files found in any repo.",
|
|
"synced": "synced",
|
|
"up_to_date": "up to date",
|
|
"would_sync": "would sync",
|
|
"dry_run_mode": "[dry-run] No changes will be made",
|
|
"run_without_dry_run": "Run without --dry-run to apply changes.",
|
|
"template_not_found": "Template workflow not found: {{.File}}",
|
|
"read_template_error": "Failed to read template workflow",
|
|
"failed_count": "{{.Count}} failed",
|
|
"skipped_count": "{{.Count}} skipped",
|
|
"synced_count": "{{.Count}} synced",
|
|
"would_sync_count": "{{.Count}} would sync",
|
|
"header": {
|
|
"repo": "Repo"
|
|
},
|
|
"list": {
|
|
"short": "Show workflow matrix across repos",
|
|
"long": "Display a table showing which CI/CD workflow files exist in each repository."
|
|
},
|
|
"sync": {
|
|
"short": "Copy a workflow template to all repos",
|
|
"long": "Synchronise a workflow template file into every registered repository's .github/workflows/ directory.",
|
|
"flag": {
|
|
"dry_run": "Preview sync without writing files"
|
|
}
|
|
}
|
|
},
|
|
"scanning_label": "Scanning...",
|
|
"no_git_repos": "No git repositories found.",
|
|
"no_changes": "No changes to commit.",
|
|
"repos_with_changes": "{{.Count}} repo(s) with changes",
|
|
"modified": "{{.Count}} modified",
|
|
"untracked": "{{.Count}} untracked",
|
|
"staged": "{{.Count}} staged",
|
|
"committed": "committed",
|
|
"committing": "Committing",
|
|
"confirm_claude_commit": "Commit with Claude?",
|
|
"done_succeeded": "{{.Count}} succeeded",
|
|
"status": {
|
|
"clean": "clean"
|
|
},
|
|
"vm": {
|
|
"boot": {
|
|
"short": "Start the dev environment VM",
|
|
"long": "Boot the Parallels dev environment virtual machine with configurable memory and CPU.",
|
|
"flag": {
|
|
"memory": "Memory in MB (default: auto)",
|
|
"cpus": "Number of CPUs (default: auto)",
|
|
"fresh": "Discard existing state and boot fresh"
|
|
}
|
|
},
|
|
"install": {
|
|
"short": "Download the dev environment image",
|
|
"long": "Download and install the Parallels dev environment VM image."
|
|
},
|
|
"serve": {
|
|
"short": "Mount project and start dev server",
|
|
"long": "Mount the current project directory into the VM and start the development server.",
|
|
"flag": {
|
|
"port": "Port to expose (default: auto)",
|
|
"path": "Project path to mount"
|
|
}
|
|
},
|
|
"shell": {
|
|
"short": "Open a shell in the dev VM",
|
|
"long": "Open an interactive shell session inside the running dev environment VM.",
|
|
"flag": {
|
|
"console": "Use serial console instead of SSH"
|
|
}
|
|
},
|
|
"stop": {
|
|
"short": "Stop the dev environment VM",
|
|
"long": "Gracefully shut down the running Parallels dev environment VM."
|
|
},
|
|
"update": {
|
|
"short": "Check for and apply VM updates",
|
|
"long": "Check if a newer dev environment image is available and optionally download it.",
|
|
"flag": {
|
|
"apply": "Download and apply the update"
|
|
}
|
|
},
|
|
"status": {
|
|
"short": "Check dev VM status",
|
|
"long": "Show installation and runtime status of the Parallels dev environment VM."
|
|
},
|
|
"claude": {
|
|
"short": "Start sandboxed Claude session in VM",
|
|
"long": "Launch a Claude Code session inside the dev VM with project files mounted and optional authentication.",
|
|
"flag": {
|
|
"no_auth": "Skip authentication forwarding",
|
|
"model": "Model to use for the Claude session",
|
|
"auth": "Authentication flags to pass through"
|
|
}
|
|
},
|
|
"test": {
|
|
"short": "Run tests in the dev environment",
|
|
"long": "Execute the test suite inside the dev environment VM with the current project mounted.",
|
|
"flag": {
|
|
"name": "Run only tests matching this name"
|
|
}
|
|
},
|
|
"already_installed": "Dev environment already installed.",
|
|
"check_updates": "Check for updates with {{.Command}}",
|
|
"downloading": "Downloading dev environment image...",
|
|
"progress_label": "Progress:",
|
|
"installed_in": "Installed in {{.Duration}}",
|
|
"start_with": "Start with {{.Command}}",
|
|
"not_installed": "Dev environment not installed. Run 'core dev install' first.",
|
|
"config_label": "Config:",
|
|
"config_value": "{{.Memory}}MB RAM, {{.CPUs}} CPUs",
|
|
"booting": "Booting dev environment...",
|
|
"running": "Dev environment running",
|
|
"connect_with": "Connect with {{.Command}}",
|
|
"ssh_port": "SSH port:",
|
|
"not_running": "Dev environment is not running.",
|
|
"stopping": "Stopping dev environment...",
|
|
"status_title": "Dev Environment Status",
|
|
"installed_label": "Installed:",
|
|
"installed_yes": "Yes",
|
|
"installed_no": "No",
|
|
"install_with": "Install with {{.Command}}",
|
|
"container_label": "Container:",
|
|
"memory_label": "Memory:",
|
|
"cpus_label": "CPUs:",
|
|
"uptime_label": "Uptime:",
|
|
"latest_label": "Latest:",
|
|
"up_to_date": "Dev environment is up to date.",
|
|
"update_available": "Update available!",
|
|
"run_to_update": "Run {{.Command}} to update.",
|
|
"stopping_current": "Stopping current VM...",
|
|
"downloading_update": "Downloading update...",
|
|
"updated_in": "Updated in {{.Duration}}"
|
|
}
|
|
},
|
|
"docs": {
|
|
"short": "Documentation management",
|
|
"long": "List, scan and synchronise documentation across all registered repositories.",
|
|
"list": {
|
|
"short": "List documentation coverage",
|
|
"long": "Show a table of documentation files (README, CLAUDE.md, CHANGELOG, docs/) for each repo.",
|
|
"coverage_summary": "{{.WithDocs}} with docs, {{.WithoutDocs}} without",
|
|
"header": {
|
|
"readme": "README",
|
|
"claude": "CLAUDE",
|
|
"changelog": "CHANGELOG",
|
|
"docs": "Docs"
|
|
}
|
|
},
|
|
"sync": {
|
|
"short": "Sync docs to a central location",
|
|
"long": "Copy documentation from each repo's docs/ directory into a central output directory.",
|
|
"flag": {
|
|
"dry_run": "Preview sync without writing files",
|
|
"output": "Output directory for synced docs"
|
|
},
|
|
"confirm": "Sync documentation?",
|
|
"dry_run_notice": "Dry run — no files written.",
|
|
"files_count": "({{.Count}} file(s))",
|
|
"repos_with_docs": "{{.Count}} repo(s) with docs",
|
|
"synced_packages": "{{.Count}} package(s) synced",
|
|
"total_summary": "{{.Files}} files from {{.Repos}} repos → {{.Output}}",
|
|
"no_docs_found": "No documentation found in any repo."
|
|
}
|
|
},
|
|
"git": {
|
|
"short": "Git workflow commands",
|
|
"long": "Git operations for single or multi-repo workflows.\n\nIncludes status, commit, push, pull, and safe batch operations for AI agents."
|
|
},
|
|
"setup": {
|
|
"short": "Set up workspace and clone packages",
|
|
"long": "Bootstrap a new workspace or clone packages from a repos.yaml registry.\n\nIn bootstrap mode (no registry), clones the devops repo first, then offers a package wizard.\nIn registry mode, clones all or selected packages into the packages directory.",
|
|
"flag": {
|
|
"all": "Clone all packages without prompting",
|
|
"build": "Run build after cloning",
|
|
"dry_run": "Preview what would be cloned",
|
|
"name": "Project directory name (bootstrap mode)",
|
|
"only": "Filter by repo type (e.g. foundation,module,product)",
|
|
"registry": "Path to repos.yaml"
|
|
},
|
|
"bootstrap_mode": "No registry found — entering bootstrap mode",
|
|
"cloning_current_dir": "Cloning into current directory",
|
|
"creating_project_dir": "Creating project directory",
|
|
"cloned": "cloned",
|
|
"would_clone": "Would clone",
|
|
"already_exists": "already exists",
|
|
"would_load_registry": "Would load registry from",
|
|
"org_label": "Organisation:",
|
|
"to_clone": "{{.Count}} to clone",
|
|
"exist": "{{.Count}} exist",
|
|
"nothing_to_clone": "Nothing to clone — all repos already exist.",
|
|
"would_clone_list": "Would clone:",
|
|
"cancelled": "Cancelled.",
|
|
"done": "done",
|
|
"cloned_count": "{{.Count}} cloned",
|
|
"already_exist_count": "{{.Count}} already exist",
|
|
"wizard": {
|
|
"git_repo_title": "Git Repository Detected",
|
|
"what_to_do": "This directory is already a git repository. What would you like to do?",
|
|
"project_name_title": "Project Name",
|
|
"project_name_desc": "Enter a name for the project directory",
|
|
"package_selection": "Package Selection",
|
|
"selection_hint": "Use space to select, enter to confirm",
|
|
"select_packages": "Select packages to clone",
|
|
"confirm_clone": "Clone {{.Count}} package(s) to {{.Target}}?"
|
|
},
|
|
"repo": {
|
|
"short": "Generate .core config for a repo",
|
|
"long": "Detect the current project type and generate .core/build.yaml, release.yaml, and test.yaml for the repository.",
|
|
"setting_up": "Setting up repo",
|
|
"detected_type": "Detected project type",
|
|
"would_create": "Would create",
|
|
"created": "Created"
|
|
},
|
|
"github": {
|
|
"short": "Configure GitHub repo settings",
|
|
"long": "Apply standardised GitHub settings (labels, webhooks, branch protection, security) to repos.",
|
|
"flag": {
|
|
"repo": "Target a specific repo",
|
|
"all": "Apply all settings",
|
|
"labels": "Sync issue labels",
|
|
"webhooks": "Sync webhooks",
|
|
"protection": "Sync branch protection rules",
|
|
"security": "Sync security settings",
|
|
"check": "Check current settings (dry run)",
|
|
"config": "Path to GitHub config file"
|
|
},
|
|
"error": {
|
|
"not_authenticated": "GitHub CLI (gh) is not authenticated. Run 'gh auth login' first.",
|
|
"config_not_found": "GitHub config file not found",
|
|
"conflicting_flags": "Cannot use --check with modification flags"
|
|
},
|
|
"dry_run_mode": "[dry-run] Checking current settings",
|
|
"no_repos_specified": "No repos specified.",
|
|
"usage_hint": "Use --repo=<name> or --all to target repos.",
|
|
"run_without_check": "Run without --check to apply changes.",
|
|
"no_changes": "No changes needed",
|
|
"repos_checked": "Repos checked",
|
|
"all_up_to_date": "All repos are up to date",
|
|
"repos_with_changes": "Repos with changes",
|
|
"to_create": "To create",
|
|
"to_update": "To update",
|
|
"to_delete": "To delete"
|
|
}
|
|
}
|
|
},
|
|
"common": {
|
|
"flag": {
|
|
"registry": "Path to repos.yaml registry",
|
|
"verbose": "Show detailed output"
|
|
},
|
|
"count": {
|
|
"commits": "{{.Count}} commit(s)",
|
|
"failed": "{{.Count}} failed",
|
|
"files": "{{.Count}} file(s)",
|
|
"pending": "{{.Count}} pending",
|
|
"repos_unpushed": "{{.Count}} repo(s) with unpushed commits",
|
|
"skipped": "{{.Count}} skipped",
|
|
"succeeded": "{{.Count}} succeeded"
|
|
},
|
|
"status": {
|
|
"clean": "clean",
|
|
"dirty": "dirty",
|
|
"synced": "synced",
|
|
"up_to_date": "up to date",
|
|
"cloning": "Cloning",
|
|
"running": "Running",
|
|
"stopped": "Stopped"
|
|
},
|
|
"prompt": {
|
|
"abort": "Aborted."
|
|
},
|
|
"progress": {
|
|
"checking_updates": "Checking for updates...",
|
|
"checking": "Checking..."
|
|
}
|
|
},
|
|
"cli": {
|
|
"aborted": "Aborted."
|
|
},
|
|
"error": {
|
|
"gh_not_found": "GitHub CLI (gh) not found. Install it from https://cli.github.com/",
|
|
"registry_not_found": "Registry (repos.yaml) not found. Run from a workspace directory or use --registry.",
|
|
"repo_not_found": "Repository not found: {{.Name}}"
|
|
},
|
|
"i18n": {
|
|
"count": {
|
|
"failed": "{{.Count}} failed"
|
|
},
|
|
"done": {
|
|
"sync": "Sync complete."
|
|
},
|
|
"fail": {
|
|
"load": "Failed to load {{.Name}}",
|
|
"run": "Failed to run {{.Name}}",
|
|
"scan": "Failed to scan {{.Name}}"
|
|
},
|
|
"progress": {
|
|
"check": "Checking",
|
|
"fetch": "Fetching"
|
|
}
|
|
}
|
|
}
|