@ngocsangairvds/vsaf 3.1.26 → 3.2.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/package.json +2 -2
- package/src/global.js +70 -10
- package/tools/skills/vds-scripts-skill/.openskills.json +6 -0
- package/tools/skills/vds-scripts-skill/QUALITY.md +44 -0
- package/tools/skills/vds-scripts-skill/SKILL.md +135 -0
- package/tools/skills/vds-scripts-skill/references/audit-commands.md +171 -0
- package/tools/skills/vds-scripts-skill/references/capability-index.md +34 -0
- package/tools/skills/vds-scripts-skill/references/development-commands.md +12 -0
- package/tools/skills/vds-scripts-skill/references/google-sheets.md +73 -0
- package/tools/skills/vds-scripts-skill/references/integration-commands.md +17 -0
- package/tools/skills/vds-scripts-skill/references/platform-bootstrap.md +31 -0
- package/tools/skills/vds-scripts-skill/references/specialist-routing.md +14 -0
- package/tools/skills/vds-scripts-skill/references/validation-commands.md +15 -0
- package/tools/skills/vsaf-build/SKILL.md +32 -2
- package/tools/skills/vsaf-push-prd/SKILL.md +43 -40
- package/tools/skills/vsaf-push-srs/SKILL.md +44 -41
- package/tools/skills/vsaf-ship/SKILL.md +41 -10
- package/tools/skills/vsaf-test/SKILL.md +8 -0
- package/tools/vds-scripts/.mcp.json +11 -0
- package/tools/vds-scripts/.secrets.baseline +133 -0
- package/tools/vds-scripts/AGENTS.md +152 -0
- package/tools/vds-scripts/CLAUDE.md +101 -0
- package/tools/vds-scripts/CLI_COMMAND_OPTIMIZATION.md +156 -0
- package/tools/vds-scripts/PACKAGE_P125B_IMPLEMENTATION_SUMMARY.md +131 -0
- package/tools/vds-scripts/PROJECT_COMPLETION_SUMMARY.md +45 -0
- package/tools/vds-scripts/README.md +97 -0
- package/tools/vds-scripts/bitbucket_manifest_mapping.toml +34 -0
- package/tools/vds-scripts/bitbucket_orchestrator/ARCHITECTURE_ANALYSIS.md +258 -0
- package/tools/vds-scripts/bitbucket_orchestrator/BITBUCKET_API_PRACTICES.md +393 -0
- package/tools/vds-scripts/bitbucket_orchestrator/EVALUATION_REPORT.md +61 -0
- package/tools/vds-scripts/bitbucket_orchestrator/FEATURES.md +908 -0
- package/tools/vds-scripts/bitbucket_orchestrator/README.md +687 -0
- package/tools/vds-scripts/bitbucket_orchestrator/pyproject.toml +40 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/__init__.py +20 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/async_client.py +657 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/cli.py +2108 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/client.py +2534 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/config.py +171 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/errors.py +67 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/factory.py +185 -0
- package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/protocols.py +244 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/__init__.py +8 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/conftest.py +65 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_advanced_search.py +151 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_async_client.py +546 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_branch_permissions.py +145 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_cli.py +115 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client.py +157 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_branch_conditions.py +79 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_advanced.py +163 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_file.py +32 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_deployment_environments.py +194 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_issues.py +164 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pipelines_advanced.py +179 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pr_blockers.py +119 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_repository_variables.py +156 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code.py +98 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_advanced.py +282 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_insights.py +335 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_conditions.py +147 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_config.py +131 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_deployment_env.py +352 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_factory.py +371 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_fork_operations.py +204 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_issue_cli.py +261 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pipeline_advanced.py +270 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pr_blocker.py +204 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_protocols.py +334 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_settings.py +343 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_variables.py +270 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_webhooks.py +189 -0
- package/tools/vds-scripts/bitbucket_orchestrator/tests/test_workspace.py +233 -0
- package/tools/vds-scripts/bitbucket_orchestrator/uv.lock +742 -0
- package/tools/vds-scripts/confluence_orchestrator/Dockerfile +19 -0
- package/tools/vds-scripts/confluence_orchestrator/README.md +412 -0
- package/tools/vds-scripts/confluence_orchestrator/SYNC_SCRIPTS.md +127 -0
- package/tools/vds-scripts/confluence_orchestrator/SYNC_STANDARDIZATION.md +108 -0
- package/tools/vds-scripts/confluence_orchestrator/pyproject.toml +48 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/__init__.py +20 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/cli.py +2532 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/config.py +175 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content.py +290 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content_v2.py +94 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/crawl_tree.py +1835 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/errors.py +80 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/eventing.py +109 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/http.py +1114 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/orchestration.py +165 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/reporting.py +78 -0
- package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree.py +121 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_from_markdown.py +213 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_to_confluence.py +305 -0
- package/tools/vds-scripts/confluence_orchestrator/sync_png_attachments.py +305 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/conftest.py +8 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_content.py +224 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_search.py +188 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_cache_management.py +247 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_cli.py +499 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_config.py +83 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_content.py +186 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_content_flags.py +27 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_crawl_tree.py +2250 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_draft_management.py +223 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing.py +71 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_chaos.py +37 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_rate_limit.py +44 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_timeout.py +49 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_export.py +230 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_history.py +204 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_http.py +117 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_orchestration.py +91 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_reporting.py +24 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_search_cql.py +34 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_space_management.py +237 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_space_permissions.py +332 -0
- package/tools/vds-scripts/confluence_orchestrator/tests/test_user_group_management.py +388 -0
- package/tools/vds-scripts/confluence_orchestrator/uv.lock +1023 -0
- package/tools/vds-scripts/git_orchestrator/ENHANCEMENT_SUMMARY.md +119 -0
- package/tools/vds-scripts/git_orchestrator/README.md +280 -0
- package/tools/vds-scripts/git_orchestrator/VERIFICATION_REPORT.md +152 -0
- package/tools/vds-scripts/git_orchestrator/pyproject.toml +35 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__init__.py +7 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__main__.py +4 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/cli.py +847 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/logging_config.py +63 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/manifest.py +129 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/orchestrator.py +819 -0
- package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/reporting.py +53 -0
- package/tools/vds-scripts/git_orchestrator/tests/__init__.py +0 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_cli_settings.py +21 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_integration.py +74 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_manifest.py +79 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_orchestrator.py +204 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_public_api.py +236 -0
- package/tools/vds-scripts/git_orchestrator/tests/test_resilience.py +345 -0
- package/tools/vds-scripts/git_orchestrator/uv.lock +271 -0
- package/tools/vds-scripts/jira_orchestrator/README.md +770 -0
- package/tools/vds-scripts/jira_orchestrator/pyproject.toml +39 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/__init__.py +1 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/adapter.py +1320 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/cli.py +2271 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/config.py +138 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/errors.py +67 -0
- package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/reporting.py +65 -0
- package/tools/vds-scripts/jira_orchestrator/tests/__init__.py +1 -0
- package/tools/vds-scripts/jira_orchestrator/tests/conftest.py +86 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_agile_list_payloads.py +54 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_bulk_operations.py +69 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_components.py +57 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_createmeta.py +45 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_dashboard.py +117 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_issue_properties.py +54 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_permissions_compat.py +42 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_reindex.py +42 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_remote_links.py +76 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_transitions.py +91 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_user_management.py +110 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_version_management.py +133 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_watchers.py +41 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_advanced_search.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_agile.py +256 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_application_properties.py +193 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_backlog.py +91 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_bulk_operations.py +277 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_cli.py +106 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_components.py +106 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_config.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_dashboard.py +122 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_discover_fields.py +207 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_filter_management.py +333 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_archiving.py +164 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_links.py +257 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_issue_properties.py +171 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_link_types.py +314 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_parse_set.py +37 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_permissions.py +273 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_reindex.py +81 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_remote_links.py +254 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_security_schemes.py +170 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_transitions_changelog.py +114 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_user_management.py +226 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_version_management.py +339 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_watchers.py +101 -0
- package/tools/vds-scripts/jira_orchestrator/tests/test_worklog.py +223 -0
- package/tools/vds-scripts/jira_orchestrator/uv.lock +738 -0
- package/tools/vds-scripts/mcp_server/Dockerfile +34 -0
- package/tools/vds-scripts/mcp_server/README.md +140 -0
- package/tools/vds-scripts/mcp_server/pyproject.toml +42 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/__init__.py +4 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/config.py +36 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/server.py +66 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/__init__.py +14 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/bitbucket_tools.py +47 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/confluence_tools.py +59 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/git_tools.py +71 -0
- package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/jira_tools.py +63 -0
- package/tools/vds-scripts/mcp_server/tests/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/conftest.py +29 -0
- package/tools/vds-scripts/mcp_server/tests/unit/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_bitbucket_tools.py +25 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_confluence_tools.py +25 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_git_tools.py +32 -0
- package/tools/vds-scripts/mcp_server/tests/unit/test_jira_tools.py +32 -0
- package/tools/vds-scripts/mcp_server/tests/verification/__init__.py +2 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_confluence_tools.py +40 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_jira_tools.py +37 -0
- package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_tool_registration.py +47 -0
- package/tools/vds-scripts/mcp_server/uv.lock +1032 -0
- package/tools/vds-scripts/mypy.ini +5 -0
- package/tools/vds-scripts/pyproject.toml +29 -0
- package/tools/vds-scripts/repo-manifest.yaml +273 -0
- package/tools/vds-scripts/repo-manifest.yaml.example +25 -0
- package/tools/vds-scripts/scripts/BRD-Validation-API.postman_collection.json +706 -0
- package/tools/vds-scripts/scripts/BRD-Validation-README.md +308 -0
- package/tools/vds-scripts/scripts/README.md +162 -0
- package/tools/vds-scripts/scripts/bootstrap_uv.sh +30 -0
- package/tools/vds-scripts/scripts/brd-validation-environment.json +51 -0
- package/tools/vds-scripts/scripts/brd-validation-test-results.json +13023 -0
- package/tools/vds-scripts/scripts/brd_coverage_report.json +276 -0
- package/tools/vds-scripts/scripts/create_memory_session.py +35 -0
- package/tools/vds-scripts/scripts/deployment/load_docker_images_offline.sh +90 -0
- package/tools/vds-scripts/scripts/final_completion_report.md +139 -0
- package/tools/vds-scripts/scripts/folder_structure_report.json +321 -0
- package/tools/vds-scripts/scripts/generate_completion_report.py +125 -0
- package/tools/vds-scripts/scripts/generate_intellij_modules.py +150 -0
- package/tools/vds-scripts/scripts/link_integrity_report.json +807 -0
- package/tools/vds-scripts/scripts/move_audit_artifact_pages.py +255 -0
- package/tools/vds-scripts/scripts/move_audit_artifact_pages_rest.py +165 -0
- package/tools/vds-scripts/scripts/move_wrong_dept_pages.py +216 -0
- package/tools/vds-scripts/scripts/save_intellij_memories.py +120 -0
- package/tools/vds-scripts/scripts/save_memories_to_vds_ai.py +83 -0
- package/tools/vds-scripts/scripts/save_memories_vds_style.py +129 -0
- package/tools/vds-scripts/scripts/search_intellij_memories.py +50 -0
- package/tools/vds-scripts/scripts/setup_intellij_workspace.py +65 -0
- package/tools/vds-scripts/scripts/target-state-automation/README.md +89 -0
- package/tools/vds-scripts/scripts/target-state-automation/confluence_sync_coordinator.sh +27 -0
- package/tools/vds-scripts/scripts/target-state-automation/coordination.sh +114 -0
- package/tools/vds-scripts/scripts/target-state-automation/diagram_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/docs_root.sh +22 -0
- package/tools/vds-scripts/scripts/target-state-automation/generate_diagrams.sh +22 -0
- package/tools/vds-scripts/scripts/target-state-automation/markdown_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/progress_dashboard.sh +17 -0
- package/tools/vds-scripts/scripts/target-state-automation/schema_coordinator.sh +25 -0
- package/tools/vds-scripts/scripts/target-state-automation/sync_confluence.sh +30 -0
- package/tools/vds-scripts/scripts/target-state-automation/update_dependencies.sh +19 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_links.sh +86 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_markdown.sh +52 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_schemas.sh +26 -0
- package/tools/vds-scripts/scripts/target-state-automation/validate_structure.sh +98 -0
- package/tools/vds-scripts/scripts/update_modules_xml.py +190 -0
- package/tools/vds-scripts/scripts/uv-workspace-alignment-verification-2026-03-25.md +128 -0
- package/tools/vds-scripts/scripts/validate_brd_coverage.py +179 -0
- package/tools/vds-scripts/scripts/validate_folder_structure.py +240 -0
- package/tools/vds-scripts/scripts/validate_link_integrity.py +272 -0
- package/tools/vds-scripts/scripts/vds_sh_helpers.sh +180 -0
- package/tools/vds-scripts/scripts/verification/phase2_portable_paths_ubuntu_docker.sh +26 -0
- package/tools/vds-scripts/scripts/worktree_uv.sh +48 -0
- package/tools/vds-scripts/uv.lock +8 -0
- package/tools/vds-scripts/vds_cli/README.md +126 -0
- package/tools/vds-scripts/vds_cli/VERIFICATION_REPORT.md +41 -0
- package/tools/vds-scripts/vds_cli/pyproject.toml +38 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/__init__.py +3 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/cli.py +173 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/docs_sync.py +1203 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/env.py +41 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/__init__.py +3 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/google_sheets_orchestrator.py +198 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/router.py +93 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/sync_api.py +647 -0
- package/tools/vds-scripts/vds_cli/src/vds_cli/sync_service.py +266 -0
- package/tools/vds-scripts/vds_cli/tests/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/conftest.py +49 -0
- package/tools/vds-scripts/vds_cli/tests/unit/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_cli.py +143 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_docs_sync.py +422 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_env.py +51 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_router.py +72 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_sync_api.py +357 -0
- package/tools/vds-scripts/vds_cli/tests/unit/test_sync_service.py +160 -0
- package/tools/vds-scripts/vds_cli/tests/verification/__init__.py +2 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_bitbucket_real.py +33 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_confluence_real.py +35 -0
- package/tools/vds-scripts/vds_cli/tests/verification/test_jira_real.py +41 -0
- package/tools/vds-scripts/vds_cli/uv.lock +524 -0
- package/tools/vds-scripts/vds_cli_common/README.md +190 -0
- package/tools/vds-scripts/vds_cli_common/pyproject.toml +92 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/__init__.py +34 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/completers.py +139 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/context.py +201 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/env.py +119 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/errors.py +318 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/output.py +284 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/paths.py +78 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/testing.py +213 -0
- package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/version.py +85 -0
- package/tools/vds-scripts/vds_cli_common/tests/__init__.py +1 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_completers.py +148 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_context.py +192 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_env.py +102 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_errors.py +186 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_output.py +229 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_paths.py +61 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_testing.py +138 -0
- package/tools/vds-scripts/vds_cli_common/tests/test_version.py +64 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Phase 2 portable path/config verification on Ubuntu via Docker Compose.
|
|
5
|
+
# This validates the shared helper layer in a real Linux userspace while keeping
|
|
6
|
+
# the checked-out worktree mounted from the host.
|
|
7
|
+
#
|
|
8
|
+
# What this script proves:
|
|
9
|
+
# - explicit VDS env overrides work in Linux containers
|
|
10
|
+
# - platformdirs-backed helper defaults remain importable in Linux
|
|
11
|
+
# - focused Phase 2 tests pass under an Ubuntu image with uv installed
|
|
12
|
+
#
|
|
13
|
+
# What this script does NOT prove:
|
|
14
|
+
# - native Windows execution
|
|
15
|
+
# - Windows container behavior
|
|
16
|
+
# - any host-specific Docker Desktop path quirks beyond this mounted workspace
|
|
17
|
+
|
|
18
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
19
|
+
WORKTREE_ROOT="$(cd "$SCRIPT_DIR/.."/.. && pwd)"
|
|
20
|
+
COMPOSE_FILE="$WORKTREE_ROOT/docker/compose.phase2-verification.yml"
|
|
21
|
+
|
|
22
|
+
mkdir -p "$WORKTREE_ROOT/.phase2-linux/config" "$WORKTREE_ROOT/.phase2-linux/cache" "$WORKTREE_ROOT/.phase2-linux/logs"
|
|
23
|
+
|
|
24
|
+
docker compose -f "$COMPOSE_FILE" run --rm phase2-ubuntu-verifier
|
|
25
|
+
|
|
26
|
+
echo "Phase 2 Ubuntu/Docker Compose verification completed successfully."
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Run uv in the current worktree without inheriting a mismatched active virtualenv.
|
|
3
|
+
# Usage: scripts/worktree_uv.sh <uv args...>
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
8
|
+
WORKTREE_VENV="${ROOT}/.venv"
|
|
9
|
+
site_packages="$(echo "$WORKTREE_VENV"/lib/python*/site-packages)"
|
|
10
|
+
|
|
11
|
+
# uv project commands manage their own environment by default.
|
|
12
|
+
# If a parent checkout exported VIRTUAL_ENV from a different repo/worktree,
|
|
13
|
+
# uv will warn and ignore it. Clear inherited active-environment state so
|
|
14
|
+
# worktree commands are quiet and deterministic.
|
|
15
|
+
if [[ -n "${VIRTUAL_ENV:-}" && "${VIRTUAL_ENV}" != "${WORKTREE_VENV}" ]]; then
|
|
16
|
+
unset VIRTUAL_ENV
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Prevent a parent shell from forcing a different project environment.
|
|
20
|
+
unset UV_PROJECT_ENVIRONMENT
|
|
21
|
+
unset CONDA_PREFIX
|
|
22
|
+
|
|
23
|
+
# Worktree venvs in this repo rely on editable _vds_*.pth files. Rebuild
|
|
24
|
+
# PYTHONPATH from those stubs so uv-launched entrypoints resolve workspace
|
|
25
|
+
# packages consistently even when Python skips underscore-prefixed .pth files.
|
|
26
|
+
if [[ -d "$site_packages" ]]; then
|
|
27
|
+
pythonpath_entries=()
|
|
28
|
+
while IFS= read -r -d '' pth_file; do
|
|
29
|
+
while IFS= read -r line || [[ -n "$line" ]]; do
|
|
30
|
+
[[ -z "$line" ]] && continue
|
|
31
|
+
pythonpath_entries+=("$line")
|
|
32
|
+
done < "$pth_file"
|
|
33
|
+
done < <(find "$site_packages" -maxdepth 1 -type f -name '_vds_*.pth' -print0 | sort -z)
|
|
34
|
+
|
|
35
|
+
if [[ ${#pythonpath_entries[@]} -gt 0 ]]; then
|
|
36
|
+
joined_pythonpath=""
|
|
37
|
+
for entry in "${pythonpath_entries[@]}"; do
|
|
38
|
+
if [[ -z "$joined_pythonpath" ]]; then
|
|
39
|
+
joined_pythonpath="$entry"
|
|
40
|
+
else
|
|
41
|
+
joined_pythonpath="$joined_pythonpath:$entry"
|
|
42
|
+
fi
|
|
43
|
+
done
|
|
44
|
+
export PYTHONPATH="$joined_pythonpath${PYTHONPATH:+:$PYTHONPATH}"
|
|
45
|
+
fi
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
exec uv "$@"
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# VDS CLI - Cross-Platform Python CLI
|
|
2
|
+
|
|
3
|
+
Cross-platform Python CLI wrapper for VDS Platform operations.
|
|
4
|
+
|
|
5
|
+
## Installation (uv-native)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cd vds-scripts
|
|
9
|
+
# Optional: prime every project environment (add --frozen or other uv sync flags as needed)
|
|
10
|
+
./scripts/bootstrap_uv.sh --frozen
|
|
11
|
+
|
|
12
|
+
# Or just sync this package when needed
|
|
13
|
+
uv sync --project vds_cli
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
> Per the official uv project documentation, `uv run` automatically creates or updates the local `.venv` for the
|
|
17
|
+
> requested project when it executes, so no manual `uv pip install -e` is required. Use `uv sync --project vds_cli` (or
|
|
18
|
+
> the bootstrap script) only when you want to pre-build the environment ahead of time. (Source:
|
|
19
|
+
> [uv docs – The project environment](https://github.com/astral-sh/uv/blob/main/docs/concepts/projects/layout.md#the-project-environment))
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
### Environment Management
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Load environment (loads from ~/.vds/.env)
|
|
27
|
+
uv run --project vds_cli vds-cli env load
|
|
28
|
+
|
|
29
|
+
# Check environment status
|
|
30
|
+
uv run --project vds_cli vds-cli env status
|
|
31
|
+
|
|
32
|
+
# Check system status (orchestrators + environment)
|
|
33
|
+
uv run --project vds_cli vds-cli status
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Using Orchestrators
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# JIRA operations
|
|
40
|
+
uv run --project vds_cli vds-cli jira search "project = NTTC" --limit 20
|
|
41
|
+
uv run --project vds_cli vds-cli jira issue NTTC-123
|
|
42
|
+
|
|
43
|
+
# Confluence operations
|
|
44
|
+
uv run --project vds_cli vds-cli confluence content search "space = TDOV"
|
|
45
|
+
uv run --project vds_cli vds-cli confluence content page 99647801
|
|
46
|
+
|
|
47
|
+
# Bitbucket operations
|
|
48
|
+
uv run --project vds_cli vds-cli bitbucket projects
|
|
49
|
+
uv run --project vds_cli vds-cli bitbucket repositories
|
|
50
|
+
|
|
51
|
+
# Git operations
|
|
52
|
+
uv run --project vds_cli vds-cli git clone lep
|
|
53
|
+
uv run --project vds_cli vds-cli git pull --project insurance
|
|
54
|
+
uv run --project vds_cli vds-cli git status --match "*service*"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Help
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Show main help
|
|
61
|
+
uv run --project vds_cli vds-cli --help
|
|
62
|
+
|
|
63
|
+
# Show command help
|
|
64
|
+
uv run --project vds_cli vds-cli jira --help
|
|
65
|
+
uv run --project vds_cli vds-cli confluence --help
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Features
|
|
69
|
+
|
|
70
|
+
- ✅ **Cross-platform**: Works on Mac, Linux, and Windows
|
|
71
|
+
- ✅ **Environment Management**: Automatic loading from `~/.vds/.env` using pydantic-settings v2.12.0+
|
|
72
|
+
- ✅ **Unified Interface**: Single CLI for all orchestrators (JIRA, Confluence, Bitbucket, Git)
|
|
73
|
+
- ✅ **Rich Console Output**: Beautiful tables and formatted output
|
|
74
|
+
- ✅ **Type-Safe Configuration**: Full Python type hints and validation
|
|
75
|
+
- ✅ **Quality Assured**: 87% test coverage, zero ruff linting issues
|
|
76
|
+
|
|
77
|
+
## Migration from Bash CLI
|
|
78
|
+
|
|
79
|
+
The Python CLI (`vds-cli`) replaces the legacy bash wrapper (now removed). The command interface is identical:
|
|
80
|
+
|
|
81
|
+
**Before (bash)**:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
uv run --project vds_cli vds-cli jira search "project = NTTC" 20
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**After (Python)**:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
uv run --project vds_cli vds-cli jira search "project = NTTC" --limit 20
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
All commands work the same way, with improved error handling and cross-platform support.
|
|
94
|
+
|
|
95
|
+
## Development
|
|
96
|
+
|
|
97
|
+
### Running Tests
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
cd vds-scripts/vds_cli
|
|
101
|
+
uv run pytest tests/unit/ -v
|
|
102
|
+
uv run pytest tests/verification/ -v # Requires credentials
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Code Quality
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Lint check
|
|
109
|
+
uv run ruff check src/
|
|
110
|
+
|
|
111
|
+
# Format code
|
|
112
|
+
uv run ruff format src/
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Requirements
|
|
116
|
+
|
|
117
|
+
- Python >= 3.11
|
|
118
|
+
- uv (for package management)
|
|
119
|
+
- Environment file at `~/.vds/.env` with credentials
|
|
120
|
+
|
|
121
|
+
## Dependencies
|
|
122
|
+
|
|
123
|
+
- **typer** >= 0.20.0 - CLI framework
|
|
124
|
+
- **rich** >= 13.7.0 - Console output
|
|
125
|
+
- **pydantic** >= 2.12.3 - Data validation
|
|
126
|
+
- **pydantic-settings** >= 2.12.0 - Settings management
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# VDS CLI Verification Report
|
|
2
|
+
|
|
3
|
+
**Date**: January 10, 2026
|
|
4
|
+
**Status**: ✅ PASSED
|
|
5
|
+
|
|
6
|
+
## Summary
|
|
7
|
+
|
|
8
|
+
The VDS CLI (`vds-cli`) has been verified for production readiness. All unit tests passed, and code quality checks (linting) are clean.
|
|
9
|
+
|
|
10
|
+
## Verification Steps
|
|
11
|
+
|
|
12
|
+
### 1. Code Quality
|
|
13
|
+
- **Tool**: `ruff`
|
|
14
|
+
- **Result**: ✅ Passed (Zero issues)
|
|
15
|
+
- **Actions**: Fixed trailing whitespace in `cli.py` and `env.py`.
|
|
16
|
+
|
|
17
|
+
### 2. Unit Tests
|
|
18
|
+
- **Tool**: `pytest`
|
|
19
|
+
- **Coverage**: 77%
|
|
20
|
+
- **Result**: ✅ Passed (19/19 tests)
|
|
21
|
+
- **Fixes**:
|
|
22
|
+
- Updated `test_cli_git_command` to properly mock `settings` object attributes (avoiding `TypeError`).
|
|
23
|
+
- Updated `test_run_orchestrator_success` to assert correct entry point usage (`vds-jira-cli`) instead of legacy `python -m` invocation.
|
|
24
|
+
|
|
25
|
+
### 3. Installation & Environment
|
|
26
|
+
- **Tool**: `uv`
|
|
27
|
+
- **Result**: ✅ Validated dependency sync and virtual environment creation.
|
|
28
|
+
|
|
29
|
+
## Key Components Verified
|
|
30
|
+
|
|
31
|
+
| Component | Status | Notes |
|
|
32
|
+
|-----------|--------|-------|
|
|
33
|
+
| `cli.py` | ✅ | Main entry point, command routing |
|
|
34
|
+
| `router.py` | ✅ | Orchestrator delegation logic |
|
|
35
|
+
| `env.py` | ✅ | Environment variable loading (pydantic-settings) |
|
|
36
|
+
|
|
37
|
+
## Recommendations
|
|
38
|
+
|
|
39
|
+
- Maintain `pytest` coverage above 75%.
|
|
40
|
+
- Continue using `uv sync` for dependency management.
|
|
41
|
+
- Ensure `~/.vds/.env` contains valid credentials for integration tests.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "vds-cli"
|
|
3
|
+
version = "4.0.0"
|
|
4
|
+
description = "Cross-platform VDS Platform CLI"
|
|
5
|
+
requires-python = ">=3.11"
|
|
6
|
+
dependencies = [
|
|
7
|
+
"typer>=0.20.0", # Latest: 0.20.0 (Oct 2025) - Context7: /websites/typer_tiangolo
|
|
8
|
+
"rich>=13.7.0", # Latest: 13.7.0+ (Nov 2025)
|
|
9
|
+
"pydantic>=2.12.3", # Latest: 2.12.3+ (Oct 2025)
|
|
10
|
+
"pydantic-settings>=2.12.0", # Latest: 2.12.0 (Nov 2025) - Context7: /pydantic/pydantic-settings
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
[project.scripts]
|
|
14
|
+
vds-cli = "vds_cli.cli:app"
|
|
15
|
+
|
|
16
|
+
[build-system]
|
|
17
|
+
requires = ["hatchling>=1.20.0"]
|
|
18
|
+
build-backend = "hatchling.build"
|
|
19
|
+
|
|
20
|
+
[project.optional-dependencies]
|
|
21
|
+
dev = [
|
|
22
|
+
"pytest>=9.0.1", # Latest: 9.0.1+ - Context7: /pytest-dev/pytest
|
|
23
|
+
"pytest-cov>=5.0.0",
|
|
24
|
+
"ruff>=0.14.5", # Latest: 0.14.5+ - Context7: /astral-sh/ruff
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[tool.uv]
|
|
28
|
+
package = true
|
|
29
|
+
|
|
30
|
+
[tool.uv.sources]
|
|
31
|
+
vds_cli = { path = "src" }
|
|
32
|
+
|
|
33
|
+
[dependency-groups]
|
|
34
|
+
dev = [
|
|
35
|
+
"pytest>=9.0.1",
|
|
36
|
+
"pytest-cov>=5.0.0",
|
|
37
|
+
"ruff>=0.14.5",
|
|
38
|
+
]
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"""Main CLI application using Typer.
|
|
2
|
+
|
|
3
|
+
Based on Typer v0.20.0+ API
|
|
4
|
+
Context7: /websites/typer_tiangolo
|
|
5
|
+
Key Features: typer.Typer(), @app.command(), Annotated options
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
import typer
|
|
11
|
+
from rich.console import Console
|
|
12
|
+
from rich.table import Table
|
|
13
|
+
|
|
14
|
+
from .env import load_environment
|
|
15
|
+
from .router import run_orchestrator
|
|
16
|
+
|
|
17
|
+
app = typer.Typer(help="VDS Platform CLI - Unified Interface for AI Agents")
|
|
18
|
+
console = Console()
|
|
19
|
+
|
|
20
|
+
PASS_THRU_CONTEXT = {"allow_extra_args": True, "ignore_unknown_options": True}
|
|
21
|
+
|
|
22
|
+
# Get scripts directory (parent of vds_cli package)
|
|
23
|
+
SCRIPT_DIR = Path(__file__).resolve().parent.parent.parent.parent
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@app.command()
|
|
27
|
+
def env(
|
|
28
|
+
action: str = typer.Argument(..., help="Action: load or status"),
|
|
29
|
+
) -> None:
|
|
30
|
+
"""Environment management."""
|
|
31
|
+
settings = load_environment()
|
|
32
|
+
|
|
33
|
+
if action == "load":
|
|
34
|
+
console.print("[blue]🔄 Loading VDS environment...[/blue]")
|
|
35
|
+
if settings.vds_username:
|
|
36
|
+
console.print("[green]✅ VDS environment loaded successfully.[/green]")
|
|
37
|
+
else:
|
|
38
|
+
console.print("[yellow]⚠️ VDS environment file not found at ~/.vds/.env[/yellow]")
|
|
39
|
+
console.print("[yellow]💡 Create ~/.vds/.env with your credentials[/yellow]")
|
|
40
|
+
|
|
41
|
+
elif action == "status":
|
|
42
|
+
table = Table(title="Environment Status")
|
|
43
|
+
table.add_column("Variable", style="cyan")
|
|
44
|
+
table.add_column("Status", style="magenta")
|
|
45
|
+
|
|
46
|
+
table.add_row(
|
|
47
|
+
"Bitbucket Token",
|
|
48
|
+
"✅ Set" if settings.bitbucket_access_token else "❌ Missing",
|
|
49
|
+
)
|
|
50
|
+
table.add_row(
|
|
51
|
+
"Internal Confluence Token",
|
|
52
|
+
"✅ Set" if settings.internal_confluence_token else "❌ Missing",
|
|
53
|
+
)
|
|
54
|
+
table.add_row(
|
|
55
|
+
"External Confluence Token",
|
|
56
|
+
"✅ Set" if settings.external_confluence_token else "❌ Missing",
|
|
57
|
+
)
|
|
58
|
+
table.add_row(
|
|
59
|
+
"VDS Credentials",
|
|
60
|
+
"✅ Set" if settings.vds_username and settings.vds_password else "❌ Missing",
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
console.print(table)
|
|
64
|
+
else:
|
|
65
|
+
console.print(f"[red]❌ Unknown action: {action}[/red]")
|
|
66
|
+
console.print("[yellow]Available actions: load, status[/yellow]")
|
|
67
|
+
raise typer.Exit(1) from None
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _run_service(service: str, args: list[str]) -> None:
|
|
71
|
+
if not args:
|
|
72
|
+
typer.echo(
|
|
73
|
+
f"Error: No arguments passed to '{service}'. "
|
|
74
|
+
"Append the underlying CLI command and flags.",
|
|
75
|
+
err=True,
|
|
76
|
+
)
|
|
77
|
+
raise typer.Exit(1) from None
|
|
78
|
+
|
|
79
|
+
load_environment() # Ensure environment is loaded
|
|
80
|
+
exit_code = run_orchestrator(service, args, SCRIPT_DIR)
|
|
81
|
+
if exit_code != 0:
|
|
82
|
+
raise typer.Exit(exit_code) from None
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
@app.command(context_settings=PASS_THRU_CONTEXT)
|
|
86
|
+
def git(ctx: typer.Context) -> None:
|
|
87
|
+
"""Git repository operations."""
|
|
88
|
+
_run_service("git", list(ctx.args))
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@app.command(context_settings=PASS_THRU_CONTEXT)
|
|
92
|
+
def jira(ctx: typer.Context) -> None:
|
|
93
|
+
"""JIRA operations."""
|
|
94
|
+
_run_service("jira", list(ctx.args))
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@app.command(context_settings=PASS_THRU_CONTEXT)
|
|
98
|
+
def confluence(ctx: typer.Context) -> None:
|
|
99
|
+
"""Confluence operations."""
|
|
100
|
+
_run_service("confluence", list(ctx.args))
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@app.command(context_settings=PASS_THRU_CONTEXT)
|
|
104
|
+
def bitbucket(ctx: typer.Context) -> None:
|
|
105
|
+
"""Bitbucket operations."""
|
|
106
|
+
_run_service("bitbucket", list(ctx.args))
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@app.command(context_settings=PASS_THRU_CONTEXT)
|
|
110
|
+
def pdf(ctx: typer.Context) -> None:
|
|
111
|
+
"""PDF orchestrator operations."""
|
|
112
|
+
_run_service("pdf", list(ctx.args))
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@app.command()
|
|
116
|
+
def status() -> None:
|
|
117
|
+
"""System status and health checks."""
|
|
118
|
+
settings = load_environment()
|
|
119
|
+
console.print("[cyan]📊 VDS Platform Status[/cyan]\n")
|
|
120
|
+
|
|
121
|
+
# Check orchestrators
|
|
122
|
+
table = Table(title="Orchestrator Status")
|
|
123
|
+
table.add_column("Orchestrator", style="cyan")
|
|
124
|
+
table.add_column("Status", style="magenta")
|
|
125
|
+
|
|
126
|
+
for name in ["jira", "confluence", "bitbucket", "git", "pdf"]:
|
|
127
|
+
path = SCRIPT_DIR / f"{name}_orchestrator"
|
|
128
|
+
status_text = "✅ Available" if path.exists() else "❌ Missing"
|
|
129
|
+
table.add_row(name.title(), status_text)
|
|
130
|
+
|
|
131
|
+
console.print(table)
|
|
132
|
+
|
|
133
|
+
# Check environment
|
|
134
|
+
env_table = Table(title="Environment Status")
|
|
135
|
+
env_table.add_column("Variable", style="cyan")
|
|
136
|
+
env_table.add_column("Status", style="magenta")
|
|
137
|
+
|
|
138
|
+
env_table.add_row(
|
|
139
|
+
"Bitbucket Token",
|
|
140
|
+
"✅ Set" if settings.bitbucket_access_token else "❌ Missing",
|
|
141
|
+
)
|
|
142
|
+
env_table.add_row(
|
|
143
|
+
"Internal Confluence Token",
|
|
144
|
+
"✅ Set" if settings.internal_confluence_token else "❌ Missing",
|
|
145
|
+
)
|
|
146
|
+
env_table.add_row(
|
|
147
|
+
"External Confluence Token",
|
|
148
|
+
"✅ Set" if settings.external_confluence_token else "❌ Missing",
|
|
149
|
+
)
|
|
150
|
+
env_table.add_row(
|
|
151
|
+
"VDS Credentials",
|
|
152
|
+
"✅ Set" if settings.vds_username and settings.vds_password else "❌ Missing",
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
console.print("\n")
|
|
156
|
+
console.print(env_table)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
@app.command()
|
|
160
|
+
def version() -> None:
|
|
161
|
+
"""Show version information."""
|
|
162
|
+
from . import __version__
|
|
163
|
+
|
|
164
|
+
console.print(f"[cyan]VDS Platform CLI v{__version__}[/cyan]")
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def main() -> None:
|
|
168
|
+
"""Main entry point."""
|
|
169
|
+
app()
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
if __name__ == "__main__":
|
|
173
|
+
main()
|