moai-adk 0.34.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
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.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.git-hooks/pre-push +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
name: Continuous Integration
|
|
2
2
|
|
|
3
3
|
# Universal CI/CD pipeline for MoAI-ADK projects
|
|
4
|
-
# Auto-detects: Python, Node.js, Go, Rust, Java, Ruby
|
|
4
|
+
# Auto-detects: Python, Node.js, Go, Rust, Java, Ruby, Elixir, Kotlin, Scala, Swift, C#, C++, Flutter, R
|
|
5
5
|
# Triggers: Pull requests and pushes to main/develop branches
|
|
6
6
|
|
|
7
7
|
on:
|
|
@@ -21,7 +21,7 @@ concurrency:
|
|
|
21
21
|
|
|
22
22
|
jobs:
|
|
23
23
|
detect-language:
|
|
24
|
-
name:
|
|
24
|
+
name: Detect Project Language
|
|
25
25
|
runs-on: ubuntu-latest
|
|
26
26
|
outputs:
|
|
27
27
|
python: ${{ steps.detect.outputs.python }}
|
|
@@ -30,21 +30,29 @@ jobs:
|
|
|
30
30
|
rust: ${{ steps.detect.outputs.rust }}
|
|
31
31
|
java: ${{ steps.detect.outputs.java }}
|
|
32
32
|
ruby: ${{ steps.detect.outputs.ruby }}
|
|
33
|
+
elixir: ${{ steps.detect.outputs.elixir }}
|
|
34
|
+
kotlin: ${{ steps.detect.outputs.kotlin }}
|
|
35
|
+
scala: ${{ steps.detect.outputs.scala }}
|
|
36
|
+
swift: ${{ steps.detect.outputs.swift }}
|
|
37
|
+
csharp: ${{ steps.detect.outputs.csharp }}
|
|
38
|
+
cpp: ${{ steps.detect.outputs.cpp }}
|
|
39
|
+
flutter: ${{ steps.detect.outputs.flutter }}
|
|
40
|
+
r: ${{ steps.detect.outputs.r }}
|
|
33
41
|
primary_language: ${{ steps.detect.outputs.primary_language }}
|
|
34
42
|
|
|
35
43
|
steps:
|
|
36
|
-
- name:
|
|
44
|
+
- name: Checkout code
|
|
37
45
|
uses: actions/checkout@v4
|
|
38
46
|
|
|
39
|
-
- name:
|
|
47
|
+
- name: Auto-detect language
|
|
40
48
|
id: detect
|
|
41
49
|
run: |
|
|
42
|
-
echo "
|
|
50
|
+
echo "Auto-detecting project language..."
|
|
43
51
|
echo ""
|
|
44
52
|
|
|
45
53
|
# Python detection
|
|
46
54
|
if [ -f "pyproject.toml" ] || [ -f "setup.py" ] || [ -f "requirements.txt" ]; then
|
|
47
|
-
echo "
|
|
55
|
+
echo "Python project detected"
|
|
48
56
|
echo "python=true" >> $GITHUB_OUTPUT
|
|
49
57
|
PRIMARY="python"
|
|
50
58
|
else
|
|
@@ -53,7 +61,7 @@ jobs:
|
|
|
53
61
|
|
|
54
62
|
# Node.js detection
|
|
55
63
|
if [ -f "package.json" ]; then
|
|
56
|
-
echo "
|
|
64
|
+
echo "Node.js project detected"
|
|
57
65
|
echo "node=true" >> $GITHUB_OUTPUT
|
|
58
66
|
[ -z "$PRIMARY" ] && PRIMARY="node"
|
|
59
67
|
else
|
|
@@ -62,7 +70,7 @@ jobs:
|
|
|
62
70
|
|
|
63
71
|
# Go detection
|
|
64
72
|
if [ -f "go.mod" ]; then
|
|
65
|
-
echo "
|
|
73
|
+
echo "Go project detected"
|
|
66
74
|
echo "go=true" >> $GITHUB_OUTPUT
|
|
67
75
|
[ -z "$PRIMARY" ] && PRIMARY="go"
|
|
68
76
|
else
|
|
@@ -71,7 +79,7 @@ jobs:
|
|
|
71
79
|
|
|
72
80
|
# Rust detection
|
|
73
81
|
if [ -f "Cargo.toml" ]; then
|
|
74
|
-
echo "
|
|
82
|
+
echo "Rust project detected"
|
|
75
83
|
echo "rust=true" >> $GITHUB_OUTPUT
|
|
76
84
|
[ -z "$PRIMARY" ] && PRIMARY="rust"
|
|
77
85
|
else
|
|
@@ -80,7 +88,7 @@ jobs:
|
|
|
80
88
|
|
|
81
89
|
# Java detection
|
|
82
90
|
if [ -f "pom.xml" ] || [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
|
|
83
|
-
echo "
|
|
91
|
+
echo "Java project detected"
|
|
84
92
|
echo "java=true" >> $GITHUB_OUTPUT
|
|
85
93
|
[ -z "$PRIMARY" ] && PRIMARY="java"
|
|
86
94
|
else
|
|
@@ -89,43 +97,114 @@ jobs:
|
|
|
89
97
|
|
|
90
98
|
# Ruby detection
|
|
91
99
|
if [ -f "Gemfile" ]; then
|
|
92
|
-
echo "
|
|
100
|
+
echo "Ruby project detected"
|
|
93
101
|
echo "ruby=true" >> $GITHUB_OUTPUT
|
|
94
102
|
[ -z "$PRIMARY" ] && PRIMARY="ruby"
|
|
95
103
|
else
|
|
96
104
|
echo "ruby=false" >> $GITHUB_OUTPUT
|
|
97
105
|
fi
|
|
98
106
|
|
|
107
|
+
# Elixir detection
|
|
108
|
+
if [ -f "mix.exs" ]; then
|
|
109
|
+
echo "Elixir project detected"
|
|
110
|
+
echo "elixir=true" >> $GITHUB_OUTPUT
|
|
111
|
+
[ -z "$PRIMARY" ] && PRIMARY="elixir"
|
|
112
|
+
else
|
|
113
|
+
echo "elixir=false" >> $GITHUB_OUTPUT
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# Kotlin detection (separate from Java)
|
|
117
|
+
if [ -f "build.gradle.kts" ] && grep -q "kotlin(" build.gradle.kts 2>/dev/null; then
|
|
118
|
+
echo "Kotlin project detected"
|
|
119
|
+
echo "kotlin=true" >> $GITHUB_OUTPUT
|
|
120
|
+
[ -z "$PRIMARY" ] && PRIMARY="kotlin"
|
|
121
|
+
else
|
|
122
|
+
echo "kotlin=false" >> $GITHUB_OUTPUT
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
# Scala detection
|
|
126
|
+
if [ -f "build.sbt" ]; then
|
|
127
|
+
echo "Scala project detected"
|
|
128
|
+
echo "scala=true" >> $GITHUB_OUTPUT
|
|
129
|
+
[ -z "$PRIMARY" ] && PRIMARY="scala"
|
|
130
|
+
else
|
|
131
|
+
echo "scala=false" >> $GITHUB_OUTPUT
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
# Swift detection
|
|
135
|
+
if [ -f "Package.swift" ] || [ -f "Package.resolved" ]; then
|
|
136
|
+
echo "Swift project detected"
|
|
137
|
+
echo "swift=true" >> $GITHUB_OUTPUT
|
|
138
|
+
[ -z "$PRIMARY" ] && PRIMARY="swift"
|
|
139
|
+
else
|
|
140
|
+
echo "swift=false" >> $GITHUB_OUTPUT
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
# C# detection
|
|
144
|
+
if find . -name "*.csproj" -o -name "*.sln" | grep -q .; then
|
|
145
|
+
echo "C# project detected"
|
|
146
|
+
echo "csharp=true" >> $GITHUB_OUTPUT
|
|
147
|
+
[ -z "$PRIMARY" ] && PRIMARY="csharp"
|
|
148
|
+
else
|
|
149
|
+
echo "csharp=false" >> $GITHUB_OUTPUT
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
# C++ detection
|
|
153
|
+
if [ -f "CMakeLists.txt" ] || [ -f "Makefile" ] || [ -f "meson.build" ]; then
|
|
154
|
+
echo "C++ project detected"
|
|
155
|
+
echo "cpp=true" >> $GITHUB_OUTPUT
|
|
156
|
+
[ -z "$PRIMARY" ] && PRIMARY="cpp"
|
|
157
|
+
else
|
|
158
|
+
echo "cpp=false" >> $GITHUB_OUTPUT
|
|
159
|
+
fi
|
|
160
|
+
|
|
161
|
+
# Flutter detection
|
|
162
|
+
if [ -f "pubspec.yaml" ] && grep -q "flutter" pubspec.yaml 2>/dev/null; then
|
|
163
|
+
echo "Flutter project detected"
|
|
164
|
+
echo "flutter=true" >> $GITHUB_OUTPUT
|
|
165
|
+
[ -z "$PRIMARY" ] && PRIMARY="flutter"
|
|
166
|
+
else
|
|
167
|
+
echo "flutter=false" >> $GITHUB_OUTPUT
|
|
168
|
+
fi
|
|
169
|
+
|
|
170
|
+
# R detection
|
|
171
|
+
if [ -f "DESCRIPTION" ] || [ -f "renv.lock" ]; then
|
|
172
|
+
echo "R project detected"
|
|
173
|
+
echo "r=true" >> $GITHUB_OUTPUT
|
|
174
|
+
[ -z "$PRIMARY" ] && PRIMARY="r"
|
|
175
|
+
else
|
|
176
|
+
echo "r=false" >> $GITHUB_OUTPUT
|
|
177
|
+
fi
|
|
178
|
+
|
|
99
179
|
# Set primary language
|
|
100
180
|
if [ -z "$PRIMARY" ]; then
|
|
101
|
-
echo "
|
|
181
|
+
echo "No language detected, defaulting to generic checks"
|
|
102
182
|
PRIMARY="generic"
|
|
103
183
|
fi
|
|
104
184
|
|
|
105
185
|
echo ""
|
|
106
|
-
echo "
|
|
186
|
+
echo "Primary language: $PRIMARY"
|
|
107
187
|
echo "primary_language=$PRIMARY" >> $GITHUB_OUTPUT
|
|
108
188
|
|
|
109
189
|
code-quality-python:
|
|
110
|
-
name:
|
|
190
|
+
name: Python Code Quality
|
|
111
191
|
runs-on: ubuntu-latest
|
|
112
192
|
needs: detect-language
|
|
113
193
|
if: needs.detect-language.outputs.python == 'true'
|
|
114
194
|
|
|
115
195
|
steps:
|
|
116
|
-
- name:
|
|
196
|
+
- name: Checkout code
|
|
117
197
|
uses: actions/checkout@v4
|
|
118
198
|
|
|
119
|
-
- name:
|
|
199
|
+
- name: Setup Python
|
|
120
200
|
uses: actions/setup-python@v5
|
|
121
201
|
with:
|
|
122
202
|
python-version: "3.11"
|
|
123
203
|
|
|
124
|
-
- name:
|
|
204
|
+
- name: Install dependencies
|
|
125
205
|
run: |
|
|
126
|
-
echo "
|
|
206
|
+
echo "Installing Python dependencies..."
|
|
127
207
|
|
|
128
|
-
# Try pip install with pyproject.toml, setup.py, or requirements.txt
|
|
129
208
|
if [ -f "pyproject.toml" ]; then
|
|
130
209
|
pip install -e .[dev] || pip install -e . || true
|
|
131
210
|
elif [ -f "setup.py" ]; then
|
|
@@ -134,121 +213,393 @@ jobs:
|
|
|
134
213
|
pip install -r requirements.txt || true
|
|
135
214
|
fi
|
|
136
215
|
|
|
137
|
-
# Install common linters (best-effort)
|
|
138
216
|
pip install black ruff mypy bandit || true
|
|
139
217
|
|
|
140
|
-
- name:
|
|
218
|
+
- name: Check code formatting (black)
|
|
141
219
|
run: |
|
|
142
|
-
echo "
|
|
143
|
-
black --check . --line-length=120 || echo "
|
|
220
|
+
echo "Checking Python code formatting..."
|
|
221
|
+
black --check . --line-length=120 || echo "Formatting issues found (non-blocking)"
|
|
144
222
|
|
|
145
|
-
- name:
|
|
223
|
+
- name: Lint code (ruff)
|
|
146
224
|
run: |
|
|
147
|
-
echo "
|
|
148
|
-
ruff check . || echo "
|
|
225
|
+
echo "Linting Python code..."
|
|
226
|
+
ruff check . || echo "Linting issues found (non-blocking)"
|
|
149
227
|
|
|
150
|
-
- name:
|
|
228
|
+
- name: Type checking (mypy)
|
|
151
229
|
run: |
|
|
152
|
-
echo "
|
|
153
|
-
mypy . --ignore-missing-imports || echo "
|
|
230
|
+
echo "Type checking Python code..."
|
|
231
|
+
mypy . --ignore-missing-imports || echo "Type issues found (non-blocking)"
|
|
154
232
|
|
|
155
|
-
- name:
|
|
233
|
+
- name: Security check (bandit)
|
|
156
234
|
run: |
|
|
157
|
-
echo "
|
|
158
|
-
bandit -r . -ll || echo "
|
|
235
|
+
echo "Security scanning Python code..."
|
|
236
|
+
bandit -r . -ll || echo "Security issues found (non-blocking)"
|
|
159
237
|
|
|
160
238
|
code-quality-node:
|
|
161
|
-
name:
|
|
239
|
+
name: Node.js Code Quality
|
|
162
240
|
runs-on: ubuntu-latest
|
|
163
241
|
needs: detect-language
|
|
164
242
|
if: needs.detect-language.outputs.node == 'true'
|
|
165
243
|
|
|
166
244
|
steps:
|
|
167
|
-
- name:
|
|
245
|
+
- name: Checkout code
|
|
168
246
|
uses: actions/checkout@v4
|
|
169
247
|
|
|
170
|
-
- name:
|
|
248
|
+
- name: Setup Node.js
|
|
171
249
|
uses: actions/setup-node@v4
|
|
172
250
|
with:
|
|
173
251
|
node-version: '20'
|
|
174
252
|
cache: 'npm'
|
|
175
253
|
|
|
176
|
-
- name:
|
|
254
|
+
- name: Install dependencies
|
|
177
255
|
run: |
|
|
178
|
-
echo "
|
|
256
|
+
echo "Installing Node.js dependencies..."
|
|
179
257
|
npm ci || npm install || true
|
|
180
258
|
|
|
181
|
-
- name:
|
|
259
|
+
- name: Lint code (ESLint)
|
|
182
260
|
run: |
|
|
183
|
-
echo "
|
|
184
|
-
npm run lint || npx eslint . || echo "
|
|
261
|
+
echo "Linting JavaScript/TypeScript code..."
|
|
262
|
+
npm run lint || npx eslint . || echo "Linting issues found (non-blocking)"
|
|
185
263
|
|
|
186
|
-
- name:
|
|
264
|
+
- name: Check formatting (Prettier)
|
|
187
265
|
run: |
|
|
188
|
-
echo "
|
|
189
|
-
npm run format:check || npx prettier --check . || echo "
|
|
266
|
+
echo "Checking code formatting..."
|
|
267
|
+
npm run format:check || npx prettier --check . || echo "Formatting issues found (non-blocking)"
|
|
190
268
|
|
|
191
|
-
- name:
|
|
269
|
+
- name: Type checking (TypeScript)
|
|
192
270
|
run: |
|
|
193
|
-
echo "
|
|
194
|
-
npm run type-check || npx tsc --noEmit || echo "
|
|
271
|
+
echo "Type checking TypeScript..."
|
|
272
|
+
npm run type-check || npx tsc --noEmit || echo "Type issues found (non-blocking)"
|
|
195
273
|
|
|
196
274
|
code-quality-go:
|
|
197
|
-
name:
|
|
275
|
+
name: Go Code Quality
|
|
198
276
|
runs-on: ubuntu-latest
|
|
199
277
|
needs: detect-language
|
|
200
278
|
if: needs.detect-language.outputs.go == 'true'
|
|
201
279
|
|
|
202
280
|
steps:
|
|
203
|
-
- name:
|
|
281
|
+
- name: Checkout code
|
|
204
282
|
uses: actions/checkout@v4
|
|
205
283
|
|
|
206
|
-
- name:
|
|
284
|
+
- name: Setup Go
|
|
207
285
|
uses: actions/setup-go@v5
|
|
208
286
|
with:
|
|
209
287
|
go-version: '1.21'
|
|
210
288
|
|
|
211
|
-
- name:
|
|
289
|
+
- name: Format check (gofmt)
|
|
212
290
|
run: |
|
|
213
|
-
echo "
|
|
214
|
-
gofmt -l . | grep . && echo "
|
|
291
|
+
echo "Checking Go code formatting..."
|
|
292
|
+
gofmt -l . | grep . && echo "Formatting issues found" || echo "Format check passed"
|
|
215
293
|
|
|
216
|
-
- name:
|
|
294
|
+
- name: Lint code (golangci-lint)
|
|
217
295
|
run: |
|
|
218
|
-
echo "
|
|
296
|
+
echo "Linting Go code..."
|
|
219
297
|
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
220
|
-
golangci-lint run || echo "
|
|
298
|
+
golangci-lint run || echo "Linting issues found (non-blocking)"
|
|
221
299
|
|
|
222
|
-
- name:
|
|
300
|
+
- name: Vet code
|
|
223
301
|
run: |
|
|
224
|
-
echo "
|
|
225
|
-
go vet ./... || echo "
|
|
302
|
+
echo "Running go vet..."
|
|
303
|
+
go vet ./... || echo "Vet issues found (non-blocking)"
|
|
226
304
|
|
|
227
305
|
code-quality-rust:
|
|
228
|
-
name:
|
|
306
|
+
name: Rust Code Quality
|
|
229
307
|
runs-on: ubuntu-latest
|
|
230
308
|
needs: detect-language
|
|
231
309
|
if: needs.detect-language.outputs.rust == 'true'
|
|
232
310
|
|
|
233
311
|
steps:
|
|
234
|
-
- name:
|
|
312
|
+
- name: Checkout code
|
|
235
313
|
uses: actions/checkout@v4
|
|
236
314
|
|
|
237
|
-
- name:
|
|
315
|
+
- name: Setup Rust
|
|
238
316
|
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
239
317
|
|
|
240
|
-
- name:
|
|
318
|
+
- name: Format check (rustfmt)
|
|
319
|
+
run: |
|
|
320
|
+
echo "Checking Rust code formatting..."
|
|
321
|
+
cargo fmt --check || echo "Formatting issues found (non-blocking)"
|
|
322
|
+
|
|
323
|
+
- name: Lint code (clippy)
|
|
324
|
+
run: |
|
|
325
|
+
echo "Linting Rust code..."
|
|
326
|
+
cargo clippy -- -D warnings || echo "Clippy warnings found (non-blocking)"
|
|
327
|
+
|
|
328
|
+
code-quality-java:
|
|
329
|
+
name: Java Code Quality
|
|
330
|
+
runs-on: ubuntu-latest
|
|
331
|
+
needs: detect-language
|
|
332
|
+
if: needs.detect-language.outputs.java == 'true'
|
|
333
|
+
|
|
334
|
+
steps:
|
|
335
|
+
- name: Checkout code
|
|
336
|
+
uses: actions/checkout@v4
|
|
337
|
+
|
|
338
|
+
- name: Setup JDK
|
|
339
|
+
uses: actions/setup-java@v4
|
|
340
|
+
with:
|
|
341
|
+
distribution: 'temurin'
|
|
342
|
+
java-version: '17'
|
|
343
|
+
|
|
344
|
+
- name: Checkstyle
|
|
345
|
+
run: |
|
|
346
|
+
echo "Running Java code quality checks..."
|
|
347
|
+
|
|
348
|
+
if [ -f "pom.xml" ]; then
|
|
349
|
+
mvn checkstyle:check || echo "Checkstyle issues found (non-blocking)"
|
|
350
|
+
elif [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
|
|
351
|
+
./gradlew checkstyleMain || echo "Checkstyle issues found (non-blocking)"
|
|
352
|
+
fi
|
|
353
|
+
|
|
354
|
+
code-quality-ruby:
|
|
355
|
+
name: Ruby Code Quality
|
|
356
|
+
runs-on: ubuntu-latest
|
|
357
|
+
needs: detect-language
|
|
358
|
+
if: needs.detect-language.outputs.ruby == 'true'
|
|
359
|
+
|
|
360
|
+
steps:
|
|
361
|
+
- name: Checkout code
|
|
362
|
+
uses: actions/checkout@v4
|
|
363
|
+
|
|
364
|
+
- name: Setup Ruby
|
|
365
|
+
uses: ruby/setup-ruby@v1
|
|
366
|
+
with:
|
|
367
|
+
ruby-version: '3.2'
|
|
368
|
+
bundler-cache: true
|
|
369
|
+
|
|
370
|
+
- name: Install dependencies
|
|
371
|
+
run: |
|
|
372
|
+
echo "Installing Ruby dependencies..."
|
|
373
|
+
bundle install || true
|
|
374
|
+
|
|
375
|
+
- name: RuboCop
|
|
376
|
+
run: |
|
|
377
|
+
echo "Running RuboCop..."
|
|
378
|
+
bundle exec rubocop || echo "RuboCop issues found (non-blocking)"
|
|
379
|
+
|
|
380
|
+
code-quality-elixir:
|
|
381
|
+
name: Elixir Code Quality
|
|
382
|
+
runs-on: ubuntu-latest
|
|
383
|
+
needs: detect-language
|
|
384
|
+
if: needs.detect-language.outputs.elixir == 'true'
|
|
385
|
+
|
|
386
|
+
steps:
|
|
387
|
+
- name: Checkout code
|
|
388
|
+
uses: actions/checkout@v4
|
|
389
|
+
|
|
390
|
+
- name: Setup Elixir
|
|
391
|
+
uses: erlef/setup-beam@v1
|
|
392
|
+
with:
|
|
393
|
+
elixir-version: '1.15'
|
|
394
|
+
otp-version: '26'
|
|
395
|
+
|
|
396
|
+
- name: Install dependencies
|
|
397
|
+
run: |
|
|
398
|
+
echo "Installing Elixir dependencies..."
|
|
399
|
+
mix deps.get || true
|
|
400
|
+
mix format --check-formatted || echo "Formatting issues found (non-blocking)"
|
|
401
|
+
|
|
402
|
+
- name: Credo
|
|
403
|
+
run: |
|
|
404
|
+
echo "Running Credo..."
|
|
405
|
+
mix credo || echo "Credo issues found (non-blocking)"
|
|
406
|
+
|
|
407
|
+
code-quality-kotlin:
|
|
408
|
+
name: Kotlin Code Quality
|
|
409
|
+
runs-on: ubuntu-latest
|
|
410
|
+
needs: detect-language
|
|
411
|
+
if: needs.detect-language.outputs.kotlin == 'true'
|
|
412
|
+
|
|
413
|
+
steps:
|
|
414
|
+
- name: Checkout code
|
|
415
|
+
uses: actions/checkout@v4
|
|
416
|
+
|
|
417
|
+
- name: Setup JDK
|
|
418
|
+
uses: actions/setup-java@v4
|
|
419
|
+
with:
|
|
420
|
+
distribution: 'temurin'
|
|
421
|
+
java-version: '17'
|
|
422
|
+
|
|
423
|
+
- name: Detekt
|
|
424
|
+
run: |
|
|
425
|
+
echo "Running Detekt..."
|
|
426
|
+
./gradlew detekt || echo "Detekt issues found (non-blocking)"
|
|
427
|
+
|
|
428
|
+
- name: Format check
|
|
429
|
+
run: |
|
|
430
|
+
echo "Checking Kotlin formatting..."
|
|
431
|
+
./gradlew ktlintCheck || echo "Formatting issues found (non-blocking)"
|
|
432
|
+
|
|
433
|
+
code-quality-scala:
|
|
434
|
+
name: Scala Code Quality
|
|
435
|
+
runs-on: ubuntu-latest
|
|
436
|
+
needs: detect-language
|
|
437
|
+
if: needs.detect-language.outputs.scala == 'true'
|
|
438
|
+
|
|
439
|
+
steps:
|
|
440
|
+
- name: Checkout code
|
|
441
|
+
uses: actions/checkout@v4
|
|
442
|
+
|
|
443
|
+
- name: Setup Scala
|
|
444
|
+
uses: olafurpg/setup-scala@v14
|
|
445
|
+
with:
|
|
446
|
+
java-version: 'adopt@1.17'
|
|
447
|
+
|
|
448
|
+
- name: Scalafmt
|
|
449
|
+
run: |
|
|
450
|
+
echo "Checking Scala formatting..."
|
|
451
|
+
sbt scalafmtCheckAll || echo "Formatting issues found (non-blocking)"
|
|
452
|
+
|
|
453
|
+
- name: Scalastyle
|
|
241
454
|
run: |
|
|
242
|
-
echo "
|
|
243
|
-
|
|
455
|
+
echo "Running Scalastyle..."
|
|
456
|
+
sbt scalastyle || echo "Scalastyle issues found (non-blocking)"
|
|
244
457
|
|
|
245
|
-
|
|
458
|
+
code-quality-swift:
|
|
459
|
+
name: Swift Code Quality
|
|
460
|
+
runs-on: ubuntu-latest
|
|
461
|
+
needs: detect-language
|
|
462
|
+
if: needs.detect-language.outputs.swift == 'true'
|
|
463
|
+
|
|
464
|
+
steps:
|
|
465
|
+
- name: Checkout code
|
|
466
|
+
uses: actions/checkout@v4
|
|
467
|
+
|
|
468
|
+
- name: Setup Swift
|
|
469
|
+
uses: swift/setup-swift@v1
|
|
470
|
+
with:
|
|
471
|
+
swift-version: '5.9'
|
|
472
|
+
|
|
473
|
+
- name: Format check (swift-format)
|
|
474
|
+
run: |
|
|
475
|
+
echo "Checking Swift formatting..."
|
|
476
|
+
swift-format lint . || echo "Formatting issues found (non-blocking)"
|
|
477
|
+
|
|
478
|
+
- name: SwiftLint
|
|
479
|
+
run: |
|
|
480
|
+
echo "Running SwiftLint..."
|
|
481
|
+
swiftlint lint || echo "SwiftLint issues found (non-blocking)"
|
|
482
|
+
|
|
483
|
+
code-quality-csharp:
|
|
484
|
+
name: C# Code Quality
|
|
485
|
+
runs-on: ubuntu-latest
|
|
486
|
+
needs: detect-language
|
|
487
|
+
if: needs.detect-language.outputs.csharp == 'true'
|
|
488
|
+
|
|
489
|
+
steps:
|
|
490
|
+
- name: Checkout code
|
|
491
|
+
uses: actions/checkout@v4
|
|
492
|
+
|
|
493
|
+
- name: Setup .NET
|
|
494
|
+
uses: actions/setup-dotnet@v4
|
|
495
|
+
with:
|
|
496
|
+
dotnet-version: '8.0'
|
|
497
|
+
|
|
498
|
+
- name: Restore dependencies
|
|
499
|
+
run: |
|
|
500
|
+
echo "Restoring .NET dependencies..."
|
|
501
|
+
dotnet restore || true
|
|
502
|
+
|
|
503
|
+
- name: Format check
|
|
504
|
+
run: |
|
|
505
|
+
echo "Checking C# formatting..."
|
|
506
|
+
dotnet format --verify-no-changes || echo "Formatting issues found (non-blocking)"
|
|
507
|
+
|
|
508
|
+
- name: Analyze
|
|
509
|
+
run: |
|
|
510
|
+
echo "Running .NET analyzers..."
|
|
511
|
+
dotnet build || echo "Build issues found (non-blocking)"
|
|
512
|
+
|
|
513
|
+
code-quality-cpp:
|
|
514
|
+
name: C++ Code Quality
|
|
515
|
+
runs-on: ubuntu-latest
|
|
516
|
+
needs: detect-language
|
|
517
|
+
if: needs.detect-language.outputs.cpp == 'true'
|
|
518
|
+
|
|
519
|
+
steps:
|
|
520
|
+
- name: Checkout code
|
|
521
|
+
uses: actions/checkout@v4
|
|
522
|
+
|
|
523
|
+
- name: Setup C++
|
|
524
|
+
uses: clang/setup-linter@v1
|
|
525
|
+
|
|
526
|
+
- name: Clang-format
|
|
527
|
+
run: |
|
|
528
|
+
echo "Checking C++ formatting..."
|
|
529
|
+
find . -name '*.cpp' -o -name '*.h' -o -name '*.cc' | xargs clang-format --dry-run -Werror || echo "Formatting issues found (non-blocking)"
|
|
530
|
+
|
|
531
|
+
- name: Clang-tidy
|
|
532
|
+
run: |
|
|
533
|
+
echo "Running Clang-tidy..."
|
|
534
|
+
if [ -f "CMakeLists.txt" ]; then
|
|
535
|
+
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
|
|
536
|
+
find . -name '*.cpp' | xargs clang-tidy || echo "Tidy issues found (non-blocking)"
|
|
537
|
+
fi
|
|
538
|
+
|
|
539
|
+
code-quality-flutter:
|
|
540
|
+
name: Flutter Code Quality
|
|
541
|
+
runs-on: ubuntu-latest
|
|
542
|
+
needs: detect-language
|
|
543
|
+
if: needs.detect-language.outputs.flutter == 'true'
|
|
544
|
+
|
|
545
|
+
steps:
|
|
546
|
+
- name: Checkout code
|
|
547
|
+
uses: actions/checkout@v4
|
|
548
|
+
|
|
549
|
+
- name: Setup Flutter
|
|
550
|
+
uses: subosito/flutter-action@v2
|
|
551
|
+
with:
|
|
552
|
+
flutter-version: '3.16'
|
|
553
|
+
channel: 'stable'
|
|
554
|
+
|
|
555
|
+
- name: Install dependencies
|
|
556
|
+
run: |
|
|
557
|
+
echo "Installing Flutter dependencies..."
|
|
558
|
+
flutter pub get || true
|
|
559
|
+
|
|
560
|
+
- name: Analyze
|
|
561
|
+
run: |
|
|
562
|
+
echo "Analyzing Flutter code..."
|
|
563
|
+
flutter analyze || echo "Analysis issues found (non-blocking)"
|
|
564
|
+
|
|
565
|
+
- name: Format check
|
|
566
|
+
run: |
|
|
567
|
+
echo "Checking Flutter formatting..."
|
|
568
|
+
dart format --output=none --set-exit-if-changed . || echo "Formatting issues found (non-blocking)"
|
|
569
|
+
|
|
570
|
+
code-quality-r:
|
|
571
|
+
name: R Code Quality
|
|
572
|
+
runs-on: ubuntu-latest
|
|
573
|
+
needs: detect-language
|
|
574
|
+
if: needs.detect-language.outputs.r == 'true'
|
|
575
|
+
|
|
576
|
+
steps:
|
|
577
|
+
- name: Checkout code
|
|
578
|
+
uses: actions/checkout@v4
|
|
579
|
+
|
|
580
|
+
- name: Setup R
|
|
581
|
+
uses: r-lib/actions/setup-r@v2
|
|
582
|
+
with:
|
|
583
|
+
r-version: '4.3'
|
|
584
|
+
|
|
585
|
+
- name: Install dependencies
|
|
246
586
|
run: |
|
|
247
|
-
echo "
|
|
248
|
-
|
|
587
|
+
echo "Installing R dependencies..."
|
|
588
|
+
Rscript -e "install.packages('lintr')" || true
|
|
589
|
+
Rscript -e "install.packages('styler')" || true
|
|
590
|
+
|
|
591
|
+
- name: Lintr
|
|
592
|
+
run: |
|
|
593
|
+
echo "Running Lintr..."
|
|
594
|
+
Rscript -e "lintr::lint_dir()" || echo "Linting issues found (non-blocking)"
|
|
595
|
+
|
|
596
|
+
- name: Style check
|
|
597
|
+
run: |
|
|
598
|
+
echo "Checking R formatting..."
|
|
599
|
+
Rscript -e "styler::style_dir()" || echo "Formatting issues found (non-blocking)"
|
|
249
600
|
|
|
250
601
|
test-python:
|
|
251
|
-
name:
|
|
602
|
+
name: Python Tests
|
|
252
603
|
runs-on: ubuntu-latest
|
|
253
604
|
needs: [detect-language, code-quality-python]
|
|
254
605
|
if: needs.detect-language.outputs.python == 'true'
|
|
@@ -258,17 +609,17 @@ jobs:
|
|
|
258
609
|
python-version: ["3.11", "3.12", "3.13", "3.14"]
|
|
259
610
|
|
|
260
611
|
steps:
|
|
261
|
-
- name:
|
|
612
|
+
- name: Checkout code
|
|
262
613
|
uses: actions/checkout@v4
|
|
263
614
|
|
|
264
|
-
- name:
|
|
615
|
+
- name: Setup Python ${{ matrix.python-version }}
|
|
265
616
|
uses: actions/setup-python@v5
|
|
266
617
|
with:
|
|
267
618
|
python-version: ${{ matrix.python-version }}
|
|
268
619
|
|
|
269
|
-
- name:
|
|
620
|
+
- name: Install dependencies
|
|
270
621
|
run: |
|
|
271
|
-
echo "
|
|
622
|
+
echo "Installing dependencies for Python ${{ matrix.python-version }}..."
|
|
272
623
|
|
|
273
624
|
if [ -f "pyproject.toml" ]; then
|
|
274
625
|
pip install -e .[dev] || pip install -e . || true
|
|
@@ -280,12 +631,12 @@ jobs:
|
|
|
280
631
|
|
|
281
632
|
pip install pytest pytest-cov || true
|
|
282
633
|
|
|
283
|
-
- name:
|
|
634
|
+
- name: Run tests with coverage
|
|
284
635
|
run: |
|
|
285
|
-
echo "
|
|
286
|
-
pytest tests/ --cov --cov-report=xml --cov-report=term -v || echo "
|
|
636
|
+
echo "Running Python tests..."
|
|
637
|
+
pytest tests/ --cov --cov-report=xml --cov-report=term -v || echo "Tests failed or not found"
|
|
287
638
|
|
|
288
|
-
- name:
|
|
639
|
+
- name: Upload coverage to Codecov
|
|
289
640
|
uses: codecov/codecov-action@v4
|
|
290
641
|
with:
|
|
291
642
|
files: ./coverage.xml
|
|
@@ -296,50 +647,50 @@ jobs:
|
|
|
296
647
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
297
648
|
|
|
298
649
|
test-node:
|
|
299
|
-
name:
|
|
650
|
+
name: Node.js Tests
|
|
300
651
|
runs-on: ubuntu-latest
|
|
301
652
|
needs: [detect-language, code-quality-node]
|
|
302
653
|
if: needs.detect-language.outputs.node == 'true'
|
|
303
654
|
|
|
304
655
|
steps:
|
|
305
|
-
- name:
|
|
656
|
+
- name: Checkout code
|
|
306
657
|
uses: actions/checkout@v4
|
|
307
658
|
|
|
308
|
-
- name:
|
|
659
|
+
- name: Setup Node.js
|
|
309
660
|
uses: actions/setup-node@v4
|
|
310
661
|
with:
|
|
311
662
|
node-version: '20'
|
|
312
663
|
cache: 'npm'
|
|
313
664
|
|
|
314
|
-
- name:
|
|
665
|
+
- name: Install dependencies
|
|
315
666
|
run: npm ci || npm install
|
|
316
667
|
|
|
317
|
-
- name:
|
|
668
|
+
- name: Run tests
|
|
318
669
|
run: |
|
|
319
|
-
echo "
|
|
320
|
-
npm test || echo "
|
|
670
|
+
echo "Running Node.js tests..."
|
|
671
|
+
npm test || echo "Tests failed or not found"
|
|
321
672
|
|
|
322
673
|
test-go:
|
|
323
|
-
name:
|
|
674
|
+
name: Go Tests
|
|
324
675
|
runs-on: ubuntu-latest
|
|
325
676
|
needs: [detect-language, code-quality-go]
|
|
326
677
|
if: needs.detect-language.outputs.go == 'true'
|
|
327
678
|
|
|
328
679
|
steps:
|
|
329
|
-
- name:
|
|
680
|
+
- name: Checkout code
|
|
330
681
|
uses: actions/checkout@v4
|
|
331
682
|
|
|
332
|
-
- name:
|
|
683
|
+
- name: Setup Go
|
|
333
684
|
uses: actions/setup-go@v5
|
|
334
685
|
with:
|
|
335
686
|
go-version: '1.21'
|
|
336
687
|
|
|
337
|
-
- name:
|
|
688
|
+
- name: Run tests
|
|
338
689
|
run: |
|
|
339
|
-
echo "
|
|
340
|
-
go test -v ./... -coverprofile=coverage.out || echo "
|
|
690
|
+
echo "Running Go tests..."
|
|
691
|
+
go test -v ./... -coverprofile=coverage.out || echo "Tests failed or not found"
|
|
341
692
|
|
|
342
|
-
- name:
|
|
693
|
+
- name: Upload coverage
|
|
343
694
|
uses: codecov/codecov-action@v4
|
|
344
695
|
with:
|
|
345
696
|
files: ./coverage.out
|
|
@@ -349,53 +700,284 @@ jobs:
|
|
|
349
700
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
350
701
|
|
|
351
702
|
test-rust:
|
|
352
|
-
name:
|
|
703
|
+
name: Rust Tests
|
|
353
704
|
runs-on: ubuntu-latest
|
|
354
705
|
needs: [detect-language, code-quality-rust]
|
|
355
706
|
if: needs.detect-language.outputs.rust == 'true'
|
|
356
707
|
|
|
357
708
|
steps:
|
|
358
|
-
- name:
|
|
709
|
+
- name: Checkout code
|
|
359
710
|
uses: actions/checkout@v4
|
|
360
711
|
|
|
361
|
-
- name:
|
|
712
|
+
- name: Setup Rust
|
|
362
713
|
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
363
714
|
|
|
364
|
-
- name:
|
|
715
|
+
- name: Run tests
|
|
365
716
|
run: |
|
|
366
|
-
echo "
|
|
367
|
-
cargo test || echo "
|
|
717
|
+
echo "Running Rust tests..."
|
|
718
|
+
cargo test || echo "Tests failed or not found"
|
|
719
|
+
|
|
720
|
+
test-java:
|
|
721
|
+
name: Java Tests
|
|
722
|
+
runs-on: ubuntu-latest
|
|
723
|
+
needs: [detect-language, code-quality-java]
|
|
724
|
+
if: needs.detect-language.outputs.java == 'true'
|
|
725
|
+
|
|
726
|
+
steps:
|
|
727
|
+
- name: Checkout code
|
|
728
|
+
uses: actions/checkout@v4
|
|
729
|
+
|
|
730
|
+
- name: Setup JDK
|
|
731
|
+
uses: actions/setup-java@v4
|
|
732
|
+
with:
|
|
733
|
+
distribution: 'temurin'
|
|
734
|
+
java-version: '17'
|
|
735
|
+
|
|
736
|
+
- name: Run tests
|
|
737
|
+
run: |
|
|
738
|
+
echo "Running Java tests..."
|
|
739
|
+
|
|
740
|
+
if [ -f "pom.xml" ]; then
|
|
741
|
+
mvn test || echo "Tests failed or not found"
|
|
742
|
+
elif [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
|
|
743
|
+
./gradlew test || echo "Tests failed or not found"
|
|
744
|
+
fi
|
|
745
|
+
|
|
746
|
+
test-ruby:
|
|
747
|
+
name: Ruby Tests
|
|
748
|
+
runs-on: ubuntu-latest
|
|
749
|
+
needs: [detect-language, code-quality-ruby]
|
|
750
|
+
if: needs.detect-language.outputs.ruby == 'true'
|
|
751
|
+
|
|
752
|
+
steps:
|
|
753
|
+
- name: Checkout code
|
|
754
|
+
uses: actions/checkout@v4
|
|
755
|
+
|
|
756
|
+
- name: Setup Ruby
|
|
757
|
+
uses: ruby/setup-ruby@v1
|
|
758
|
+
with:
|
|
759
|
+
ruby-version: '3.2'
|
|
760
|
+
bundler-cache: true
|
|
761
|
+
|
|
762
|
+
- name: Run tests
|
|
763
|
+
run: |
|
|
764
|
+
echo "Running Ruby tests..."
|
|
765
|
+
bundle exec rake test || bundle exec rspec || echo "Tests failed or not found"
|
|
766
|
+
|
|
767
|
+
test-elixir:
|
|
768
|
+
name: Elixir Tests
|
|
769
|
+
runs-on: ubuntu-latest
|
|
770
|
+
needs: [detect-language, code-quality-elixir]
|
|
771
|
+
if: needs.detect-language.outputs.elixir == 'true'
|
|
772
|
+
|
|
773
|
+
steps:
|
|
774
|
+
- name: Checkout code
|
|
775
|
+
uses: actions/checkout@v4
|
|
776
|
+
|
|
777
|
+
- name: Setup Elixir
|
|
778
|
+
uses: erlef/setup-beam@v1
|
|
779
|
+
with:
|
|
780
|
+
elixir-version: '1.15'
|
|
781
|
+
otp-version: '26'
|
|
782
|
+
|
|
783
|
+
- name: Install dependencies
|
|
784
|
+
run: mix deps.get || true
|
|
785
|
+
|
|
786
|
+
- name: Run tests
|
|
787
|
+
run: |
|
|
788
|
+
echo "Running Elixir tests..."
|
|
789
|
+
mix test || echo "Tests failed or not found"
|
|
790
|
+
|
|
791
|
+
test-kotlin:
|
|
792
|
+
name: Kotlin Tests
|
|
793
|
+
runs-on: ubuntu-latest
|
|
794
|
+
needs: [detect-language, code-quality-kotlin]
|
|
795
|
+
if: needs.detect-language.outputs.kotlin == 'true'
|
|
796
|
+
|
|
797
|
+
steps:
|
|
798
|
+
- name: Checkout code
|
|
799
|
+
uses: actions/checkout@v4
|
|
800
|
+
|
|
801
|
+
- name: Setup JDK
|
|
802
|
+
uses: actions/setup-java@v4
|
|
803
|
+
with:
|
|
804
|
+
distribution: 'temurin'
|
|
805
|
+
java-version: '17'
|
|
806
|
+
|
|
807
|
+
- name: Run tests
|
|
808
|
+
run: |
|
|
809
|
+
echo "Running Kotlin tests..."
|
|
810
|
+
./gradlew test || echo "Tests failed or not found"
|
|
811
|
+
|
|
812
|
+
test-scala:
|
|
813
|
+
name: Scala Tests
|
|
814
|
+
runs-on: ubuntu-latest
|
|
815
|
+
needs: [detect-language, code-quality-scala]
|
|
816
|
+
if: needs.detect-language.outputs.scala == 'true'
|
|
817
|
+
|
|
818
|
+
steps:
|
|
819
|
+
- name: Checkout code
|
|
820
|
+
uses: actions/checkout@v4
|
|
821
|
+
|
|
822
|
+
- name: Setup Scala
|
|
823
|
+
uses: olafurpg/setup-scala@v14
|
|
824
|
+
with:
|
|
825
|
+
java-version: 'adopt@1.17'
|
|
826
|
+
|
|
827
|
+
- name: Run tests
|
|
828
|
+
run: |
|
|
829
|
+
echo "Running Scala tests..."
|
|
830
|
+
sbt test || echo "Tests failed or not found"
|
|
831
|
+
|
|
832
|
+
test-swift:
|
|
833
|
+
name: Swift Tests
|
|
834
|
+
runs-on: ubuntu-latest
|
|
835
|
+
needs: [detect-language, code-quality-swift]
|
|
836
|
+
if: needs.detect-language.outputs.swift == 'true'
|
|
837
|
+
|
|
838
|
+
steps:
|
|
839
|
+
- name: Checkout code
|
|
840
|
+
uses: actions/checkout@v4
|
|
841
|
+
|
|
842
|
+
- name: Setup Swift
|
|
843
|
+
uses: swift/setup-swift@v1
|
|
844
|
+
with:
|
|
845
|
+
swift-version: '5.9'
|
|
846
|
+
|
|
847
|
+
- name: Run tests
|
|
848
|
+
run: |
|
|
849
|
+
echo "Running Swift tests..."
|
|
850
|
+
swift test || echo "Tests failed or not found"
|
|
851
|
+
|
|
852
|
+
test-csharp:
|
|
853
|
+
name: C# Tests
|
|
854
|
+
runs-on: ubuntu-latest
|
|
855
|
+
needs: [detect-language, code-quality-csharp]
|
|
856
|
+
if: needs.detect-language.outputs.csharp == 'true'
|
|
857
|
+
|
|
858
|
+
steps:
|
|
859
|
+
- name: Checkout code
|
|
860
|
+
uses: actions/checkout@v4
|
|
861
|
+
|
|
862
|
+
- name: Setup .NET
|
|
863
|
+
uses: actions/setup-dotnet@v4
|
|
864
|
+
with:
|
|
865
|
+
dotnet-version: '8.0'
|
|
866
|
+
|
|
867
|
+
- name: Run tests
|
|
868
|
+
run: |
|
|
869
|
+
echo "Running C# tests..."
|
|
870
|
+
dotnet test || echo "Tests failed or not found"
|
|
871
|
+
|
|
872
|
+
test-cpp:
|
|
873
|
+
name: C++ Tests
|
|
874
|
+
runs-on: ubuntu-latest
|
|
875
|
+
needs: [detect-language, code-quality-cpp]
|
|
876
|
+
if: needs.detect-language.outputs.cpp == 'true'
|
|
877
|
+
|
|
878
|
+
steps:
|
|
879
|
+
- name: Checkout code
|
|
880
|
+
uses: actions/checkout@v4
|
|
881
|
+
|
|
882
|
+
- name: Setup C++
|
|
883
|
+
run: |
|
|
884
|
+
echo "Setting up C++ build environment..."
|
|
885
|
+
|
|
886
|
+
if [ -f "CMakeLists.txt" ]; then
|
|
887
|
+
cmake .
|
|
888
|
+
cmake --build .
|
|
889
|
+
elif [ -f "Makefile" ]; then
|
|
890
|
+
make || true
|
|
891
|
+
fi
|
|
892
|
+
|
|
893
|
+
- name: Run tests
|
|
894
|
+
run: |
|
|
895
|
+
echo "Running C++ tests..."
|
|
896
|
+
|
|
897
|
+
if [ -f "CMakeLists.txt" ]; then
|
|
898
|
+
ctest || echo "Tests failed or not found"
|
|
899
|
+
elif [ -f "Makefile" ]; then
|
|
900
|
+
make test || echo "Tests failed or not found"
|
|
901
|
+
fi
|
|
902
|
+
|
|
903
|
+
test-flutter:
|
|
904
|
+
name: Flutter Tests
|
|
905
|
+
runs-on: ubuntu-latest
|
|
906
|
+
needs: [detect-language, code-quality-flutter]
|
|
907
|
+
if: needs.detect-language.outputs.flutter == 'true'
|
|
908
|
+
|
|
909
|
+
steps:
|
|
910
|
+
- name: Checkout code
|
|
911
|
+
uses: actions/checkout@v4
|
|
912
|
+
|
|
913
|
+
- name: Setup Flutter
|
|
914
|
+
uses: subosito/flutter-action@v2
|
|
915
|
+
with:
|
|
916
|
+
flutter-version: '3.16'
|
|
917
|
+
channel: 'stable'
|
|
918
|
+
|
|
919
|
+
- name: Install dependencies
|
|
920
|
+
run: flutter pub get || true
|
|
921
|
+
|
|
922
|
+
- name: Run tests
|
|
923
|
+
run: |
|
|
924
|
+
echo "Running Flutter tests..."
|
|
925
|
+
flutter test || echo "Tests failed or not found"
|
|
926
|
+
|
|
927
|
+
test-r:
|
|
928
|
+
name: R Tests
|
|
929
|
+
runs-on: ubuntu-latest
|
|
930
|
+
needs: [detect-language, code-quality-r]
|
|
931
|
+
if: needs.detect-language.outputs.r == 'true'
|
|
932
|
+
|
|
933
|
+
steps:
|
|
934
|
+
- name: Checkout code
|
|
935
|
+
uses: actions/checkout@v4
|
|
936
|
+
|
|
937
|
+
- name: Setup R
|
|
938
|
+
uses: r-lib/actions/setup-r@v2
|
|
939
|
+
with:
|
|
940
|
+
r-version: '4.3'
|
|
941
|
+
|
|
942
|
+
- name: Install dependencies
|
|
943
|
+
run: |
|
|
944
|
+
echo "Installing R dependencies..."
|
|
945
|
+
Rscript -e "install.packages('testthat')" || true
|
|
946
|
+
|
|
947
|
+
- name: Run tests
|
|
948
|
+
run: |
|
|
949
|
+
echo "Running R tests..."
|
|
950
|
+
Rscript -e "testthat::test_dir()" || echo "Tests failed or not found"
|
|
368
951
|
|
|
369
952
|
build-python:
|
|
370
|
-
name:
|
|
953
|
+
name: Build Python Package
|
|
371
954
|
runs-on: ubuntu-latest
|
|
372
955
|
needs: [detect-language, test-python]
|
|
373
956
|
if: needs.detect-language.outputs.python == 'true'
|
|
374
957
|
|
|
375
958
|
steps:
|
|
376
|
-
- name:
|
|
959
|
+
- name: Checkout code
|
|
377
960
|
uses: actions/checkout@v4
|
|
378
961
|
|
|
379
|
-
- name:
|
|
962
|
+
- name: Setup Python
|
|
380
963
|
uses: actions/setup-python@v5
|
|
381
964
|
with:
|
|
382
965
|
python-version: "3.11"
|
|
383
966
|
|
|
384
|
-
- name:
|
|
385
|
-
run:
|
|
386
|
-
pip install build || true
|
|
967
|
+
- name: Install build tools
|
|
968
|
+
run: pip install build || true
|
|
387
969
|
|
|
388
|
-
- name:
|
|
970
|
+
- name: Build package
|
|
389
971
|
run: |
|
|
390
|
-
echo "
|
|
391
|
-
python -m build || echo "
|
|
972
|
+
echo "Building Python package..."
|
|
973
|
+
python -m build || echo "Build failed (non-blocking)"
|
|
392
974
|
|
|
393
975
|
if [ -d "dist/" ]; then
|
|
394
|
-
echo "
|
|
976
|
+
echo "Package built successfully"
|
|
395
977
|
ls -lh dist/
|
|
396
978
|
fi
|
|
397
979
|
|
|
398
|
-
- name:
|
|
980
|
+
- name: Upload build artifacts
|
|
399
981
|
if: success()
|
|
400
982
|
uses: actions/upload-artifact@v4
|
|
401
983
|
with:
|
|
@@ -404,94 +986,305 @@ jobs:
|
|
|
404
986
|
retention-days: 7
|
|
405
987
|
|
|
406
988
|
build-node:
|
|
407
|
-
name:
|
|
989
|
+
name: Build Node.js Package
|
|
408
990
|
runs-on: ubuntu-latest
|
|
409
991
|
needs: [detect-language, test-node]
|
|
410
992
|
if: needs.detect-language.outputs.node == 'true'
|
|
411
993
|
|
|
412
994
|
steps:
|
|
413
|
-
- name:
|
|
995
|
+
- name: Checkout code
|
|
414
996
|
uses: actions/checkout@v4
|
|
415
997
|
|
|
416
|
-
- name:
|
|
998
|
+
- name: Setup Node.js
|
|
417
999
|
uses: actions/setup-node@v4
|
|
418
1000
|
with:
|
|
419
1001
|
node-version: '20'
|
|
420
1002
|
cache: 'npm'
|
|
421
1003
|
|
|
422
|
-
- name:
|
|
1004
|
+
- name: Install dependencies
|
|
423
1005
|
run: npm ci || npm install
|
|
424
1006
|
|
|
425
|
-
- name:
|
|
1007
|
+
- name: Build package
|
|
426
1008
|
run: |
|
|
427
|
-
echo "
|
|
428
|
-
npm run build || echo "
|
|
1009
|
+
echo "Building Node.js package..."
|
|
1010
|
+
npm run build || echo "Build script not found (non-blocking)"
|
|
429
1011
|
|
|
430
1012
|
build-go:
|
|
431
|
-
name:
|
|
1013
|
+
name: Build Go Binary
|
|
432
1014
|
runs-on: ubuntu-latest
|
|
433
1015
|
needs: [detect-language, test-go]
|
|
434
1016
|
if: needs.detect-language.outputs.go == 'true'
|
|
435
1017
|
|
|
436
1018
|
steps:
|
|
437
|
-
- name:
|
|
1019
|
+
- name: Checkout code
|
|
438
1020
|
uses: actions/checkout@v4
|
|
439
1021
|
|
|
440
|
-
- name:
|
|
1022
|
+
- name: Setup Go
|
|
441
1023
|
uses: actions/setup-go@v5
|
|
442
1024
|
with:
|
|
443
1025
|
go-version: '1.21'
|
|
444
1026
|
|
|
445
|
-
- name:
|
|
1027
|
+
- name: Build binary
|
|
446
1028
|
run: |
|
|
447
|
-
echo "
|
|
448
|
-
go build -v ./... || echo "
|
|
1029
|
+
echo "Building Go binary..."
|
|
1030
|
+
go build -v ./... || echo "Build failed (non-blocking)"
|
|
449
1031
|
|
|
450
1032
|
build-rust:
|
|
451
|
-
name:
|
|
1033
|
+
name: Build Rust Binary
|
|
452
1034
|
runs-on: ubuntu-latest
|
|
453
1035
|
needs: [detect-language, test-rust]
|
|
454
1036
|
if: needs.detect-language.outputs.rust == 'true'
|
|
455
1037
|
|
|
456
1038
|
steps:
|
|
457
|
-
- name:
|
|
1039
|
+
- name: Checkout code
|
|
458
1040
|
uses: actions/checkout@v4
|
|
459
1041
|
|
|
460
|
-
- name:
|
|
1042
|
+
- name: Setup Rust
|
|
461
1043
|
uses: actions-rust-lang/setup-rust-toolchain@v1
|
|
462
1044
|
|
|
463
|
-
- name:
|
|
1045
|
+
- name: Build binary
|
|
1046
|
+
run: |
|
|
1047
|
+
echo "Building Rust binary..."
|
|
1048
|
+
cargo build --release || echo "Build failed (non-blocking)"
|
|
1049
|
+
|
|
1050
|
+
build-java:
|
|
1051
|
+
name: Build Java Package
|
|
1052
|
+
runs-on: ubuntu-latest
|
|
1053
|
+
needs: [detect-language, test-java]
|
|
1054
|
+
if: needs.detect-language.outputs.java == 'true'
|
|
1055
|
+
|
|
1056
|
+
steps:
|
|
1057
|
+
- name: Checkout code
|
|
1058
|
+
uses: actions/checkout@v4
|
|
1059
|
+
|
|
1060
|
+
- name: Setup JDK
|
|
1061
|
+
uses: actions/setup-java@v4
|
|
1062
|
+
with:
|
|
1063
|
+
distribution: 'temurin'
|
|
1064
|
+
java-version: '17'
|
|
1065
|
+
|
|
1066
|
+
- name: Build package
|
|
1067
|
+
run: |
|
|
1068
|
+
echo "Building Java package..."
|
|
1069
|
+
|
|
1070
|
+
if [ -f "pom.xml" ]; then
|
|
1071
|
+
mvn package || echo "Build failed (non-blocking)"
|
|
1072
|
+
elif [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then
|
|
1073
|
+
./gradlew build || echo "Build failed (non-blocking)"
|
|
1074
|
+
fi
|
|
1075
|
+
|
|
1076
|
+
build-ruby:
|
|
1077
|
+
name: Build Ruby Gem
|
|
1078
|
+
runs-on: ubuntu-latest
|
|
1079
|
+
needs: [detect-language, test-ruby]
|
|
1080
|
+
if: needs.detect-language.outputs.ruby == 'true'
|
|
1081
|
+
|
|
1082
|
+
steps:
|
|
1083
|
+
- name: Checkout code
|
|
1084
|
+
uses: actions/checkout@v4
|
|
1085
|
+
|
|
1086
|
+
- name: Setup Ruby
|
|
1087
|
+
uses: ruby/setup-ruby@v1
|
|
1088
|
+
with:
|
|
1089
|
+
ruby-version: '3.2'
|
|
1090
|
+
bundler-cache: true
|
|
1091
|
+
|
|
1092
|
+
- name: Build gem
|
|
1093
|
+
run: |
|
|
1094
|
+
echo "Building Ruby gem..."
|
|
1095
|
+
gem build *.gemspec || echo "Build failed (non-blocking)"
|
|
1096
|
+
|
|
1097
|
+
build-elixir:
|
|
1098
|
+
name: Build Elixir Project
|
|
1099
|
+
runs-on: ubuntu-latest
|
|
1100
|
+
needs: [detect-language, test-elixir]
|
|
1101
|
+
if: needs.detect-language.outputs.elixir == 'true'
|
|
1102
|
+
|
|
1103
|
+
steps:
|
|
1104
|
+
- name: Checkout code
|
|
1105
|
+
uses: actions/checkout@v4
|
|
1106
|
+
|
|
1107
|
+
- name: Setup Elixir
|
|
1108
|
+
uses: erlef/setup-beam@v1
|
|
1109
|
+
with:
|
|
1110
|
+
elixir-version: '1.15'
|
|
1111
|
+
otp-version: '26'
|
|
1112
|
+
|
|
1113
|
+
- name: Build project
|
|
1114
|
+
run: |
|
|
1115
|
+
echo "Building Elixir project..."
|
|
1116
|
+
mix compile || echo "Build failed (non-blocking)"
|
|
1117
|
+
|
|
1118
|
+
build-kotlin:
|
|
1119
|
+
name: Build Kotlin Project
|
|
1120
|
+
runs-on: ubuntu-latest
|
|
1121
|
+
needs: [detect-language, test-kotlin]
|
|
1122
|
+
if: needs.detect-language.outputs.kotlin == 'true'
|
|
1123
|
+
|
|
1124
|
+
steps:
|
|
1125
|
+
- name: Checkout code
|
|
1126
|
+
uses: actions/checkout@v4
|
|
1127
|
+
|
|
1128
|
+
- name: Setup JDK
|
|
1129
|
+
uses: actions/setup-java@v4
|
|
1130
|
+
with:
|
|
1131
|
+
distribution: 'temurin'
|
|
1132
|
+
java-version: '17'
|
|
1133
|
+
|
|
1134
|
+
- name: Build project
|
|
1135
|
+
run: |
|
|
1136
|
+
echo "Building Kotlin project..."
|
|
1137
|
+
./gradlew build || echo "Build failed (non-blocking)"
|
|
1138
|
+
|
|
1139
|
+
build-scala:
|
|
1140
|
+
name: Build Scala Project
|
|
1141
|
+
runs-on: ubuntu-latest
|
|
1142
|
+
needs: [detect-language, test-scala]
|
|
1143
|
+
if: needs.detect-language.outputs.scala == 'true'
|
|
1144
|
+
|
|
1145
|
+
steps:
|
|
1146
|
+
- name: Checkout code
|
|
1147
|
+
uses: actions/checkout@v4
|
|
1148
|
+
|
|
1149
|
+
- name: Setup Scala
|
|
1150
|
+
uses: olafurpg/setup-scala@v14
|
|
1151
|
+
with:
|
|
1152
|
+
java-version: 'adopt@1.17'
|
|
1153
|
+
|
|
1154
|
+
- name: Build project
|
|
1155
|
+
run: |
|
|
1156
|
+
echo "Building Scala project..."
|
|
1157
|
+
sbt compile || echo "Build failed (non-blocking)"
|
|
1158
|
+
|
|
1159
|
+
build-swift:
|
|
1160
|
+
name: Build Swift Project
|
|
1161
|
+
runs-on: ubuntu-latest
|
|
1162
|
+
needs: [detect-language, test-swift]
|
|
1163
|
+
if: needs.detect-language.outputs.swift == 'true'
|
|
1164
|
+
|
|
1165
|
+
steps:
|
|
1166
|
+
- name: Checkout code
|
|
1167
|
+
uses: actions/checkout@v4
|
|
1168
|
+
|
|
1169
|
+
- name: Setup Swift
|
|
1170
|
+
uses: swift/setup-swift@v1
|
|
1171
|
+
with:
|
|
1172
|
+
swift-version: '5.9'
|
|
1173
|
+
|
|
1174
|
+
- name: Build project
|
|
1175
|
+
run: |
|
|
1176
|
+
echo "Building Swift project..."
|
|
1177
|
+
swift build || echo "Build failed (non-blocking)"
|
|
1178
|
+
|
|
1179
|
+
build-csharp:
|
|
1180
|
+
name: Build C# Project
|
|
1181
|
+
runs-on: ubuntu-latest
|
|
1182
|
+
needs: [detect-language, test-csharp]
|
|
1183
|
+
if: needs.detect-language.outputs.csharp == 'true'
|
|
1184
|
+
|
|
1185
|
+
steps:
|
|
1186
|
+
- name: Checkout code
|
|
1187
|
+
uses: actions/checkout@v4
|
|
1188
|
+
|
|
1189
|
+
- name: Setup .NET
|
|
1190
|
+
uses: actions/setup-dotnet@v4
|
|
1191
|
+
with:
|
|
1192
|
+
dotnet-version: '8.0'
|
|
1193
|
+
|
|
1194
|
+
- name: Build project
|
|
1195
|
+
run: |
|
|
1196
|
+
echo "Building C# project..."
|
|
1197
|
+
dotnet build || echo "Build failed (non-blocking)"
|
|
1198
|
+
|
|
1199
|
+
build-cpp:
|
|
1200
|
+
name: Build C++ Project
|
|
1201
|
+
runs-on: ubuntu-latest
|
|
1202
|
+
needs: [detect-language, test-cpp]
|
|
1203
|
+
if: needs.detect-language.outputs.cpp == 'true'
|
|
1204
|
+
|
|
1205
|
+
steps:
|
|
1206
|
+
- name: Checkout code
|
|
1207
|
+
uses: actions/checkout@v4
|
|
1208
|
+
|
|
1209
|
+
- name: Build project
|
|
1210
|
+
run: |
|
|
1211
|
+
echo "Building C++ project..."
|
|
1212
|
+
|
|
1213
|
+
if [ -f "CMakeLists.txt" ]; then
|
|
1214
|
+
cmake -DCMAKE_BUILD_TYPE=Release .
|
|
1215
|
+
cmake --build . || echo "Build failed (non-blocking)"
|
|
1216
|
+
elif [ -f "Makefile" ]; then
|
|
1217
|
+
make || echo "Build failed (non-blocking)"
|
|
1218
|
+
fi
|
|
1219
|
+
|
|
1220
|
+
build-flutter:
|
|
1221
|
+
name: Build Flutter Project
|
|
1222
|
+
runs-on: ubuntu-latest
|
|
1223
|
+
needs: [detect-language, test-flutter]
|
|
1224
|
+
if: needs.detect-language.outputs.flutter == 'true'
|
|
1225
|
+
|
|
1226
|
+
steps:
|
|
1227
|
+
- name: Checkout code
|
|
1228
|
+
uses: actions/checkout@v4
|
|
1229
|
+
|
|
1230
|
+
- name: Setup Flutter
|
|
1231
|
+
uses: subosito/flutter-action@v2
|
|
1232
|
+
with:
|
|
1233
|
+
flutter-version: '3.16'
|
|
1234
|
+
channel: 'stable'
|
|
1235
|
+
|
|
1236
|
+
- name: Build project
|
|
1237
|
+
run: |
|
|
1238
|
+
echo "Building Flutter project..."
|
|
1239
|
+
flutter build apk --debug || echo "Build failed (non-blocking)"
|
|
1240
|
+
|
|
1241
|
+
build-r:
|
|
1242
|
+
name: Build R Package
|
|
1243
|
+
runs-on: ubuntu-latest
|
|
1244
|
+
needs: [detect-language, test-r]
|
|
1245
|
+
if: needs.detect-language.outputs.r == 'true'
|
|
1246
|
+
|
|
1247
|
+
steps:
|
|
1248
|
+
- name: Checkout code
|
|
1249
|
+
uses: actions/checkout@v4
|
|
1250
|
+
|
|
1251
|
+
- name: Setup R
|
|
1252
|
+
uses: r-lib/actions/setup-r@v2
|
|
1253
|
+
with:
|
|
1254
|
+
r-version: '4.3'
|
|
1255
|
+
|
|
1256
|
+
- name: Build package
|
|
464
1257
|
run: |
|
|
465
|
-
echo "
|
|
466
|
-
|
|
1258
|
+
echo "Building R package..."
|
|
1259
|
+
R CMD build . || echo "Build failed (non-blocking)"
|
|
467
1260
|
|
|
468
1261
|
quality-gate:
|
|
469
|
-
name:
|
|
1262
|
+
name: Quality Gate
|
|
470
1263
|
runs-on: ubuntu-latest
|
|
471
1264
|
needs: [detect-language]
|
|
472
1265
|
if: always()
|
|
473
1266
|
|
|
474
1267
|
steps:
|
|
475
|
-
- name:
|
|
1268
|
+
- name: Check results
|
|
476
1269
|
run: |
|
|
477
|
-
echo "
|
|
1270
|
+
echo "Quality Gate Results:"
|
|
478
1271
|
echo ""
|
|
479
1272
|
echo "Primary Language: ${{ needs.detect-language.outputs.primary_language }}"
|
|
480
1273
|
echo ""
|
|
481
|
-
echo "
|
|
1274
|
+
echo "CI Pipeline completed"
|
|
482
1275
|
echo ""
|
|
483
1276
|
echo "Note: This is a universal CI pipeline that adapts to your project."
|
|
484
1277
|
echo "Failures in optional steps (linting, formatting) are non-blocking."
|
|
485
1278
|
|
|
486
|
-
- name:
|
|
1279
|
+
- name: Summary
|
|
487
1280
|
if: always()
|
|
488
1281
|
run: |
|
|
489
1282
|
cat >> $GITHUB_STEP_SUMMARY << 'SUMMARY'
|
|
490
|
-
##
|
|
1283
|
+
## Universal CI Pipeline Summary
|
|
491
1284
|
|
|
492
1285
|
| Check | Status |
|
|
493
1286
|
|-------|--------|
|
|
494
|
-
| Language Detection |
|
|
1287
|
+
| Language Detection | Passed |
|
|
495
1288
|
| Code Quality | See individual jobs |
|
|
496
1289
|
| Tests | See individual jobs |
|
|
497
1290
|
| Build | See individual jobs |
|
|
@@ -503,6 +1296,14 @@ jobs:
|
|
|
503
1296
|
- **Rust**: ${{ needs.detect-language.outputs.rust }}
|
|
504
1297
|
- **Java**: ${{ needs.detect-language.outputs.java }}
|
|
505
1298
|
- **Ruby**: ${{ needs.detect-language.outputs.ruby }}
|
|
1299
|
+
- **Elixir**: ${{ needs.detect-language.outputs.elixir }}
|
|
1300
|
+
- **Kotlin**: ${{ needs.detect-language.outputs.kotlin }}
|
|
1301
|
+
- **Scala**: ${{ needs.detect-language.outputs.scala }}
|
|
1302
|
+
- **Swift**: ${{ needs.detect-language.outputs.swift }}
|
|
1303
|
+
- **C#**: ${{ needs.detect-language.outputs.csharp }}
|
|
1304
|
+
- **C++**: ${{ needs.detect-language.outputs.cpp }}
|
|
1305
|
+
- **Flutter**: ${{ needs.detect-language.outputs.flutter }}
|
|
1306
|
+
- **R**: ${{ needs.detect-language.outputs.r }}
|
|
506
1307
|
|
|
507
1308
|
### Primary Language
|
|
508
1309
|
**${{ needs.detect-language.outputs.primary_language }}**
|