Compare commits

..

24 Commits

Author SHA1 Message Date
Jonathan Miller b491241a58 Merge branch 'main' into dev
Universal: Sync Feature Branch Versions / Sync feature branches with dev (push) Has been skipped
# Conflicts:
#	.mokogitea/CLAUDE.md
#	.mokogitea/ISSUE_TEMPLATE/config.yml
#	.mokogitea/ISSUE_TEMPLATE/documentation.md
#	.mokogitea/ISSUE_TEMPLATE/feature_request.md
#	.mokogitea/ISSUE_TEMPLATE/security.md
#	.mokogitea/branch-protection.yml
#	.mokogitea/bulk-repo-sync.yml
#	.mokogitea/pr-branch-check.yml
#	.mokogitea/renovate.yml
#	.mokogitea/sync-wikis.yml
#	.mokogitea/workflows/auto-bump.yml
#	.mokogitea/workflows/auto-release.yml
#	.mokogitea/workflows/ci-platform.yml
#	.mokogitea/workflows/cleanup.yml
#	.mokogitea/workflows/gitleaks.yml
#	.mokogitea/workflows/issue-branch.yml
#	.mokogitea/workflows/notify.yml
#	.mokogitea/workflows/pre-release.yml
#	.mokogitea/workflows/repo-health.yml
#	.mokogitea/workflows/security-audit.yml
#	.script-registry.json
#	CHANGELOG.md
#	PLUGIN_SCRIPTS.md
#	README.md
#	analysis/index.md
#	automation/bulk_joomla_template.php
#	automation/bulk_sync.php
#	automation/enrich_manifest_xml.php
#	automation/enrich_mokostandards_xml.php
#	automation/index.md
#	automation/migrate_to_gitea.php
#	automation/push_files.php
#	automation/push_manifest_xml.php
#	automation/push_mokostandards_xml.php
#	automation/repo_cleanup.php
#	bin/moko
#	cli/archive_repo.php
#	cli/audit_query.php
#	cli/badge_update.php
#	cli/branch_rename.php
#	cli/bulk_workflow_push.php
#	cli/bulk_workflow_trigger.php
#	cli/changelog_promote.php
#	cli/changelog_prune.php
#	cli/client_dashboard.php
#	cli/client_health_check.php
#	cli/client_inventory.php
#	cli/client_provision.php
#	cli/completion.php
#	cli/create_project.php
#	cli/create_repo.php
#	cli/deploy_joomla.php
#	cli/dev_branch_reset.php
#	cli/grafana_dashboard.php
#	cli/joomla_build.php
#	cli/joomla_compat_check.php
#	cli/joomla_metadata_validate.php
#	cli/joomla_release.php
#	cli/license_manage.php
#	cli/manifest_element.php
#	cli/manifest_licensing.php
#	cli/manifest_read.php
#	cli/package_build.php
#	cli/platform_detect.php
#	cli/release.php
#	cli/release_body_update.php
#	cli/release_cascade.php
#	cli/release_create.php
#	cli/release_manage.php
#	cli/release_mirror.php
#	cli/release_notes.php
#	cli/release_package.php
#	cli/release_promote.php
#	cli/release_publish.php
#	cli/release_validate.php
#	cli/release_verify.php
#	cli/scaffold_client.php
#	cli/sync_rulesets.php
#	cli/theme_lint.php
#	cli/updates_xml_build.php
#	cli/updates_xml_sync.php
#	cli/version_auto_bump.php
#	cli/version_bump.php
#	cli/version_bump_remote.php
#	cli/version_check.php
#	cli/version_read.php
#	cli/version_reset_dev.php
#	cli/version_set_platform.php
#	cli/wiki_sync.php
#	cli/workflow_sync.php
#	composer.json
#	deploy/backup-before-deploy.php
#	deploy/deploy-dolibarr.php
#	deploy/deploy-joomla.php
#	deploy/deploy-sftp.php
#	deploy/health-check.php
#	deploy/rollback-joomla.php
#	deploy/sync-joomla.php
#	fix/fix_line_endings.php
#	fix/fix_permissions.php
#	fix/fix_tabs.php
#	fix/fix_trailing_spaces.php
#	fix/index.md
#	index.md
#	lib/CliBase.php
#	lib/Common.php
#	lib/Enterprise/AbstractProjectPlugin.php
#	lib/Enterprise/ApiClient.php
#	lib/Enterprise/AuditLogger.php
#	lib/Enterprise/CheckpointManager.php
#	lib/Enterprise/CliFramework.php
#	lib/Enterprise/Config.php
#	lib/Enterprise/ConfigValidator.php
#	lib/Enterprise/EnterpriseReadinessValidator.php
#	lib/Enterprise/ErrorRecovery.php
#	lib/Enterprise/FileFixUtility.php
#	lib/Enterprise/GitHubAdapter.php
#	lib/Enterprise/GitPlatformAdapter.php
#	lib/Enterprise/InputValidator.php
#	lib/Enterprise/ManifestParser.php
#	lib/Enterprise/ManifestReader.php
#	lib/Enterprise/MetricsCollector.php
#	lib/Enterprise/MokoGiteaAdapter.php
#	lib/Enterprise/PackageBuilder.php
#	lib/Enterprise/PlatformAdapterFactory.php
#	lib/Enterprise/PluginFactory.php
#	lib/Enterprise/PluginRegistry.php
#	lib/Enterprise/Plugins/ApiPlugin.php
#	lib/Enterprise/Plugins/DocumentationPlugin.php
#	lib/Enterprise/Plugins/DolibarrPlugin.php
#	lib/Enterprise/Plugins/GenericPlugin.php
#	lib/Enterprise/Plugins/JoomlaPlugin.php
#	lib/Enterprise/Plugins/McpServerPlugin.php
#	lib/Enterprise/Plugins/MobilePlugin.php
#	lib/Enterprise/Plugins/NodeJsPlugin.php
#	lib/Enterprise/Plugins/PythonPlugin.php
#	lib/Enterprise/Plugins/TerraformPlugin.php
#	lib/Enterprise/Plugins/WordPressPlugin.php
#	lib/Enterprise/ProjectConfigValidator.php
#	lib/Enterprise/ProjectMetricsCollector.php
#	lib/Enterprise/ProjectPluginInterface.php
#	lib/Enterprise/ProjectTypeDetector.php
#	lib/Enterprise/RecoveryError.php
#	lib/Enterprise/RecoveryManager.php
#	lib/Enterprise/RepositoryHealthChecker.php
#	lib/Enterprise/RepositorySynchronizer.php
#	lib/Enterprise/RetryHelper.php
#	lib/Enterprise/SecurityValidator.php
#	lib/Enterprise/SourceResolver.php
#	lib/Enterprise/SynchronizationException.php
#	lib/Enterprise/TransactionManager.php
#	lib/Enterprise/UnifiedValidation.php
#	lib/index.md
#	lib/plugins/Joomla/UpdateXmlGenerator.php
#	maintenance/index.md
#	maintenance/pin_action_shas.php
#	maintenance/repo_inventory.php
#	maintenance/rotate_secrets.php
#	maintenance/setup_labels.php
#	maintenance/sync_dolibarr_readmes.php
#	maintenance/update_repo_inventory.php
#	maintenance/update_sha_hashes.php
#	maintenance/update_version_from_readme.php
#	mcp/config.example.json
#	mcp/package.json
#	mcp/src/config.ts
#	mcp/src/index.ts
#	mcp/src/runner.ts
#	mcp/src/types.ts
#	phpcs.xml
#	plugin_health_check.php
#	plugin_list.php
#	plugin_metrics.php
#	plugin_readiness.php
#	plugin_validate.php
#	release/generate_dolibarr_version_txt.php
#	release/generate_joomla_update_xml.php
#	src/functions.php
#	templates/configs/README.md
#	templates/configs/index.md
#	templates/configs/manifest.xml.template
#	templates/configs/manifest.yml.template
#	templates/configs/mokostandards.xml.template
#	templates/configs/mokostandards.yml.template
#	templates/configs/phpcs.xml
#	templates/docs/README.md
#	templates/docs/extra/README.md
#	templates/docs/extra/index.md
#	templates/docs/index.md
#	templates/docs/required/GOVERNANCE.md
#	templates/docs/required/README.md
#	templates/docs/required/index.md
#	templates/docs/required/template-CONTRIBUTING.md
#	templates/docs/required/template-README.md
#	templates/docs/required/template-SECURITY.md
#	templates/index.md
#	templates/licenses/README.md
#	templates/licenses/index.md
#	templates/makefiles/README.md
#	templates/mokogitea/CLAUDE.dolibarr.md.template
#	templates/mokogitea/CLAUDE.joomla.md.template
#	templates/mokogitea/CLAUDE.md.template
#	templates/mokogitea/ISSUE_TEMPLATE/config.yml
#	templates/mokogitea/ISSUE_TEMPLATE/documentation.md
#	templates/mokogitea/ISSUE_TEMPLATE/dolibarr_module_id_request.md
#	templates/mokogitea/ISSUE_TEMPLATE/feature_request.md
#	templates/mokogitea/ISSUE_TEMPLATE/security.md
#	templates/mokogitea/README.md
#	templates/mokogitea/copilot-instructions.dolibarr.md.template
#	templates/mokogitea/copilot-instructions.joomla.md.template
#	templates/mokogitea/copilot-instructions.md.template
#	templates/mokogitea/dependabot.yml.template
#	templates/mokogitea/override.tf.template
#	templates/required/README.md
#	templates/schemas/README.md
#	templates/schemas/manifest-schema.xsd
#	templates/schemas/moko-platform-schema.xsd
#	templates/schemas/mokostandards-schema.xsd
#	templates/schemas/schemas/README.md
#	templates/schemas/template-repository-structure.xml
#	templates/scripts/README.md
#	templates/scripts/common/CliBase.template.php
#	templates/scripts/fix/index.md
#	templates/scripts/index.md
#	templates/scripts/release/index.md
#	templates/scripts/release/package_dolibarr.php
#	templates/scripts/release/package_joomla.php
#	templates/scripts/sftp-config/README.md
#	templates/scripts/validate/dolibarr_module.php
#	templates/scripts/validate/index.md
#	templates/scripts/validate/validate_manifest.php
#	templates/scripts/validate/validate_structure.php
#	templates/security/README.md
#	templates/security/index.php
#	templates/stubs/dolibarr.php
#	templates/stubs/joomla.php
#	templates/web/index.php
#	tests/Enterprise/GitPlatformAdapterTest.php
#	tests/Unit/VersionBumpTest.php
#	tests/Unit/VersionReadTest.php
#	tests/index.md
#	tests/test_circuit_breaker_handling.php
#	tests/test_enterprise_libraries.php
#	validate/SECURITY_SCANNING.md
#	validate/auto_detect_platform.php
#	validate/check_changelog.php
#	validate/check_client_theme.php
#	validate/check_composer_deps.php
#	validate/check_dolibarr_module.php
#	validate/check_enterprise_readiness.php
#	validate/check_file_integrity.php
#	validate/check_joomla_manifest.php
#	validate/check_language_structure.php
#	validate/check_license_headers.php
#	validate/check_no_secrets.php
#	validate/check_paths.php
#	validate/check_php_syntax.php
#	validate/check_repo_health.php
#	validate/check_structure.php
#	validate/check_tabs.php
#	validate/check_version_consistency.php
#	validate/check_wiki_health.php
#	validate/check_xml_wellformed.php
#	validate/index.md
#	validate/scan_drift.php
#	wrappers/auto_detect_platform.php
#	wrappers/bulk_sync.php
#	wrappers/check_changelog.php
#	wrappers/check_dolibarr_module.php
#	wrappers/check_enterprise_readiness.php
#	wrappers/check_joomla_manifest.php
#	wrappers/check_language_structure.php
#	wrappers/check_license_headers.php
#	wrappers/check_no_secrets.php
#	wrappers/check_paths.php
#	wrappers/check_php_syntax.php
#	wrappers/check_repo_health.php
#	wrappers/check_structure.php
#	wrappers/check_tabs.php
#	wrappers/check_version_consistency.php
#	wrappers/check_xml_wellformed.php
#	wrappers/deploy_sftp.php
#	wrappers/fix_line_endings.php
#	wrappers/fix_permissions.php
#	wrappers/fix_tabs.php
#	wrappers/fix_trailing_spaces.php
#	wrappers/gen_wrappers.php
#	wrappers/index.md
#	wrappers/pin_action_shas.php
#	wrappers/plugin_health_check.php
#	wrappers/plugin_list.php
#	wrappers/plugin_metrics.php
#	wrappers/plugin_readiness.php
#	wrappers/plugin_validate.php
#	wrappers/scan_drift.php
#	wrappers/setup_labels.php
#	wrappers/sync_dolibarr_readmes.php
#	wrappers/update_sha_hashes.php
#	wrappers/update_version_from_readme.php
2026-06-20 21:43:38 -05:00
jmiller 8822469761 fix: rename mokoplatform/moko-platform to MokoCLI everywhere (#262)
Platform: MokoCLI CI / Gate 2: Unit Tests (8.1) (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.2) (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.3) (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 3: Self-Health Check (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 4: Governance (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.1) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 5: Template Integrity (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.2) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / CI Summary (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.3) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 3: Self-Health Check (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 4: Governance (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 5: Template Integrity (pull_request) Blocked by required conditions
Platform: MokoCLI CI / CI Summary (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (push) Has been skipped
Universal: Auto Version Bump / Version Bump (push) Failing after 4s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 1s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 5s
Universal: PR Check / Validate PR (pull_request) Successful in 5s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 6s
Universal: Security Audit / Dependency Audit (pull_request) Successful in 5s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || 'development' }}) (pull_request_target) Failing after 9s
Platform: MokoCLI CI / Gate 1: Code Quality (push) Failing after 59s
Platform: MokoCLI CI / Gate 1: Code Quality (pull_request) Failing after 1m1s
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
2026-06-20 17:12:15 +00:00
Jonathan Miller 908e839c30 fix: address PR review findings for #262 rename
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.1) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.2) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.3) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 3: Self-Health Check (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 4: Governance (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 5: Template Integrity (pull_request) Blocked by required conditions
Platform: MokoCLI CI / CI Summary (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 4s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Platform: MokoCLI CI / Gate 1: Code Quality (pull_request) Failing after 50s
Branch Cleanup / Delete merged branch (pull_request) Successful in 1s
Critical fixes:
- Standardize all workflow paths to /opt/mokocli (lowercase), not /opt/MokoCLI
- Add legacy /opt/mokoplatform fallback to auto-release.yml and pre-release.yml
- Fix inconsistent REPO header URLs to MokoConsulting/mokocli everywhere
- Fix auto-bump.yml clone URL from mokoplatform.git to mokocli.git

Alias improvements:
- Remove @ suppression from trigger_error so deprecation notices are observable
- Add dependency guard for mokostandards_* functions at top of aliases.php
- Add E_USER_NOTICE diagnostic when neither install path is found
- Improve setup-mokocli-aliases.sh with WARNING messages for edge cases

Missed files:
- Rename references in shell scripts (ci-issue-reporter, server-autoheal, sync-wikis)
- Rename references in XSD schemas and .template files
- Remove accidentally force-added bin/validate-module (gitignored)
2026-06-20 12:07:55 -05:00
jmiller d5d9c4afce fix: rename moko-platform to mokocli + changelog promotion in workflows
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (push) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Validate PR (pull_request) Successful in 5s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 5s
2026-06-20 17:03:53 +00:00
jmiller ba6003a431 fix: rename moko-platform to mokocli + changelog promotion in workflows
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.1) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.2) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.3) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 3: Self-Health Check (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 4: Governance (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 5: Template Integrity (pull_request) Blocked by required conditions
Platform: MokoCLI CI / CI Summary (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 5s
Platform: MokoCLI CI / Gate 1: Code Quality (pull_request) Failing after 1m15s
2026-06-20 17:03:49 +00:00
jmiller f918bccf12 fix: rename moko-platform to mokocli + changelog promotion in workflows
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.1) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.2) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.3) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 3: Self-Health Check (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 4: Governance (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 5: Template Integrity (pull_request) Blocked by required conditions
Platform: MokoCLI CI / CI Summary (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 6s
Platform: MokoCLI CI / Gate 1: Code Quality (pull_request) Failing after 1m22s
2026-06-20 17:03:45 +00:00
jmiller 8741964d87 fix: rename moko-platform to mokocli + changelog promotion in workflows
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.1) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.2) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.3) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 3: Self-Health Check (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 4: Governance (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 5: Template Integrity (pull_request) Blocked by required conditions
Platform: MokoCLI CI / CI Summary (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 6s
Platform: MokoCLI CI / Gate 1: Code Quality (pull_request) Failing after 1m19s
2026-06-20 17:03:42 +00:00
jmiller c70481b69d fix: rename moko-platform to mokocli + changelog promotion in workflows
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.1) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.2) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.3) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 3: Self-Health Check (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 4: Governance (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 5: Template Integrity (pull_request) Blocked by required conditions
Platform: MokoCLI CI / CI Summary (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 5s
Universal: PR Check / Validate PR (pull_request) Successful in 6s
Platform: MokoCLI CI / Gate 1: Code Quality (pull_request) Failing after 1m24s
2026-06-20 17:03:39 +00:00
Jonathan Miller a5a16fb7e3 fix: rename moko-platform to MokoCLI in documentation (#268)
Generic: Repo Health / Scripts governance (push) Blocked by required conditions
Generic: Repo Health / Repository health (push) Blocked by required conditions
Generic: Repo Health / Report Issues (push) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Platform: MokoCLI CI / Gate 2: Unit Tests (8.1) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.2) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 2: Unit Tests (8.3) (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 3: Self-Health Check (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 4: Governance (pull_request) Blocked by required conditions
Platform: MokoCLI CI / Gate 5: Template Integrity (pull_request) Blocked by required conditions
Platform: MokoCLI CI / CI Summary (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 4s
Universal: PR Check / Validate PR (pull_request) Successful in 8s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Platform: MokoCLI CI / Gate 1: Code Quality (pull_request) Failing after 1m31s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 5s
Update all markdown files: README, CHANGELOG, CLAUDE.md, index files,
templates, issue templates, and inline documentation.
2026-06-20 11:39:54 -05:00
Jonathan Miller 1274e2866b fix: rename moko-platform to MokoCLI in MCP server configs (#269)
Update REPO URLs and references in all MCP TypeScript source files.
2026-06-20 11:38:59 -05:00
Jonathan Miller 314bf91913 fix: add deprecation notices to backward-compat aliases (#276)
Old-name aliases now emit E_USER_DEPRECATED so usage appears in logs
without interrupting execution. Added mokoplatform_version() and
mokoplatform_root_dir() backward aliases with deprecation warnings.
The install path resolver also warns when falling back to /opt/mokoplatform.
2026-06-20 11:38:00 -05:00
Jonathan Miller 5c05ac62d0 fix: rename moko-platform to MokoCLI in CI/CD workflows (#266)
Update all .mokogitea/ workflow and config YAML files:
- File header comments (INGROUP, REPO, DEFGROUP)
- CI banner text in ci-platform.yml
- EXCLUDE lists accept both mokocli and mokoplatform repo names
- auto-bump.yml already updated in #276 with dual-path resolution
2026-06-20 11:37:08 -05:00
Jonathan Miller d206dd5afb fix: rename MokoStandards to MokoCLI in CLI help text and output (#265)
Update bin/moko banner, help text, and file headers.
Update bin/validate-module output and headers.
2026-06-20 11:24:42 -05:00
Jonathan Miller 50260b5cb5 fix: rename MokoPlatform/moko-platform to MokoCLI in all PHP files (#264)
Bulk rename across all non-vendor PHP files:
- File header comments (DEFGROUP, INGROUP, REPO, @package)
- User-Agent strings
- Namespace URI constant in MokoStandardsParser
- Descriptive comments and docblocks
2026-06-20 11:22:24 -05:00
Jonathan Miller 4eb421d6ba fix: rename moko-platform to MokoCLI in config files (#263)
Update package names, descriptions, and references across all
configuration files: composer.json, mcp/package.json, phpcs.xml,
issue templates, script registry, and schema templates.
2026-06-20 11:20:27 -05:00
Jonathan Miller df83f36436 fix: add MokoCLI backward-compatibility aliases and redirect stubs (#276)
Prepare for the mokoplatform -> MokoCLI rename by introducing aliases
so both old and new names work during the transition:

- src/aliases.php: forward function aliases (mokocli_version, etc.)
  and install path resolver accepting both /opt/mokocli and /opt/mokoplatform
- scripts/setup-mokocli-aliases.sh: runner provisioning script to create
  symlinks between mokocli and mokoplatform paths
- composer.json: auto-load aliases.php
- mcp/package.json: add mokocli-mcp bin alias alongside moko-platform-mcp
- auto-bump.yml: check both /opt/mokocli and /opt/mokoplatform paths
- platform_detect.php: accept both mokocli and mokoplatform directory names
2026-06-20 11:17:08 -05:00
gitea-actions[bot] e4de039cff chore(version): pre-release bump to 09.25.05-dev [skip ci] 2026-06-19 08:16:30 +00:00
jmiller a6338493aa Merge pull request 'fix: rename package_type to extension_type, remove display_name (#259)' (#261) from fix/259-metadata-rename into dev
Universal: Auto Version Bump / Version Bump (push) Has been skipped
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 9s
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Platform: moko-platform CI / Gate 1: Code Quality (push) Failing after 38s
Platform: moko-platform CI / Gate 2: Unit Tests (8.1) (push) Has been cancelled
Platform: moko-platform CI / Gate 2: Unit Tests (8.2) (push) Has been cancelled
Platform: moko-platform CI / Gate 2: Unit Tests (8.3) (push) Has been cancelled
Platform: moko-platform CI / Gate 3: Self-Health Check (push) Has been cancelled
Platform: moko-platform CI / Gate 4: Governance (push) Has been cancelled
Platform: moko-platform CI / Gate 5: Template Integrity (push) Has been cancelled
Platform: moko-platform CI / CI Summary (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
2026-06-19 08:16:20 +00:00
gitea-actions[bot] 1b113af068 chore(version): pre-release bump to 09.25.04-dev [skip ci]
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
2026-06-19 08:14:01 +00:00
Jonathan Miller a51f0bfb2f fix: rename package_type to extension_type, remove display_name validation (#259)
Generic: Repo Health / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (push) Has been skipped
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 6s
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
- API endpoint updated from /manifest to /metadata
- Removed dead .mokogitea/manifest.xml local file fallback
- display_name is now server-computed, no longer validated
- package_type renamed to extension_type throughout
2026-06-19 03:13:31 -05:00
Jonathan Miller c7b6f98f93 feat: add joomla_metadata_validate CLI command (#257)
Validates MokoGitea repo metadata against the actual Joomla extension
manifest XML to catch update delivery mismatches before production.

Checks:
- package_type matches <extension type>
- Element name derived correctly (prefix + lowercase + clean)
- Display name matches <name> tag
- Version consistency (ignoring -dev/-rc suffixes)
- PHP minimum matches composer.json
- Description match (informational)

Supports:
- Local mode: reads .mokogitea/manifest.xml + Joomla XML from disk
- API mode: fetches metadata via Gitea API (--token)
- CI mode: --ci flag exits 1 on errors
- JSON output: --json for workflow integration

Handles all Joomla types: package, component, module, plugin,
template, library, file. Replicates Joomla's InputFilter::clean('cmd')
for element name derivation.

Refs mokoplatform #257
2026-06-19 03:08:03 -05:00
jmiller 2dc43de160 revert: re-enable auto-bump on dev push [skip ci] 2026-06-18 13:22:15 +00:00
gitea-actions[bot] ea760bb75b chore(version): pre-release bump to 09.25.03-dev [skip ci] 2026-06-11 20:23:12 +00:00
jmiller d065eaf0fd ci(pre-release): add chore/** branch trigger for pre-release builds
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Failing after 4s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
Platform: moko-platform CI / Gate 1: Code Quality (push) Failing after 1m3s
Platform: moko-platform CI / Gate 2: Unit Tests (8.1) (push) Has been cancelled
Platform: moko-platform CI / Gate 2: Unit Tests (8.2) (push) Has been cancelled
Platform: moko-platform CI / Gate 2: Unit Tests (8.3) (push) Has been cancelled
Platform: moko-platform CI / Gate 3: Self-Health Check (push) Has been cancelled
Platform: moko-platform CI / Gate 4: Governance (push) Has been cancelled
Platform: moko-platform CI / Gate 5: Template Integrity (push) Has been cancelled
Platform: moko-platform CI / CI Summary (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
2026-06-11 20:22:31 +00:00
312 changed files with 5126 additions and 920 deletions
+12
View File
@@ -1,4 +1,8 @@
<<<<<<< HEAD
# MokoCLI
=======
# mokoplatform # mokoplatform
>>>>>>> main
Enterprise automation, validation, sync, and governance engine for all Moko Consulting repositories. Enterprise automation, validation, sync, and governance engine for all Moko Consulting repositories.
@@ -9,7 +13,11 @@ Enterprise automation, validation, sync, and governance engine for all Moko Cons
| **Language** | PHP 8.1+ | | **Language** | PHP 8.1+ |
| **Version** | 09.01.00 | | **Version** | 09.01.00 |
| **Branch** | develop on `dev`, merge to `main` (protected) | | **Branch** | develop on `dev`, merge to `main` (protected) |
<<<<<<< HEAD
| **Wiki** | [MokoCLI Wiki](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki) |
=======
| **Wiki** | [mokoplatform Wiki](https://git.mokoconsulting.tech/MokoConsulting/mokoplatform/wiki) | | **Wiki** | [mokoplatform Wiki](https://git.mokoconsulting.tech/MokoConsulting/mokoplatform/wiki) |
>>>>>>> main
## Commands ## Commands
@@ -73,4 +81,8 @@ PHPStan runs with `--memory-limit=512M`. CI enforces PHPCS errors; PHPStan is `c
- **Workflow directory**: `.mokogitea/` (not `.gitea/` or `.github/`) - **Workflow directory**: `.mokogitea/` (not `.gitea/` or `.github/`)
- **Wiki**: documentation lives in the Gitea wiki, not `docs/` files - **Wiki**: documentation lives in the Gitea wiki, not `docs/` files
- **New CLI tools**: extend `CliFramework`, not `CLIApp` (legacy) - **New CLI tools**: extend `CliFramework`, not `CLIApp` (legacy)
<<<<<<< HEAD
- **Standards**: [MokoStandards](https://git.mokoconsulting.tech/MokoConsulting/mokocli/wiki/Home)
=======
- **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokoplatform/wiki/Home) - **Standards**: [MokoCli](https://git.mokoconsulting.tech/MokoConsulting/mokoplatform/wiki/Home)
>>>>>>> main
+5
View File
@@ -7,8 +7,13 @@ contact_links:
- name: 💬 Ask a Question - name: 💬 Ask a Question
url: https://mokoconsulting.tech/ url: https://mokoconsulting.tech/
about: Get help or ask questions through our website about: Get help or ask questions through our website
<<<<<<< HEAD
- name: 📚 MokoCLI Documentation
url: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
- name: 📚 mokoplatform Documentation - name: 📚 mokoplatform Documentation
url: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform url: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
about: View our coding standards and best practices about: View our coding standards and best practices
- name: 🔒 Report a Security Vulnerability - name: 🔒 Report a Security Vulnerability
url: https://git.mokoconsulting.tech/mokoconsulting-tech/.github-private/security/advisories/new url: https://git.mokoconsulting.tech/mokoconsulting-tech/.github-private/security/advisories/new
@@ -42,7 +42,11 @@ Suggested text here
<!-- Add any other context, screenshots, or references --> <!-- Add any other context, screenshots, or references -->
## Standards Alignment ## Standards Alignment
<<<<<<< HEAD
- [ ] Follows MokoCLI documentation guidelines
=======
- [ ] Follows mokoplatform documentation guidelines - [ ] Follows mokoplatform documentation guidelines
>>>>>>> main
- [ ] Uses en_US/en_GB localization - [ ] Uses en_US/en_GB localization
- [ ] Includes proper SPDX headers where applicable - [ ] Includes proper SPDX headers where applicable
@@ -37,7 +37,11 @@ If you have ideas about how this could be implemented, share them here:
Add any other context, mockups, or screenshots about the feature request here. Add any other context, mockups, or screenshots about the feature request here.
## Relevant Standards ## Relevant Standards
<<<<<<< HEAD
Does this relate to any standards in [MokoCLI](https://git.mokoconsulting.tech/MokoConsulting/mokocli)?
=======
Does this relate to any standards in [mokoplatform](https://git.mokoconsulting.tech/MokoConsulting/mokoplatform)? Does this relate to any standards in [mokoplatform](https://git.mokoconsulting.tech/MokoConsulting/mokoplatform)?
>>>>>>> main
- [ ] Accessibility (WCAG 2.1 AA) - [ ] Accessibility (WCAG 2.1 AA)
- [ ] Localization (en_US/en_GB) - [ ] Localization (en_US/en_GB)
- [ ] Security best practices - [ ] Security best practices
+4
View File
@@ -35,7 +35,11 @@ Use this template only for:
<!-- Describe how this could be addressed --> <!-- Describe how this could be addressed -->
## Standards Reference ## Standards Reference
<<<<<<< HEAD
Does this relate to security standards in [MokoCLI](https://git.mokoconsulting.tech/MokoConsulting/mokocli)?
=======
Does this relate to security standards in [mokoplatform](https://git.mokoconsulting.tech/MokoConsulting/mokoplatform)? Does this relate to security standards in [mokoplatform](https://git.mokoconsulting.tech/MokoConsulting/mokoplatform)?
>>>>>>> main
- [ ] SPDX license identifiers - [ ] SPDX license identifiers
- [ ] Secret management - [ ] Secret management
- [ ] Dependency security - [ ] Dependency security
+10
View File
@@ -2,8 +2,13 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Automation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
# INGROUP: mokoplatform.Automation # INGROUP: mokoplatform.Automation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
# PATH: /.gitea/workflows/branch-protection.yml # PATH: /.gitea/workflows/branch-protection.yml
# BRIEF: Apply standardised branch protection rules to all governed repositories # BRIEF: Apply standardised branch protection rules to all governed repositories
# #
@@ -62,8 +67,13 @@ jobs:
API="${GITEA_URL}/api/v1" API="${GITEA_URL}/api/v1"
# Platform/standards/infra repos to exclude # Platform/standards/infra repos to exclude
<<<<<<< HEAD
EXCLUDE="gitea-org-config org-profile gitea-private .mokogitea-private mokocli mokoplatform MokoTesting"
EXCLUDE="$EXCLUDE MokoStandards-Template-Client MokoStandards-Template-Dolibarr MokoStandards-Template-Generic MokoStandards-Template-Joomla MokoDoliProjTemplate"
=======
EXCLUDE="gitea-org-config org-profile gitea-private .mokogitea-private mokoplatform MokoTesting" EXCLUDE="gitea-org-config org-profile gitea-private .mokogitea-private mokoplatform MokoTesting"
EXCLUDE="$EXCLUDE MokoCli-Template-Client MokoCli-Template-Dolibarr MokoCli-Template-Generic MokoCli-Template-Joomla MokoDoliProjTemplate" EXCLUDE="$EXCLUDE MokoCli-Template-Client MokoCli-Template-Dolibarr MokoCli-Template-Generic MokoCli-Template-Joomla MokoDoliProjTemplate"
>>>>>>> main
if [ -n "${{ inputs.repos }}" ]; then if [ -n "${{ inputs.repos }}" ]; then
# User-specified repos # User-specified repos
+5
View File
@@ -2,8 +2,13 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Automation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
# INGROUP: mokoplatform.Automation # INGROUP: mokoplatform.Automation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
# PATH: /.gitea/workflows/bulk-repo-sync.yml # PATH: /.gitea/workflows/bulk-repo-sync.yml
# BRIEF: Bulk repo sync — runs from API repo, syncs standards to all governed repos # BRIEF: Bulk repo sync — runs from API repo, syncs standards to all governed repos
+6
View File
@@ -2,9 +2,15 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# #
# FILE INFORMATION # FILE INFORMATION
<<<<<<< HEAD
# DEFGROUP: MokoCLI.CI
# INGROUP: MokoCLI
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
# DEFGROUP: mokoplatform.CI # DEFGROUP: mokoplatform.CI
# INGROUP: mokoplatform # INGROUP: mokoplatform
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
# PATH: /.gitea/workflows/pr-branch-check.yml # PATH: /.gitea/workflows/pr-branch-check.yml
# BRIEF: PR branch merge policy enforcement # BRIEF: PR branch merge policy enforcement
# #
+10
View File
@@ -4,8 +4,13 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Automation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
# INGROUP: mokoplatform.Automation # INGROUP: mokoplatform.Automation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
# PATH: /.gitea/workflows/renovate.yml # PATH: /.gitea/workflows/renovate.yml
# BRIEF: Run Renovate Bot across all governed repos for dependency updates # BRIEF: Run Renovate Bot across all governed repos for dependency updates
# #
@@ -61,8 +66,13 @@ jobs:
run: | run: |
API="${GITEA_URL}/api/v1" API="${GITEA_URL}/api/v1"
<<<<<<< HEAD
EXCLUDE="gitea-org-config org-profile gitea-private .mokogitea-private mokocli mokoplatform MokoTesting"
EXCLUDE="$EXCLUDE MokoStandards-Template-Client MokoStandards-Template-Dolibarr MokoStandards-Template-Generic MokoStandards-Template-Joomla MokoDoliProjTemplate"
=======
EXCLUDE="gitea-org-config org-profile gitea-private .mokogitea-private mokoplatform MokoTesting" EXCLUDE="gitea-org-config org-profile gitea-private .mokogitea-private mokoplatform MokoTesting"
EXCLUDE="$EXCLUDE MokoCli-Template-Client MokoCli-Template-Dolibarr MokoCli-Template-Generic MokoCli-Template-Joomla MokoDoliProjTemplate" EXCLUDE="$EXCLUDE MokoCli-Template-Client MokoCli-Template-Dolibarr MokoCli-Template-Generic MokoCli-Template-Joomla MokoDoliProjTemplate"
>>>>>>> main
if [ -n "${{ inputs.repos }}" ]; then if [ -n "${{ inputs.repos }}" ]; then
REPOS=$(echo "${{ inputs.repos }}" | tr ',' ' ') REPOS=$(echo "${{ inputs.repos }}" | tr ',' ' ')
+5
View File
@@ -4,8 +4,13 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Maintenance
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
# INGROUP: mokoplatform.Maintenance # INGROUP: mokoplatform.Maintenance
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
# PATH: /.gitea/workflows/sync-wikis.yml # PATH: /.gitea/workflows/sync-wikis.yml
# BRIEF: Daily sync of all Gitea wikis to consolidated GitHub wiki repo # BRIEF: Daily sync of all Gitea wikis to consolidated GitHub wiki repo
+24
View File
@@ -4,10 +4,17 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Release
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogitea/workflows/auto-bump.yml
# VERSION: 09.23.00
=======
# INGROUP: mokocli.Release # INGROUP: mokocli.Release
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogitea/workflows/auto-bump.yml # PATH: /.mokogitea/workflows/auto-bump.yml
# VERSION: 09.02.00 # VERSION: 09.02.00
>>>>>>> main
# BRIEF: Auto patch-bump version on every push to dev (skips merge commits) # BRIEF: Auto patch-bump version on every push to dev (skips merge commits)
name: "Universal: Auto Version Bump" name: "Universal: Auto Version Bump"
@@ -43,6 +50,22 @@ jobs:
token: ${{ secrets.MOKOGITEA_TOKEN }} token: ${{ secrets.MOKOGITEA_TOKEN }}
fetch-depth: 1 fetch-depth: 1
<<<<<<< HEAD
- name: Setup MokoCLI tools
run: |
# Check both new (mokocli) and legacy (mokoplatform) install paths
if [ -f "/opt/mokocli/cli/version_bump.php" ] && [ -f "/opt/mokocli/vendor/autoload.php" ]; then
echo "Using pre-installed /opt/mokocli"
echo "MOKO_CLI=/opt/mokocli/cli" >> "$GITHUB_ENV"
elif [ -f "/opt/mokoplatform/cli/version_bump.php" ] && [ -f "/opt/mokoplatform/vendor/autoload.php" ]; then
echo "Using pre-installed /opt/mokoplatform (legacy path)"
echo "MOKO_CLI=/opt/mokoplatform/cli" >> "$GITHUB_ENV"
else
if ! command -v composer &> /dev/null; then
sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer >/dev/null 2>&1
fi
rm -rf /tmp/mokocli
=======
- name: Setup mokocli tools - name: Setup mokocli tools
run: | run: |
if ! command -v composer &> /dev/null; then if ! command -v composer &> /dev/null; then
@@ -51,6 +74,7 @@ jobs:
if [ -d "/opt/mokocli/cli" ]; then if [ -d "/opt/mokocli/cli" ]; then
echo "MOKO_CLI=/opt/mokocli/cli" >> "$GITHUB_ENV" echo "MOKO_CLI=/opt/mokocli/cli" >> "$GITHUB_ENV"
else else
>>>>>>> main
git clone --depth 1 --branch main --quiet \ git clone --depth 1 --branch main --quiet \
"https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/MokoConsulting/mokocli.git" \ "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/MokoConsulting/mokocli.git" \
/tmp/mokocli /tmp/mokocli
+72
View File
@@ -4,8 +4,13 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Release
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
# INGROUP: mokocli.Release # INGROUP: mokocli.Release
# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/mokocli # REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/mokocli
>>>>>>> main
# PATH: /templates/workflows/universal/auto-release.yml.template # PATH: /templates/workflows/universal/auto-release.yml.template
# VERSION: 05.00.00 # VERSION: 05.00.00
# BRIEF: Universal build & release detects platform from manifest.xml # BRIEF: Universal build & release detects platform from manifest.xml
@@ -66,16 +71,32 @@ jobs:
token: ${{ secrets.MOKOGITEA_TOKEN }} token: ${{ secrets.MOKOGITEA_TOKEN }}
fetch-depth: 1 fetch-depth: 1
<<<<<<< HEAD
- name: Setup MokoCLI tools
=======
- name: Setup mokocli tools - name: Setup mokocli tools
>>>>>>> main
env: env:
MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }}
MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting
run: | run: |
<<<<<<< HEAD
# Check both new (mokocli) and legacy (mokoplatform) install paths
if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then
echo "Using pre-installed /opt/mokocli"
echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV
elif [ -f /opt/mokoplatform/cli/version_bump.php ] && [ -f /opt/mokoplatform/vendor/autoload.php ]; then
echo "Using pre-installed /opt/mokoplatform (legacy path)"
echo MOKO_CLI=/opt/mokoplatform/cli >> $GITHUB_ENV
else
echo "Falling back to fresh clone"
=======
if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then
echo Using pre-installed /opt/mokocli echo Using pre-installed /opt/mokocli
echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV
else else
echo Falling back to fresh clone echo Falling back to fresh clone
>>>>>>> main
if ! command -v composer > /dev/null 2>&1; then if ! command -v composer > /dev/null 2>&1; then
sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1
fi fi
@@ -109,6 +130,8 @@ jobs:
--path . --stability rc --bump minor --branch rc \ --path . --stability rc --bump minor --branch rc \
--token "${{ secrets.MOKOGITEA_TOKEN }}" --token "${{ secrets.MOKOGITEA_TOKEN }}"
<<<<<<< HEAD
=======
- name: Update RC release notes from CHANGELOG.md - name: Update RC release notes from CHANGELOG.md
run: | run: |
API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}"
@@ -143,6 +166,7 @@ jobs:
echo "RC release notes updated from CHANGELOG.md" echo "RC release notes updated from CHANGELOG.md"
fi fi
>>>>>>> main
- name: Summary - name: Summary
if: always() if: always()
run: | run: |
@@ -183,17 +207,33 @@ jobs:
fi fi
echo "No conflict markers found" echo "No conflict markers found"
<<<<<<< HEAD
- name: Setup MokoCLI tools
=======
- name: Setup mokocli tools - name: Setup mokocli tools
>>>>>>> main
env: env:
MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }}
MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting
COMPOSER_AUTH: '{"github-oauth":{"github.com":"${{ secrets.GH_MIRROR_TOKEN }}"}}' COMPOSER_AUTH: '{"github-oauth":{"github.com":"${{ secrets.GH_MIRROR_TOKEN }}"}}'
run: | run: |
<<<<<<< HEAD
# Check both new (mokocli) and legacy (mokoplatform) install paths
if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then
echo "Using pre-installed /opt/mokocli"
echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV
elif [ -f /opt/mokoplatform/cli/version_bump.php ] && [ -f /opt/mokoplatform/vendor/autoload.php ]; then
echo "Using pre-installed /opt/mokoplatform (legacy path)"
echo MOKO_CLI=/opt/mokoplatform/cli >> $GITHUB_ENV
else
echo "Falling back to fresh clone"
=======
if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then
echo Using pre-installed /opt/mokocli echo Using pre-installed /opt/mokocli
echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV
else else
echo Falling back to fresh clone echo Falling back to fresh clone
>>>>>>> main
if ! command -v composer > /dev/null 2>&1; then if ! command -v composer > /dev/null 2>&1; then
sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1
fi fi
@@ -205,6 +245,30 @@ jobs:
echo MOKO_CLI=/tmp/mokocli/cli >> $GITHUB_ENV echo MOKO_CLI=/tmp/mokocli/cli >> $GITHUB_ENV
fi fi
<<<<<<< HEAD
- name: "Publish stable release"
run: |
php ${MOKO_CLI}/release_publish.php \
--path . --stability stable --bump minor --branch main \
--token "${{ secrets.MOKOGITEA_TOKEN }}"
- name: Update release notes from CHANGELOG.md
run: |
API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}"
# Extract [Unreleased] section from changelog
if [ -f "CHANGELOG.md" ]; then
NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md)
[ -z "$NOTES" ] && NOTES="Stable release"
else
NOTES="Stable release"
fi
# Update release body via API
RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \
"${API_BASE}/releases/tags/stable" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true)
=======
- name: "Detect platform" - name: "Detect platform"
id: platform id: platform
run: | run: |
@@ -272,6 +336,7 @@ jobs:
[ -z "$NOTES" ] && NOTES="Stable release" [ -z "$NOTES" ] && NOTES="Stable release"
# Update release body via API # Update release body via API
>>>>>>> main
if [ -n "$RELEASE_ID" ]; then if [ -n "$RELEASE_ID" ]; then
python3 -c " python3 -c "
import json, urllib.request import json, urllib.request
@@ -281,7 +346,11 @@ jobs:
'${API_BASE}/releases/${RELEASE_ID}', '${API_BASE}/releases/${RELEASE_ID}',
data=payload, method='PATCH', data=payload, method='PATCH',
headers={ headers={
<<<<<<< HEAD
'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}',
=======
'Authorization': 'token ${TOKEN}', 'Authorization': 'token ${TOKEN}',
>>>>>>> main
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}) })
urllib.request.urlopen(req) urllib.request.urlopen(req)
@@ -289,6 +358,8 @@ jobs:
echo "Release notes updated from CHANGELOG.md" echo "Release notes updated from CHANGELOG.md"
fi fi
<<<<<<< HEAD
=======
# Promote [Unreleased] → [version] in CHANGELOG.md and reset # Promote [Unreleased] → [version] in CHANGELOG.md and reset
if [ -n "$VERSION" ] && [ -f "CHANGELOG.md" ]; then if [ -n "$VERSION" ] && [ -f "CHANGELOG.md" ]; then
DATE=$(date +%Y-%m-%d) DATE=$(date +%Y-%m-%d)
@@ -307,6 +378,7 @@ jobs:
echo "Changelog promoted: [Unreleased] → [${VERSION}]" echo "Changelog promoted: [Unreleased] → [${VERSION}]"
fi fi
>>>>>>> main
# -- STEP 9: Mirror to GitHub (stable only) -------------------------------- # -- STEP 9: Mirror to GitHub (stable only) --------------------------------
- name: "Step 9: Mirror release to GitHub" - name: "Step 9: Mirror release to GitHub"
if: >- if: >-
+21 -1
View File
@@ -4,18 +4,30 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.CI
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogitea/workflows/ci-platform.yml
# VERSION: 09.23.00
# BRIEF: MokoCLI CI — the standards engine validates itself
=======
# INGROUP: mokoplatform.CI # INGROUP: mokoplatform.CI
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
# PATH: /.mokogitea/workflows/ci-platform.yml # PATH: /.mokogitea/workflows/ci-platform.yml
# VERSION: 09.23.00 # VERSION: 09.23.00
# BRIEF: mokoplatform CI — the standards engine validates itself # BRIEF: mokoplatform CI — the standards engine validates itself
>>>>>>> main
# #
# +========================================================================+ # +========================================================================+
# | MOKO-PLATFORM CI | # | MOKOCLI CI |
# +========================================================================+ # +========================================================================+
# | | # | |
# | This is NOT a generic CI workflow. This is the self-validation | # | This is NOT a generic CI workflow. This is the self-validation |
<<<<<<< HEAD
# | pipeline for the central MokoCLI enterprise engine. |
=======
# | pipeline for the central mokoplatform enterprise engine. | # | pipeline for the central mokoplatform enterprise engine. |
>>>>>>> main
# | | # | |
# | It dogfoods every tool the platform ships to governed repos: | # | It dogfoods every tool the platform ships to governed repos: |
# | | # | |
@@ -29,7 +41,11 @@
# | | # | |
# +========================================================================+ # +========================================================================+
<<<<<<< HEAD
name: "Platform: MokoCLI CI"
=======
name: "Platform: mokoplatform CI" name: "Platform: mokoplatform CI"
>>>>>>> main
on: on:
push: push:
@@ -421,7 +437,11 @@ jobs:
- name: Check gate results - name: Check gate results
run: | run: |
{ {
<<<<<<< HEAD
echo "# MokoCLI CI"
=======
echo "# mokoplatform CI" echo "# mokoplatform CI"
>>>>>>> main
echo "" echo ""
echo "| Gate | Job | Status |" echo "| Gate | Job | Status |"
echo "|---|---|---|" echo "|---|---|---|"
+7
View File
@@ -4,10 +4,17 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Maintenance
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogitea/workflows/cleanup.yml
# VERSION: 09.23.00
=======
# INGROUP: MokoStandards.Maintenance # INGROUP: MokoStandards.Maintenance
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards # REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards
# PATH: /.gitea/workflows/cleanup.yml # PATH: /.gitea/workflows/cleanup.yml
# VERSION: 01.00.00 # VERSION: 01.00.00
>>>>>>> main
# BRIEF: Scheduled cleanup — delete merged branches and old workflow runs # BRIEF: Scheduled cleanup — delete merged branches and old workflow runs
name: "Universal: Repository Cleanup" name: "Universal: Repository Cleanup"
+5
View File
@@ -4,8 +4,13 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Security
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
# INGROUP: MokoStandards.Security # INGROUP: MokoStandards.Security
# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards-API # REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/MokoStandards-API
>>>>>>> main
# PATH: /templates/workflows/gitleaks.yml.template # PATH: /templates/workflows/gitleaks.yml.template
# VERSION: 01.00.00 # VERSION: 01.00.00
# BRIEF: Secret scanning — detect leaked credentials, API keys, and tokens # BRIEF: Secret scanning — detect leaked credentials, API keys, and tokens
+6 -1
View File
@@ -4,8 +4,13 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Automation
# VERSION: 09.25.05
=======
# INGROUP: mokocli.Automation # INGROUP: mokocli.Automation
# VERSION: 09.32.01 # VERSION: 09.32.00
>>>>>>> main
# BRIEF: Auto-create feature branch when an issue is opened # BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch" name: "Universal: Issue Branch"
+7
View File
@@ -4,10 +4,17 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Notifications
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogitea/workflows/notify.yml
# VERSION: 09.23.00
=======
# INGROUP: MokoStandards.Notifications # INGROUP: MokoStandards.Notifications
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards # REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards
# PATH: /.gitea/workflows/notify.yml # PATH: /.gitea/workflows/notify.yml
# VERSION: 01.00.00 # VERSION: 01.00.00
>>>>>>> main
# BRIEF: Push notifications via ntfy on release success or workflow failure # BRIEF: Push notifications via ntfy on release success or workflow failure
name: "Universal: Notifications" name: "Universal: Notifications"
+2 -2
View File
@@ -4,8 +4,8 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.CI # INGROUP: MokoCLI.CI
# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /templates/workflows/universal/pr-check.yml.template # PATH: /templates/workflows/universal/pr-check.yml.template
# VERSION: 09.23.00 # VERSION: 09.23.00
# BRIEF: PR gate — branch policy + code validation before merge # BRIEF: PR gate — branch policy + code validation before merge
+20
View File
@@ -4,7 +4,11 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Release
=======
# INGROUP: mokocli.Release # INGROUP: mokocli.Release
>>>>>>> main
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /templates/workflows/universal/pre-release.yml.template # PATH: /templates/workflows/universal/pre-release.yml.template
# VERSION: 05.01.00 # VERSION: 05.01.00
@@ -60,17 +64,33 @@ jobs:
token: ${{ secrets.MOKOGITEA_TOKEN }} token: ${{ secrets.MOKOGITEA_TOKEN }}
ref: ${{ github.ref_name }} ref: ${{ github.ref_name }}
<<<<<<< HEAD
- name: Setup MokoCLI tools
=======
- name: Setup mokocli tools - name: Setup mokocli tools
>>>>>>> main
env: env:
MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }}
MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting
run: | run: |
<<<<<<< HEAD
# Check both new (mokocli) and legacy (mokoplatform) install paths
if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/cli/manifest_element.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then
echo "Using pre-installed /opt/mokocli"
echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV
elif [ -f /opt/mokoplatform/cli/version_bump.php ] && [ -f /opt/mokoplatform/vendor/autoload.php ]; then
echo "Using pre-installed /opt/mokoplatform (legacy path)"
echo MOKO_CLI=/opt/mokoplatform/cli >> $GITHUB_ENV
else
echo "Falling back to fresh clone"
=======
# Use pre-installed /opt/mokocli if available (updated by cron every 6h) # Use pre-installed /opt/mokocli if available (updated by cron every 6h)
if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/cli/manifest_element.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then if [ -f /opt/mokocli/cli/version_bump.php ] && [ -f /opt/mokocli/cli/manifest_element.php ] && [ -f /opt/mokocli/vendor/autoload.php ]; then
echo Using pre-installed /opt/mokocli echo Using pre-installed /opt/mokocli
echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV echo MOKO_CLI=/opt/mokocli/cli >> $GITHUB_ENV
else else
echo Falling back to fresh clone echo Falling back to fresh clone
>>>>>>> main
if ! command -v composer > /dev/null 2>&1; then if ! command -v composer > /dev/null 2>&1; then
sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1
fi fi
File diff suppressed because it is too large Load Diff
+7
View File
@@ -4,10 +4,17 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Gitea.Workflow # DEFGROUP: Gitea.Workflow
<<<<<<< HEAD
# INGROUP: MokoCLI.Security
# REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /.mokogitea/workflows/security-audit.yml
# VERSION: 09.23.00
=======
# INGROUP: MokoStandards.Security # INGROUP: MokoStandards.Security
# REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards # REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoStandards
# PATH: /.gitea/workflows/security-audit.yml # PATH: /.gitea/workflows/security-audit.yml
# VERSION: 01.00.00 # VERSION: 01.00.00
>>>>>>> main
# BRIEF: Dependency vulnerability scanning for composer and npm packages # BRIEF: Dependency vulnerability scanning for composer and npm packages
name: "Universal: Security Audit" name: "Universal: Security Audit"
+4
View File
@@ -1,7 +1,11 @@
{ {
"metadata": { "metadata": {
"generated_at": "2026-03-10T19:51:42.238134Z", "generated_at": "2026-03-10T19:51:42.238134Z",
<<<<<<< HEAD
"repository": "MokoConsulting/mokocli",
=======
"repository": "MokoConsulting/mokoplatform", "repository": "MokoConsulting/mokoplatform",
>>>>>>> main
"version": "1.0.0" "version": "1.0.0"
}, },
"scripts": [ "scripts": [
+6
View File
@@ -2,9 +2,15 @@
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech> Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
FILE INFORMATION FILE INFORMATION
<<<<<<< HEAD
DEFGROUP: MokoStandards.Root
INGROUP: MokoStandards
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
DEFGROUP: MokoCli.Root DEFGROUP: MokoCli.Root
INGROUP: MokoCli INGROUP: MokoCli
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
PATH: /CHANGELOG.md PATH: /CHANGELOG.md
BRIEF: Release changelog BRIEF: Release changelog
--> -->
+10
View File
@@ -2,16 +2,26 @@
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech> Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
FILE INFORMATION FILE INFORMATION
<<<<<<< HEAD
DEFGROUP: MokoCLI.Root
INGROUP: MokoCLI
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
DEFGROUP: MokoPlatform.Root DEFGROUP: MokoPlatform.Root
INGROUP: MokoPlatform INGROUP: MokoPlatform
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
PATH: /PLUGIN_SCRIPTS.md PATH: /PLUGIN_SCRIPTS.md
BRIEF: Plugin system CLI documentation BRIEF: Plugin system CLI documentation
--> -->
# Plugin System CLI Scripts # Plugin System CLI Scripts
<<<<<<< HEAD
Command-line scripts for validating, health checking, and managing projects using the MokoCLI plugin system.
=======
Command-line scripts for validating, health checking, and managing projects using the mokoplatform plugin system. Command-line scripts for validating, health checking, and managing projects using the mokoplatform plugin system.
>>>>>>> main
## Available Scripts ## Available Scripts
+17 -1
View File
@@ -2,11 +2,26 @@
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech> Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
FILE INFORMATION FILE INFORMATION
<<<<<<< HEAD
DEFGROUP: MokoCLI.Root
INGROUP: MokoCLI
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
PATH: /README.md
VERSION: 09.25.05
BRIEF: Project overview and documentation
-->
# MokoCLI Enterprise API
![Version](https://img.shields.io/badge/version-09.01.00-blue) ![PHP](https://img.shields.io/badge/PHP-8.1%2B-777BB4) ![License](https://img.shields.io/badge/license-GPL--3.0--or--later-green)
PHP implementation of MokoCLI — enterprise standards, automation framework, workflow templates, and bulk sync tooling.
=======
DEFGROUP: MokoPlatform.Root DEFGROUP: MokoPlatform.Root
INGROUP: MokoPlatform INGROUP: MokoPlatform
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
PATH: /README.md PATH: /README.md
VERSION: 09.32.01 VERSION: 09.32.00
BRIEF: Project overview and documentation BRIEF: Project overview and documentation
--> -->
@@ -15,6 +30,7 @@ BRIEF: Project overview and documentation
![Version](https://img.shields.io/badge/version-09.01.00-blue) ![PHP](https://img.shields.io/badge/PHP-8.1%2B-777BB4) ![License](https://img.shields.io/badge/license-GPL--3.0--or--later-green) ![Version](https://img.shields.io/badge/version-09.01.00-blue) ![PHP](https://img.shields.io/badge/PHP-8.1%2B-777BB4) ![License](https://img.shields.io/badge/license-GPL--3.0--or--later-green)
PHP implementation of mokoplatform — enterprise standards, automation framework, workflow templates, and bulk sync tooling. PHP implementation of mokoplatform — enterprise standards, automation framework, workflow templates, and bulk sync tooling.
>>>>>>> main
> **Primary platform**: [Gitea — git.mokoconsulting.tech](https://git.mokoconsulting.tech/MokoConsulting/MokoCli-API) > **Primary platform**: [Gitea — git.mokoconsulting.tech](https://git.mokoconsulting.tech/MokoConsulting/MokoCli-API)
> **Backup mirror**: [GitHub](https://github.com/MokoConsulting/MokoCli-API) *(read-only mirror)* > **Backup mirror**: [GitHub](https://github.com/MokoConsulting/MokoCli-API) *(read-only mirror)*
+6
View File
@@ -2,9 +2,15 @@
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech> Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
FILE INFORMATION FILE INFORMATION
<<<<<<< HEAD
DEFGROUP: MokoCLI.Index
INGROUP: MokoCLI.Analysis
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
DEFGROUP: MokoPlatform.Index DEFGROUP: MokoPlatform.Index
INGROUP: MokoPlatform.Analysis INGROUP: MokoPlatform.Analysis
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
PATH: /analysis/index.md PATH: /analysis/index.md
BRIEF: Analysis directory index BRIEF: Analysis directory index
--> -->
+14
View File
@@ -9,9 +9,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI.Scripts
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform.Scripts * INGROUP: MokoPlatform.Scripts
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/bulk_joomla_template.php * PATH: /automation/bulk_joomla_template.php
* BRIEF: Bulk scaffold and sync Joomla template repositories * BRIEF: Bulk scaffold and sync Joomla template repositories
* *
@@ -42,7 +48,11 @@ use MokoCli\{
* *
* Provides three operations for Joomla template projects: * Provides three operations for Joomla template projects:
* --scaffold: Create a new template repository with the full directory structure * --scaffold: Create a new template repository with the full directory structure
<<<<<<< HEAD
* --sync: Push MokoCLI files to existing template repositories
=======
* --sync: Push mokoplatform files to existing template repositories * --sync: Push mokoplatform files to existing template repositories
>>>>>>> main
* --list: List all repositories tagged as joomla-template * --list: List all repositories tagged as joomla-template
* *
* Works with both GitHub and Gitea via the PlatformAdapterFactory. * Works with both GitHub and Gitea via the PlatformAdapterFactory.
@@ -318,7 +328,11 @@ class BulkJoomlaTemplate extends CliFramework
$name, $name,
$path, $path,
$content, $content,
<<<<<<< HEAD
"chore: update {$path} from MokoCLI",
=======
"chore: update {$path} from mokoplatform", "chore: update {$path} from mokoplatform",
>>>>>>> main
$existingSha, $existingSha,
$branch $branch
); );
+138
View File
@@ -9,9 +9,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI.Scripts
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform.Scripts * INGROUP: MokoPlatform.Scripts
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/bulk_sync.php * PATH: /automation/bulk_sync.php
* BRIEF: Enterprise-grade bulk repository synchronization * BRIEF: Enterprise-grade bulk repository synchronization
*/ */
@@ -42,7 +48,11 @@ use MokoCli\{
/** /**
* Bulk Repository Synchronization Tool * Bulk Repository Synchronization Tool
* *
<<<<<<< HEAD
* Synchronizes MokoCLI files across multiple repositories using
=======
* Synchronizes mokoplatform files across multiple repositories using * Synchronizes mokoplatform files across multiple repositories using
>>>>>>> main
* the Enterprise library for robust, audited operations. * the Enterprise library for robust, audited operations.
*/ */
class BulkSync extends CliFramework class BulkSync extends CliFramework
@@ -95,7 +105,11 @@ class BulkSync extends CliFramework
*/ */
protected function run(): int protected function run(): int
{ {
<<<<<<< HEAD
$this->log("🚀 MokoCLI Bulk Synchronization v" . self::VERSION, 'INFO');
=======
$this->log("🚀 mokoplatform Bulk Synchronization v" . self::VERSION, 'INFO'); $this->log("🚀 mokoplatform Bulk Synchronization v" . self::VERSION, 'INFO');
>>>>>>> main
// Initialize enterprise components // Initialize enterprise components
if (!$this->initializeComponents()) { if (!$this->initializeComponents()) {
@@ -180,7 +194,11 @@ class BulkSync extends CliFramework
$results['health'] = $this->runHealthChecksAll($org, $repositories); $results['health'] = $this->runHealthChecksAll($org, $repositories);
} }
<<<<<<< HEAD
// Create/update tracking issue in MokoCLI
=======
// Create/update tracking issue in mokoplatform // Create/update tracking issue in mokoplatform
>>>>>>> main
$this->createSyncIssue($org, $results); $this->createSyncIssue($org, $results);
// Create/update a failure issue when any repos failed // Create/update a failure issue when any repos failed
@@ -244,7 +262,11 @@ class BulkSync extends CliFramework
* Filter repositories based on include/exclude lists * Filter repositories based on include/exclude lists
*/ */
/** Repositories that are permanently excluded from bulk sync. */ /** Repositories that are permanently excluded from bulk sync. */
<<<<<<< HEAD
private const ALWAYS_EXCLUDE = ['MokoCLI', '.github-private'];
=======
private const ALWAYS_EXCLUDE = ['mokoplatform', '.github-private']; private const ALWAYS_EXCLUDE = ['mokoplatform', '.github-private'];
>>>>>>> main
private function filterRepositories(array $repositories, array $include, array $exclude): array private function filterRepositories(array $repositories, array $include, array $exclude): array
{ {
@@ -426,7 +448,11 @@ class BulkSync extends CliFramework
$this->log("", 'ERROR'); $this->log("", 'ERROR');
$this->log("Required Implementation:", 'ERROR'); $this->log("Required Implementation:", 'ERROR');
$this->log(" 1. Clone/fetch target repository", 'ERROR'); $this->log(" 1. Clone/fetch target repository", 'ERROR');
<<<<<<< HEAD
$this->log(" 2. Apply file updates based on MokoCLI configuration", 'ERROR');
=======
$this->log(" 2. Apply file updates based on mokoplatform configuration", 'ERROR'); $this->log(" 2. Apply file updates based on mokoplatform configuration", 'ERROR');
>>>>>>> main
$this->log(" 3. Create pull request with changes", 'ERROR'); $this->log(" 3. Create pull request with changes", 'ERROR');
$this->log(" 4. Handle merge conflicts and validation", 'ERROR'); $this->log(" 4. Handle merge conflicts and validation", 'ERROR');
$this->log("", 'ERROR'); $this->log("", 'ERROR');
@@ -837,7 +863,11 @@ class BulkSync extends CliFramework
} }
/** /**
<<<<<<< HEAD
* Ensure all standard MokoCLI labels exist on a target repository.
=======
* Ensure all standard mokoplatform labels exist on a target repository. * Ensure all standard mokoplatform labels exist on a target repository.
>>>>>>> main
* *
* Fetches existing labels first (GET) and only POSTs the ones that are * Fetches existing labels first (GET) and only POSTs the ones that are
* missing. This avoids the 422 "already exists" responses that would * missing. This avoids the 422 "already exists" responses that would
@@ -872,7 +902,11 @@ class BulkSync extends CliFramework
// Workflow / Process // Workflow / Process
['automation', '8B4513', 'Automated processes or scripts'], ['automation', '8B4513', 'Automated processes or scripts'],
<<<<<<< HEAD
['MokoCLI', 'B60205', 'MokoCLI compliance'],
=======
['mokoplatform', 'B60205', 'mokoplatform compliance'], ['mokoplatform', 'B60205', 'mokoplatform compliance'],
>>>>>>> main
['needs-review', 'FBCA04', 'Awaiting code review'], ['needs-review', 'FBCA04', 'Awaiting code review'],
['work-in-progress', 'D93F0B', 'Work in progress, not ready for merge'], ['work-in-progress', 'D93F0B', 'Work in progress, not ready for merge'],
['breaking-change', 'D73A4A', 'Breaking API or functionality change'], ['breaking-change', 'D73A4A', 'Breaking API or functionality change'],
@@ -912,8 +946,13 @@ class BulkSync extends CliFramework
['health: poor', 'FF6B6B', 'Health score below 50'], ['health: poor', 'FF6B6B', 'Health score below 50'],
// Sync / Automation (used by bulk_sync, scan_drift, check_repo_health) // Sync / Automation (used by bulk_sync, scan_drift, check_repo_health)
<<<<<<< HEAD
['standards-update', 'B60205', 'MokoCLI sync update'],
['standards-drift', 'FBCA04', 'Repository drifted from MokoCLI'],
=======
['standards-update', 'B60205', 'mokoplatform sync update'], ['standards-update', 'B60205', 'mokoplatform sync update'],
['standards-drift', 'FBCA04', 'Repository drifted from mokoplatform'], ['standards-drift', 'FBCA04', 'Repository drifted from mokoplatform'],
>>>>>>> main
['sync-report', '0075CA', 'Bulk sync run report'], ['sync-report', '0075CA', 'Bulk sync run report'],
['sync-failure', 'D73A4A', 'Bulk sync failure requiring attention'], ['sync-failure', 'D73A4A', 'Bulk sync failure requiring attention'],
['push-failure', 'D73A4A', 'File push failure requiring attention'], ['push-failure', 'D73A4A', 'File push failure requiring attention'],
@@ -925,10 +964,17 @@ class BulkSync extends CliFramework
['type: version', '0E8A16', 'Version-related change'], ['type: version', '0E8A16', 'Version-related change'],
]; ];
<<<<<<< HEAD
// Quick check: if the repo already has the 'MokoCLI' label, it was
// provisioned previously — skip the expensive full label provisioning.
try {
$probe = $this->api->get("/repos/{$org}/{$repo}/labels/MokoCLI");
=======
// Quick check: if the repo already has the 'mokoplatform' label, it was // Quick check: if the repo already has the 'mokoplatform' label, it was
// provisioned previously — skip the expensive full label provisioning. // provisioned previously — skip the expensive full label provisioning.
try { try {
$probe = $this->api->get("/repos/{$org}/{$repo}/labels/mokoplatform"); $probe = $this->api->get("/repos/{$org}/{$repo}/labels/mokoplatform");
>>>>>>> main
if (!empty($probe['name'])) { if (!empty($probe['name'])) {
return; // already provisioned return; // already provisioned
} }
@@ -1024,7 +1070,11 @@ class BulkSync extends CliFramework
*/ */
private function updateOpenBranches(string $org, string $repo): void private function updateOpenBranches(string $org, string $repo): void
{ {
<<<<<<< HEAD
$syncBranchPrefix = 'chore/sync-MokoCLI-';
=======
$syncBranchPrefix = 'chore/sync-mokoplatform-'; $syncBranchPrefix = 'chore/sync-mokoplatform-';
>>>>>>> main
try { try {
$defaultBranch = 'main'; $defaultBranch = 'main';
@@ -1055,7 +1105,11 @@ class BulkSync extends CliFramework
$this->api->post("/repos/{$org}/{$repo}/merges", [ $this->api->post("/repos/{$org}/{$repo}/merges", [
'base' => $branch, 'base' => $branch,
'head' => $defaultBranch, 'head' => $defaultBranch,
<<<<<<< HEAD
'commit_message' => "chore: merge {$defaultBranch} into {$branch} (MokoCLI sync)",
=======
'commit_message' => "chore: merge {$defaultBranch} into {$branch} (mokoplatform sync)", 'commit_message' => "chore: merge {$defaultBranch} into {$branch} (mokoplatform sync)",
>>>>>>> main
]); ]);
$this->log(" 🔀 Merged {$defaultBranch}{$branch} (PR #{$prNum})", 'INFO'); $this->log(" 🔀 Merged {$defaultBranch}{$branch} (PR #{$prNum})", 'INFO');
} catch (\Exception $e) { } catch (\Exception $e) {
@@ -1076,7 +1130,11 @@ class BulkSync extends CliFramework
/** /**
* Records which sync run touched the repo, the PR number, and the * Records which sync run touched the repo, the PR number, and the
<<<<<<< HEAD
* MokoCLI version that was applied — giving each repo a clear audit
=======
* mokoplatform version that was applied — giving each repo a clear audit * mokoplatform version that was applied — giving each repo a clear audit
>>>>>>> main
* trail of what was changed and why. * trail of what was changed and why.
*/ */
/** /**
@@ -1119,6 +1177,18 @@ class BulkSync extends CliFramework
$minor = self::VERSION_MINOR; $minor = self::VERSION_MINOR;
$force = isset($this->options['force']) ? ' *(--force)*' : ''; $force = isset($this->options['force']) ? ' *(--force)*' : '';
$prLink = $this->adapter->getPullRequestWebUrl($org, $repo, $prNumber); $prLink = $this->adapter->getPullRequestWebUrl($org, $repo, $prNumber);
<<<<<<< HEAD
$source = $this->adapter->getRepoWebUrl($org, 'MokoCLI');
$branchName = 'chore/sync-MokoCLI-v' . $minor;
$branchLink = $this->adapter->getBranchWebUrl($org, $repo, $branchName);
$title = "chore: MokoCLI v{$minor} sync tracking";
$body = <<<MD
## MokoCLI Sync Applied
A MokoCLI bulk sync run has updated files in this repository.
=======
$source = $this->adapter->getRepoWebUrl($org, 'mokoplatform'); $source = $this->adapter->getRepoWebUrl($org, 'mokoplatform');
$branchName = 'chore/sync-mokoplatform-v' . $minor; $branchName = 'chore/sync-mokoplatform-v' . $minor;
$branchLink = $this->adapter->getBranchWebUrl($org, $repo, $branchName); $branchLink = $this->adapter->getBranchWebUrl($org, $repo, $branchName);
@@ -1129,6 +1199,7 @@ class BulkSync extends CliFramework
## mokoplatform Sync Applied ## mokoplatform Sync Applied
A mokoplatform bulk sync run has updated files in this repository. A mokoplatform bulk sync run has updated files in this repository.
>>>>>>> main
| Field | Value | | Field | Value |
|-------|-------| |-------|-------|
@@ -1144,13 +1215,21 @@ class BulkSync extends CliFramework
Protected files (README, CHANGELOG, GOVERNANCE, etc.) were not overwritten. Protected files (README, CHANGELOG, GOVERNANCE, etc.) were not overwritten.
--- ---
<<<<<<< HEAD
*Updated automatically by [MokoCLI]({$source}) `bulk_sync.php`*
=======
*Updated automatically by [mokoplatform]({$source}) `bulk_sync.php`* *Updated automatically by [mokoplatform]({$source}) `bulk_sync.php`*
>>>>>>> main
MD; MD;
// Dedent heredoc // Dedent heredoc
$body = preg_replace('/^ /m', '', $body); $body = preg_replace('/^ /m', '', $body);
<<<<<<< HEAD
$labelNames = ['standards-update', 'MokoCLI', 'type: chore', 'automation'];
=======
$labelNames = ['standards-update', 'mokoplatform', 'type: chore', 'automation']; $labelNames = ['standards-update', 'mokoplatform', 'type: chore', 'automation'];
>>>>>>> main
$labels = $this->resolveLabelIds($org, $repo, $labelNames); $labels = $this->resolveLabelIds($org, $repo, $labelNames);
try { try {
@@ -1213,7 +1292,11 @@ class BulkSync extends CliFramework
} }
/** /**
<<<<<<< HEAD
* Create a tracking issue in MokoCLI for this sync run.
=======
* Create a tracking issue in mokoplatform for this sync run. * Create a tracking issue in mokoplatform for this sync run.
>>>>>>> main
*/ */
private function createSyncIssue(string $org, array $results): void private function createSyncIssue(string $org, array $results): void
{ {
@@ -1232,7 +1315,11 @@ class BulkSync extends CliFramework
$issues = $results['issues'] ?? []; $issues = $results['issues'] ?? [];
// Stable title — no timestamp so repeated runs update a single issue // Stable title — no timestamp so repeated runs update a single issue
<<<<<<< HEAD
$title = "sync: MokoCLI v" . self::VERSION_MINOR . " bulk sync report";
=======
$title = "sync: mokoplatform v" . self::VERSION_MINOR . " bulk sync report"; $title = "sync: mokoplatform v" . self::VERSION_MINOR . " bulk sync report";
>>>>>>> main
$protection = $results['protection'] ?? []; $protection = $results['protection'] ?? [];
$hasProtect = !empty($protection); $hasProtect = !empty($protection);
@@ -1281,7 +1368,11 @@ class BulkSync extends CliFramework
: "|---|---|---|---|"; : "|---|---|---|---|";
$body = <<<MD $body = <<<MD
<<<<<<< HEAD
## MokoCLI Bulk Sync Report
=======
## mokoplatform Bulk Sync Report ## mokoplatform Bulk Sync Report
>>>>>>> main
**Organisation:** `{$org}` **Organisation:** `{$org}`
**Triggered:** {$now}{$force} **Triggered:** {$now}{$force}
@@ -1301,7 +1392,11 @@ class BulkSync extends CliFramework
try { try {
// Search for existing issue by label — any state so we can reopen closed ones // Search for existing issue by label — any state so we can reopen closed ones
<<<<<<< HEAD
$existing = $this->api->get("/repos/{$org}/MokoCLI/issues", [
=======
$existing = $this->api->get("/repos/{$org}/mokoplatform/issues", [ $existing = $this->api->get("/repos/{$org}/mokoplatform/issues", [
>>>>>>> main
'labels' => 'sync-report', 'labels' => 'sync-report',
'state' => 'all', 'state' => 'all',
'per_page' => 1, 'per_page' => 1,
@@ -1309,8 +1404,13 @@ class BulkSync extends CliFramework
'direction' => 'desc', 'direction' => 'desc',
]); ]);
<<<<<<< HEAD
$labelNames = ['sync-report', 'MokoCLI', 'type: chore', 'automation'];
$labels = $this->resolveLabelIds($org, 'MokoCLI', $labelNames);
=======
$labelNames = ['sync-report', 'mokoplatform', 'type: chore', 'automation']; $labelNames = ['sync-report', 'mokoplatform', 'type: chore', 'automation'];
$labels = $this->resolveLabelIds($org, 'mokoplatform', $labelNames); $labels = $this->resolveLabelIds($org, 'mokoplatform', $labelNames);
>>>>>>> main
$existing = array_values($existing); $existing = array_values($existing);
if (!empty($existing) && isset($existing[0]['number'])) { if (!empty($existing) && isset($existing[0]['number'])) {
@@ -1319,6 +1419,17 @@ class BulkSync extends CliFramework
if (($existing[0]['state'] ?? 'open') === 'closed') { if (($existing[0]['state'] ?? 'open') === 'closed') {
$patch['state'] = 'open'; $patch['state'] = 'open';
} }
<<<<<<< HEAD
$this->api->patch("/repos/{$org}/MokoCLI/issues/{$issueNumber}", $patch);
try {
$this->api->post("/repos/{$org}/MokoCLI/issues/{$issueNumber}/labels", ['labels' => $labels]);
} catch (\Exception $le) {
/* non-fatal */
}
$this->log("📋 Sync report issue updated: {$org}/MokoCLI#{$issueNumber}", 'INFO');
} else {
$issue = $this->api->post("/repos/{$org}/MokoCLI/issues", [
=======
$this->api->patch("/repos/{$org}/mokoplatform/issues/{$issueNumber}", $patch); $this->api->patch("/repos/{$org}/mokoplatform/issues/{$issueNumber}", $patch);
try { try {
$this->api->post("/repos/{$org}/mokoplatform/issues/{$issueNumber}/labels", ['labels' => $labels]); $this->api->post("/repos/{$org}/mokoplatform/issues/{$issueNumber}/labels", ['labels' => $labels]);
@@ -1328,13 +1439,18 @@ class BulkSync extends CliFramework
$this->log("📋 Sync report issue updated: {$org}/mokoplatform#{$issueNumber}", 'INFO'); $this->log("📋 Sync report issue updated: {$org}/mokoplatform#{$issueNumber}", 'INFO');
} else { } else {
$issue = $this->api->post("/repos/{$org}/mokoplatform/issues", [ $issue = $this->api->post("/repos/{$org}/mokoplatform/issues", [
>>>>>>> main
'title' => $title, 'title' => $title,
'body' => $body, 'body' => $body,
'labels' => $labels, 'labels' => $labels,
'assignees' => ['jmiller'], 'assignees' => ['jmiller'],
]); ]);
$issueNumber = $issue['number'] ?? '?'; $issueNumber = $issue['number'] ?? '?';
<<<<<<< HEAD
$this->log("📋 Sync report issue created: {$org}/MokoCLI#{$issueNumber}", 'INFO');
=======
$this->log("📋 Sync report issue created: {$org}/mokoplatform#{$issueNumber}", 'INFO'); $this->log("📋 Sync report issue created: {$org}/mokoplatform#{$issueNumber}", 'INFO');
>>>>>>> main
} }
} catch (\Exception $e) { } catch (\Exception $e) {
$this->log("⚠️ Failed to create/update sync report issue: " . $e->getMessage(), 'WARN'); $this->log("⚠️ Failed to create/update sync report issue: " . $e->getMessage(), 'WARN');
@@ -1342,7 +1458,11 @@ class BulkSync extends CliFramework
} }
/** /**
<<<<<<< HEAD
* Create or update a failure issue in MokoCLI when repos fail to sync.
=======
* Create or update a failure issue in mokoplatform when repos fail to sync. * Create or update a failure issue in mokoplatform when repos fail to sync.
>>>>>>> main
* Uses the 'sync-failure' label so it is distinct from the run-report issue. * Uses the 'sync-failure' label so it is distinct from the run-report issue.
* Reopens a closed issue rather than creating a duplicate. * Reopens a closed issue rather than creating a duplicate.
*/ */
@@ -1388,7 +1508,11 @@ class BulkSync extends CliFramework
$body = preg_replace('/^ /m', '', $body); $body = preg_replace('/^ /m', '', $body);
try { try {
<<<<<<< HEAD
$existing = $this->api->get("/repos/{$org}/MokoCLI/issues", [
=======
$existing = $this->api->get("/repos/{$org}/mokoplatform/issues", [ $existing = $this->api->get("/repos/{$org}/mokoplatform/issues", [
>>>>>>> main
'labels' => 'sync-failure', 'labels' => 'sync-failure',
'state' => 'all', 'state' => 'all',
'per_page' => 1, 'per_page' => 1,
@@ -1403,6 +1527,19 @@ class BulkSync extends CliFramework
if (($existing[0]['state'] ?? 'open') === 'closed') { if (($existing[0]['state'] ?? 'open') === 'closed') {
$patch['state'] = 'open'; $patch['state'] = 'open';
} }
<<<<<<< HEAD
$this->api->patch("/repos/{$org}/MokoCLI/issues/{$num}", $patch);
$this->log("🚨 Failure issue #{$num} updated: {$org}/MokoCLI#{$num}", 'WARN');
} else {
$issue = $this->api->post("/repos/{$org}/MokoCLI/issues", [
'title' => $title,
'body' => $body,
'labels' => $this->resolveLabelIds($org, 'MokoCLI', ['sync-failure']),
'assignees' => ['jmiller'],
]);
$num = $issue['number'] ?? '?';
$this->log("🚨 Failure issue created: {$org}/MokoCLI#{$num}", 'WARN');
=======
$this->api->patch("/repos/{$org}/mokoplatform/issues/{$num}", $patch); $this->api->patch("/repos/{$org}/mokoplatform/issues/{$num}", $patch);
$this->log("🚨 Failure issue #{$num} updated: {$org}/mokoplatform#{$num}", 'WARN'); $this->log("🚨 Failure issue #{$num} updated: {$org}/mokoplatform#{$num}", 'WARN');
} else { } else {
@@ -1414,6 +1551,7 @@ class BulkSync extends CliFramework
]); ]);
$num = $issue['number'] ?? '?'; $num = $issue['number'] ?? '?';
$this->log("🚨 Failure issue created: {$org}/mokoplatform#{$num}", 'WARN'); $this->log("🚨 Failure issue created: {$org}/mokoplatform#{$num}", 'WARN');
>>>>>>> main
} }
} catch (\Exception $e) { } catch (\Exception $e) {
$this->log("⚠️ Could not create/update failure issue: " . $e->getMessage(), 'WARN'); $this->log("⚠️ Could not create/update failure issue: " . $e->getMessage(), 'WARN');
+123 -123
View File
@@ -1,123 +1,123 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech> # Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# BRIEF: Trigger a workflow across all client-waas repos in a Gitea org # BRIEF: Trigger a workflow across all client-waas repos in a Gitea org
set -euo pipefail set -euo pipefail
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Usage # Usage
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
usage() { usage() {
cat <<EOF cat <<EOF
Usage: $(basename "$0") GITEA_URL TOKEN ORG WORKFLOW [REF] [INPUTS] Usage: $(basename "$0") GITEA_URL TOKEN ORG WORKFLOW [REF] [INPUTS]
Arguments: Arguments:
GITEA_URL Base URL of the Gitea instance (e.g. https://git.mokoconsulting.tech) GITEA_URL Base URL of the Gitea instance (e.g. https://git.mokoconsulting.tech)
TOKEN Gitea API token with repo/action permissions TOKEN Gitea API token with repo/action permissions
ORG Organisation or user that owns the repos ORG Organisation or user that owns the repos
WORKFLOW Workflow filename to trigger (e.g. dependency-audit.yml) WORKFLOW Workflow filename to trigger (e.g. dependency-audit.yml)
REF Branch ref to run against (default: main) REF Branch ref to run against (default: main)
INPUTS Optional JSON object of workflow inputs (e.g. '{"dry_run":"true"}') INPUTS Optional JSON object of workflow inputs (e.g. '{"dry_run":"true"}')
Example: Example:
$(basename "$0") https://git.mokoconsulting.tech abc123 MokoConsulting dependency-audit.yml main '{"notify":"true"}' $(basename "$0") https://git.mokoconsulting.tech abc123 MokoConsulting dependency-audit.yml main '{"notify":"true"}'
EOF EOF
exit 1 exit 1
} }
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Argument parsing # Argument parsing
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
if [ $# -lt 4 ]; then if [ $# -lt 4 ]; then
usage usage
fi fi
GITEA_URL="${1%/}" GITEA_URL="${1%/}"
TOKEN="$2" TOKEN="$2"
ORG="$3" ORG="$3"
WORKFLOW="$4" WORKFLOW="$4"
REF="${5:-main}" REF="${5:-main}"
INPUTS="${6:-{\}}" INPUTS="${6:-{\}}"
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Fetch all repos in the org, paginated # Fetch all repos in the org, paginated
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
echo "Fetching repos for org '${ORG}' on ${GITEA_URL} ..." echo "Fetching repos for org '${ORG}' on ${GITEA_URL} ..."
PAGE=1 PAGE=1
LIMIT=50 LIMIT=50
ALL_REPOS="" ALL_REPOS=""
while true; do while true; do
RESPONSE=$(curl -s \ RESPONSE=$(curl -s \
-H "Authorization: token ${TOKEN}" \ -H "Authorization: token ${TOKEN}" \
-H "Accept: application/json" \ -H "Accept: application/json" \
"${GITEA_URL}/api/v1/orgs/${ORG}/repos?page=${PAGE}&limit=${LIMIT}") "${GITEA_URL}/api/v1/orgs/${ORG}/repos?page=${PAGE}&limit=${LIMIT}")
# Break if empty array # Break if empty array
COUNT=$(echo "$RESPONSE" | jq -r 'length') COUNT=$(echo "$RESPONSE" | jq -r 'length')
if [ "$COUNT" -eq 0 ]; then if [ "$COUNT" -eq 0 ]; then
break break
fi fi
NAMES=$(echo "$RESPONSE" | jq -r '.[].name') NAMES=$(echo "$RESPONSE" | jq -r '.[].name')
ALL_REPOS="${ALL_REPOS}${NAMES}"$'\n' ALL_REPOS="${ALL_REPOS}${NAMES}"$'\n'
if [ "$COUNT" -lt "$LIMIT" ]; then if [ "$COUNT" -lt "$LIMIT" ]; then
break break
fi fi
PAGE=$((PAGE + 1)) PAGE=$((PAGE + 1))
done done
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Filter for client-waas repos # Filter for client-waas repos
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
CLIENT_REPOS=$(echo "$ALL_REPOS" | grep 'client-waas' | sort || true) CLIENT_REPOS=$(echo "$ALL_REPOS" | grep 'client-waas' | sort || true)
if [ -z "$CLIENT_REPOS" ]; then if [ -z "$CLIENT_REPOS" ]; then
echo "No client-waas repos found in org '${ORG}'." echo "No client-waas repos found in org '${ORG}'."
exit 0 exit 0
fi fi
TOTAL=$(echo "$CLIENT_REPOS" | wc -l | tr -d ' ') TOTAL=$(echo "$CLIENT_REPOS" | wc -l | tr -d ' ')
echo "Found ${TOTAL} client-waas repo(s). Triggering workflow '${WORKFLOW}' (ref: ${REF}) ..." echo "Found ${TOTAL} client-waas repo(s). Triggering workflow '${WORKFLOW}' (ref: ${REF}) ..."
echo "" echo ""
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Trigger workflow for each repo # Trigger workflow for each repo
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
SUCCESS=0 SUCCESS=0
FAIL=0 FAIL=0
while IFS= read -r REPO; do while IFS= read -r REPO; do
[ -z "$REPO" ] && continue [ -z "$REPO" ] && continue
PAYLOAD=$(jq -n --arg ref "$REF" --argjson inputs "$INPUTS" '{ref: $ref, inputs: $inputs}') PAYLOAD=$(jq -n --arg ref "$REF" --argjson inputs "$INPUTS" '{ref: $ref, inputs: $inputs}')
HTTP_CODE=$(curl -s -o /dev/null -w '%{http_code}' \ HTTP_CODE=$(curl -s -o /dev/null -w '%{http_code}' \
-X POST \ -X POST \
-H "Authorization: token ${TOKEN}" \ -H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d "$PAYLOAD" \ -d "$PAYLOAD" \
"${GITEA_URL}/api/v1/repos/${ORG}/${REPO}/actions/workflows/${WORKFLOW}/dispatches") "${GITEA_URL}/api/v1/repos/${ORG}/${REPO}/actions/workflows/${WORKFLOW}/dispatches")
if [ "$HTTP_CODE" -eq 204 ] || [ "$HTTP_CODE" -eq 201 ]; then if [ "$HTTP_CODE" -eq 204 ] || [ "$HTTP_CODE" -eq 201 ]; then
echo " [OK] ${ORG}/${REPO} (HTTP ${HTTP_CODE})" echo " [OK] ${ORG}/${REPO} (HTTP ${HTTP_CODE})"
SUCCESS=$((SUCCESS + 1)) SUCCESS=$((SUCCESS + 1))
else else
echo " [FAIL] ${ORG}/${REPO} (HTTP ${HTTP_CODE})" echo " [FAIL] ${ORG}/${REPO} (HTTP ${HTTP_CODE})"
FAIL=$((FAIL + 1)) FAIL=$((FAIL + 1))
fi fi
done <<< "$CLIENT_REPOS" done <<< "$CLIENT_REPOS"
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Summary # Summary
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
echo "" echo ""
echo "Done. Success: ${SUCCESS} | Failed: ${FAIL} | Total: ${TOTAL}" echo "Done. Success: ${SUCCESS} | Failed: ${FAIL} | Total: ${TOTAL}"
if [ "$FAIL" -gt 0 ]; then if [ "$FAIL" -gt 0 ]; then
exit 1 exit 1
fi fi
+2 -2
View File
@@ -6,8 +6,8 @@
# #
# FILE INFORMATION # FILE INFORMATION
# DEFGROUP: Automation.CI # DEFGROUP: Automation.CI
# INGROUP: moko-platform.Automation # INGROUP: MokoCLI.Automation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /automation/ci-issue-reporter.sh # PATH: /automation/ci-issue-reporter.sh
# VERSION: 09.23.00 # VERSION: 09.23.00
# BRIEF: Creates or updates a Gitea issue when a CI gate fails. # BRIEF: Creates or updates a Gitea issue when a CI gate fails.
+14
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/enrich_manifest_xml.php * PATH: /automation/enrich_manifest_xml.php
* BRIEF: Enrich XML manifests with repo-specific build and deploy details * BRIEF: Enrich XML manifests with repo-specific build and deploy details
* *
@@ -46,7 +52,11 @@ class EnrichManifestXmlCli extends CliFramework
$parser = new ManifestParser(); $parser = new ManifestParser();
$tmpBase = sys_get_temp_dir() . '/moko-enrich-' . getmypid(); $tmpBase = sys_get_temp_dir() . '/moko-enrich-' . getmypid();
<<<<<<< HEAD
echo "=== MokoCLI XML Manifest Enrichment ===\n";
=======
echo "=== mokoplatform XML Manifest Enrichment ===\n"; echo "=== mokoplatform XML Manifest Enrichment ===\n";
>>>>>>> main
echo "Mode: " . ($this->dryRun ? "DRY RUN" : "LIVE") . "\n"; echo "Mode: " . ($this->dryRun ? "DRY RUN" : "LIVE") . "\n";
if (!empty($skipRepos)) { if (!empty($skipRepos)) {
echo "Skipping: " . implode(', ', $skipRepos) . "\n"; echo "Skipping: " . implode(', ', $skipRepos) . "\n";
@@ -97,7 +107,11 @@ class EnrichManifestXmlCli extends CliFramework
} }
$manifestPath = "{$workDir}/.mokogitea/manifest.xml"; $manifestPath = "{$workDir}/.mokogitea/manifest.xml";
<<<<<<< HEAD
if (!file_exists($manifestPath) || !str_contains(file_get_contents($manifestPath), '<MokoCLI')) {
=======
if (!file_exists($manifestPath) || !str_contains(file_get_contents($manifestPath), '<mokoplatform')) { if (!file_exists($manifestPath) || !str_contains(file_get_contents($manifestPath), '<mokoplatform')) {
>>>>>>> main
echo "SKIP (no XML manifest)\n"; echo "SKIP (no XML manifest)\n";
$stats['skipped']++; $stats['skipped']++;
$this->rmTree($workDir); $this->rmTree($workDir);
+14
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/enrich_mokostandards_xml.php * PATH: /automation/enrich_mokostandards_xml.php
* BRIEF: Enrich XML manifests with repo-specific build and deploy details * BRIEF: Enrich XML manifests with repo-specific build and deploy details
* *
@@ -46,7 +52,11 @@ class EnrichMokostandardsXmlCli extends CliFramework
$parser = new ManifestParser(); $parser = new ManifestParser();
$tmpBase = sys_get_temp_dir() . '/moko-enrich-' . getmypid(); $tmpBase = sys_get_temp_dir() . '/moko-enrich-' . getmypid();
<<<<<<< HEAD
echo "=== MokoCLI XML Manifest Enrichment ===\n";
=======
echo "=== mokoplatform XML Manifest Enrichment ===\n"; echo "=== mokoplatform XML Manifest Enrichment ===\n";
>>>>>>> main
echo "Mode: " . ($this->dryRun ? "DRY RUN" : "LIVE") . "\n"; echo "Mode: " . ($this->dryRun ? "DRY RUN" : "LIVE") . "\n";
if (!empty($skipRepos)) { if (!empty($skipRepos)) {
echo "Skipping: " . implode(', ', $skipRepos) . "\n"; echo "Skipping: " . implode(', ', $skipRepos) . "\n";
@@ -97,7 +107,11 @@ class EnrichMokostandardsXmlCli extends CliFramework
} }
$manifestPath = "{$workDir}/.mokogitea/manifest.xml"; $manifestPath = "{$workDir}/.mokogitea/manifest.xml";
<<<<<<< HEAD
if (!file_exists($manifestPath) || !str_contains(file_get_contents($manifestPath), '<MokoCLI')) {
=======
if (!file_exists($manifestPath) || !str_contains(file_get_contents($manifestPath), '<mokoplatform')) { if (!file_exists($manifestPath) || !str_contains(file_get_contents($manifestPath), '<mokoplatform')) {
>>>>>>> main
echo "SKIP (no XML manifest)\n"; echo "SKIP (no XML manifest)\n";
$stats['skipped']++; $stats['skipped']++;
$this->rmTree($workDir); $this->rmTree($workDir);
+6
View File
@@ -2,9 +2,15 @@
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech> Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
FILE INFORMATION FILE INFORMATION
<<<<<<< HEAD
DEFGROUP: MokoCLI.Index
INGROUP: MokoCLI.Automation
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
DEFGROUP: MokoPlatform.Index DEFGROUP: MokoPlatform.Index
INGROUP: MokoPlatform.Automation INGROUP: MokoPlatform.Automation
REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
PATH: /automation/index.md PATH: /automation/index.md
BRIEF: Automation directory index BRIEF: Automation directory index
--> -->
+14
View File
@@ -8,16 +8,26 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/migrate_to_gitea.php * PATH: /automation/migrate_to_gitea.php
* BRIEF: Migrate repositories from GitHub to self-hosted Gitea instance * BRIEF: Migrate repositories from GitHub to self-hosted Gitea instance
* *
* USAGE * USAGE
* php automation/migrate_to_gitea.php --dry-run * php automation/migrate_to_gitea.php --dry-run
* php automation/migrate_to_gitea.php --repos MokoCRM MokoDoliMods * php automation/migrate_to_gitea.php --repos MokoCRM MokoDoliMods
<<<<<<< HEAD
* php automation/migrate_to_gitea.php --exclude MokoCLI --skip-archived
=======
* php automation/migrate_to_gitea.php --exclude mokoplatform --skip-archived * php automation/migrate_to_gitea.php --exclude mokoplatform --skip-archived
>>>>>>> main
* php automation/migrate_to_gitea.php --resume * php automation/migrate_to_gitea.php --resume
*/ */
@@ -278,7 +288,11 @@ class MigrateToGitea extends CliFramework
try { try {
$this->gitea->createIssue( $this->gitea->createIssue(
$giteaOrg, $giteaOrg,
<<<<<<< HEAD
'MokoCLI',
=======
'mokoplatform', 'mokoplatform',
>>>>>>> main
'chore: GitHub → Gitea migration report — ' . count($results['migrated']) . ' repos migrated', 'chore: GitHub → Gitea migration report — ' . count($results['migrated']) . ' repos migrated',
$report, $report,
['labels' => ['automation', 'type: chore']] ['labels' => ['automation', 'type: chore']]
+70
View File
@@ -9,9 +9,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI.Scripts
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform.Scripts * INGROUP: MokoPlatform.Scripts
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/push_files.php * PATH: /automation/push_files.php
* BRIEF: Push one or more specific files to one or more remote repositories * BRIEF: Push one or more specific files to one or more remote repositories
*/ */
@@ -35,7 +41,11 @@ use MokoCli\{
/** /**
* Targeted File Push Tool * Targeted File Push Tool
* *
<<<<<<< HEAD
* Pushes one or more specific files from MokoCLI templates to one or
=======
* Pushes one or more specific files from mokoplatform templates to one or * Pushes one or more specific files from mokoplatform templates to one or
>>>>>>> main
* more remote repositories — without running a full sync. * more remote repositories — without running a full sync.
* *
* Files are specified by their destination path as they appear in the target * Files are specified by their destination path as they appear in the target
@@ -81,7 +91,11 @@ class PushFiles extends CliFramework
*/ */
protected function run(): int protected function run(): int
{ {
<<<<<<< HEAD
$this->log('📦 MokoCLI File Push v' . self::VERSION, 'INFO');
=======
$this->log('📦 mokoplatform File Push v' . self::VERSION, 'INFO'); $this->log('📦 mokoplatform File Push v' . self::VERSION, 'INFO');
>>>>>>> main
if (!$this->initializeComponents()) { if (!$this->initializeComponents()) {
return 1; return 1;
@@ -337,7 +351,11 @@ class PushFiles extends CliFramework
$prNumber = null; $prNumber = null;
if (!$direct) { if (!$direct) {
<<<<<<< HEAD
$prTitle = "chore: push " . count($entries) . " file(s) from MokoCLI";
=======
$prTitle = "chore: push " . count($entries) . " file(s) from mokoplatform"; $prTitle = "chore: push " . count($entries) . " file(s) from mokoplatform";
>>>>>>> main
$prBody = $this->buildPRBody($entries); $prBody = $this->buildPRBody($entries);
$pr = $this->adapter->createPullRequest( $pr = $this->adapter->createPullRequest(
$org, $org,
@@ -414,7 +432,11 @@ class PushFiles extends CliFramework
$message = !empty($customMessage) $message = !empty($customMessage)
? $customMessage ? $customMessage
<<<<<<< HEAD
: "chore: update {$destPath} from MokoCLI";
=======
: "chore: update {$destPath} from mokoplatform"; : "chore: update {$destPath} from mokoplatform";
>>>>>>> main
// Fetch existing file SHA (needed for updates) // Fetch existing file SHA (needed for updates)
$existingSha = null; $existingSha = null;
@@ -457,9 +479,15 @@ class PushFiles extends CliFramework
): void { ): void {
$now = gmdate('Y-m-d H:i:s') . ' UTC'; $now = gmdate('Y-m-d H:i:s') . ' UTC';
$version = self::VERSION; $version = self::VERSION;
<<<<<<< HEAD
$source = $this->adapter->getRepoWebUrl($org, 'MokoCLI');
$title = "chore: MokoCLI file push tracking";
=======
$source = $this->adapter->getRepoWebUrl($org, 'mokoplatform'); $source = $this->adapter->getRepoWebUrl($org, 'mokoplatform');
$title = "chore: mokoplatform file push tracking"; $title = "chore: mokoplatform file push tracking";
>>>>>>> main
$deliveryLine = $prNumber !== null $deliveryLine = $prNumber !== null
? "| **Pull request** | [#{$prNumber}](" . $this->adapter->getPullRequestWebUrl($org, $repo, $prNumber) . ") |" ? "| **Pull request** | [#{$prNumber}](" . $this->adapter->getPullRequestWebUrl($org, $repo, $prNumber) . ") |"
@@ -471,9 +499,15 @@ class PushFiles extends CliFramework
)); ));
$body = <<<MD $body = <<<MD
<<<<<<< HEAD
## MokoCLI File Push
One or more files were pushed to this repository from MokoCLI.
=======
## mokoplatform File Push ## mokoplatform File Push
One or more files were pushed to this repository from mokoplatform. One or more files were pushed to this repository from mokoplatform.
>>>>>>> main
| Field | Value | | Field | Value |
|-------|-------| |-------|-------|
@@ -487,12 +521,20 @@ class PushFiles extends CliFramework
{$fileRows} {$fileRows}
--- ---
<<<<<<< HEAD
*Generated automatically by [MokoCLI]({$source}) `push_files.php`*
=======
*Generated automatically by [mokoplatform]({$source}) `push_files.php`* *Generated automatically by [mokoplatform]({$source}) `push_files.php`*
>>>>>>> main
MD; MD;
$body = preg_replace('/^ /m', '', $body); $body = preg_replace('/^ /m', '', $body);
<<<<<<< HEAD
$labels = ['standards-update', 'MokoCLI', 'type: chore', 'automation'];
=======
$labels = ['standards-update', 'mokoplatform', 'type: chore', 'automation']; $labels = ['standards-update', 'mokoplatform', 'type: chore', 'automation'];
>>>>>>> main
try { try {
$existing = $this->api->get("/repos/{$org}/{$repo}/issues", [ $existing = $this->api->get("/repos/{$org}/{$repo}/issues", [
@@ -550,7 +592,11 @@ class PushFiles extends CliFramework
} }
/** /**
<<<<<<< HEAD
* Create or update a failure issue in MokoCLI when repos fail to receive files.
=======
* Create or update a failure issue in mokoplatform when repos fail to receive files. * Create or update a failure issue in mokoplatform when repos fail to receive files.
>>>>>>> main
* Uses the 'push-failure' label. Reopens a closed issue rather than creating a duplicate. * Uses the 'push-failure' label. Reopens a closed issue rather than creating a duplicate.
*/ */
private function createFailureIssue(string $org, array $results): void private function createFailureIssue(string $org, array $results): void
@@ -598,7 +644,11 @@ class PushFiles extends CliFramework
$body = preg_replace('/^ /m', '', $body); $body = preg_replace('/^ /m', '', $body);
try { try {
<<<<<<< HEAD
$existing = $this->api->get("/repos/{$org}/MokoCLI/issues", [
=======
$existing = $this->api->get("/repos/{$org}/mokoplatform/issues", [ $existing = $this->api->get("/repos/{$org}/mokoplatform/issues", [
>>>>>>> main
'labels' => 'push-failure', 'labels' => 'push-failure',
'state' => 'all', 'state' => 'all',
'per_page' => 1, 'per_page' => 1,
@@ -613,17 +663,28 @@ class PushFiles extends CliFramework
if (($existing[0]['state'] ?? 'open') === 'closed') { if (($existing[0]['state'] ?? 'open') === 'closed') {
$patch['state'] = 'open'; $patch['state'] = 'open';
} }
<<<<<<< HEAD
$this->api->patch("/repos/{$org}/MokoCLI/issues/{$num}", $patch);
$this->log("🚨 Failure issue #{$num} updated: {$org}/MokoCLI#{$num}", 'WARN');
} else {
$issue = $this->api->post("/repos/{$org}/MokoCLI/issues", [
=======
$this->api->patch("/repos/{$org}/mokoplatform/issues/{$num}", $patch); $this->api->patch("/repos/{$org}/mokoplatform/issues/{$num}", $patch);
$this->log("🚨 Failure issue #{$num} updated: {$org}/mokoplatform#{$num}", 'WARN'); $this->log("🚨 Failure issue #{$num} updated: {$org}/mokoplatform#{$num}", 'WARN');
} else { } else {
$issue = $this->api->post("/repos/{$org}/mokoplatform/issues", [ $issue = $this->api->post("/repos/{$org}/mokoplatform/issues", [
>>>>>>> main
'title' => $title, 'title' => $title,
'body' => $body, 'body' => $body,
'labels' => ['push-failure'], 'labels' => ['push-failure'],
'assignees' => ['jmiller'], 'assignees' => ['jmiller'],
]); ]);
$num = $issue['number'] ?? '?'; $num = $issue['number'] ?? '?';
<<<<<<< HEAD
$this->log("🚨 Failure issue created: {$org}/MokoCLI#{$num}", 'WARN');
=======
$this->log("🚨 Failure issue created: {$org}/mokoplatform#{$num}", 'WARN'); $this->log("🚨 Failure issue created: {$org}/mokoplatform#{$num}", 'WARN');
>>>>>>> main
} }
} catch (\Exception $e) { } catch (\Exception $e) {
$this->log("⚠️ Could not create/update failure issue: " . $e->getMessage(), 'WARN'); $this->log("⚠️ Could not create/update failure issue: " . $e->getMessage(), 'WARN');
@@ -638,14 +699,23 @@ class PushFiles extends CliFramework
private function buildPRBody(array $entries): string private function buildPRBody(array $entries): string
{ {
$now = gmdate('Y-m-d H:i:s') . ' UTC'; $now = gmdate('Y-m-d H:i:s') . ' UTC';
<<<<<<< HEAD
$lines = ["## MokoCLI File Push\n", "**Pushed:** {$now}\n", '### Files\n'];
=======
$lines = ["## mokoplatform File Push\n", "**Pushed:** {$now}\n", '### Files\n']; $lines = ["## mokoplatform File Push\n", "**Pushed:** {$now}\n", '### Files\n'];
>>>>>>> main
foreach ($entries as $entry) { foreach ($entries as $entry) {
$lines[] = "- `{$entry['destination']}`"; $lines[] = "- `{$entry['destination']}`";
} }
<<<<<<< HEAD
$sourceUrl = $this->adapter->getRepoWebUrl(self::DEFAULT_ORG, 'MokoCLI');
$lines[] = "\n---\n*Generated by [MokoCLI]({$sourceUrl}) `push_files.php`*";
=======
$sourceUrl = $this->adapter->getRepoWebUrl(self::DEFAULT_ORG, 'mokoplatform'); $sourceUrl = $this->adapter->getRepoWebUrl(self::DEFAULT_ORG, 'mokoplatform');
$lines[] = "\n---\n*Generated by [mokoplatform]({$sourceUrl}) `push_files.php`*"; $lines[] = "\n---\n*Generated by [mokoplatform]({$sourceUrl}) `push_files.php`*";
>>>>>>> main
return implode("\n", $lines); return implode("\n", $lines);
} }
+14
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/push_manifest_xml.php * PATH: /automation/push_manifest_xml.php
* BRIEF: Push XML manifests to all governed repositories * BRIEF: Push XML manifests to all governed repositories
*/ */
@@ -47,7 +53,11 @@ class PushManifestXmlCli extends CliFramework
$parser = new ManifestParser(); $parser = new ManifestParser();
$tmpBase = sys_get_temp_dir() . '/moko-manifest-push-' . getmypid(); $tmpBase = sys_get_temp_dir() . '/moko-manifest-push-' . getmypid();
<<<<<<< HEAD
echo "=== MokoCLI XML Manifest Push ===\n";
=======
echo "=== mokoplatform XML Manifest Push ===\n"; echo "=== mokoplatform XML Manifest Push ===\n";
>>>>>>> main
echo "Org: {$giteaOrg}\n"; echo "Org: {$giteaOrg}\n";
echo "Mode: " . ($this->dryRun ? "DRY RUN" : "LIVE") . "\n"; echo "Mode: " . ($this->dryRun ? "DRY RUN" : "LIVE") . "\n";
if ($repoFilter) { if ($repoFilter) {
@@ -125,7 +135,11 @@ class PushManifestXmlCli extends CliFramework
// Check if already XML and up-to-date // Check if already XML and up-to-date
$manifestPath = "{$workDir}/.mokogitea/manifest.xml"; $manifestPath = "{$workDir}/.mokogitea/manifest.xml";
<<<<<<< HEAD
$existingIsXml = file_exists($manifestPath) && str_contains(file_get_contents($manifestPath), '<MokoCLI');
=======
$existingIsXml = file_exists($manifestPath) && str_contains(file_get_contents($manifestPath), '<mokoplatform'); $existingIsXml = file_exists($manifestPath) && str_contains(file_get_contents($manifestPath), '<mokoplatform');
>>>>>>> main
if ($existingIsXml && !$force) { if ($existingIsXml && !$force) {
$existingPlatform = $parser->extractPlatform(file_get_contents($manifestPath)); $existingPlatform = $parser->extractPlatform(file_get_contents($manifestPath));
if ($existingPlatform === $platform) { if ($existingPlatform === $platform) {
+14
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/push_mokostandards_xml.php * PATH: /automation/push_mokostandards_xml.php
* BRIEF: Push XML manifests to all governed repositories * BRIEF: Push XML manifests to all governed repositories
*/ */
@@ -47,7 +53,11 @@ class PushMokostandardsXmlCli extends CliFramework
$parser = new ManifestParser(); $parser = new ManifestParser();
$tmpBase = sys_get_temp_dir() . '/moko-manifest-push-' . getmypid(); $tmpBase = sys_get_temp_dir() . '/moko-manifest-push-' . getmypid();
<<<<<<< HEAD
echo "=== MokoCLI XML Manifest Push ===\n";
=======
echo "=== mokoplatform XML Manifest Push ===\n"; echo "=== mokoplatform XML Manifest Push ===\n";
>>>>>>> main
echo "Org: {$giteaOrg}\n"; echo "Org: {$giteaOrg}\n";
echo "Mode: " . ($this->dryRun ? "DRY RUN" : "LIVE") . "\n"; echo "Mode: " . ($this->dryRun ? "DRY RUN" : "LIVE") . "\n";
if ($repoFilter) { if ($repoFilter) {
@@ -125,7 +135,11 @@ class PushMokostandardsXmlCli extends CliFramework
// Check if already XML and up-to-date // Check if already XML and up-to-date
$manifestPath = "{$workDir}/.mokogitea/manifest.xml"; $manifestPath = "{$workDir}/.mokogitea/manifest.xml";
<<<<<<< HEAD
$existingIsXml = file_exists($manifestPath) && str_contains(file_get_contents($manifestPath), '<MokoCLI');
=======
$existingIsXml = file_exists($manifestPath) && str_contains(file_get_contents($manifestPath), '<mokoplatform'); $existingIsXml = file_exists($manifestPath) && str_contains(file_get_contents($manifestPath), '<mokoplatform');
>>>>>>> main
if ($existingIsXml && !$force) { if ($existingIsXml && !$force) {
$existingPlatform = $parser->extractPlatform(file_get_contents($manifestPath)); $existingPlatform = $parser->extractPlatform(file_get_contents($manifestPath));
if ($existingPlatform === $platform) { if ($existingPlatform === $platform) {
+33
View File
@@ -9,9 +9,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Automation
* INGROUP: MokoCLI.Scripts
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Automation * DEFGROUP: MokoPlatform.Automation
* INGROUP: MokoPlatform.Scripts * INGROUP: MokoPlatform.Scripts
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /automation/repo_cleanup.php * PATH: /automation/repo_cleanup.php
* BRIEF: Enterprise repository cleanup — branches, PRs, issues, workflows, labels, logs * BRIEF: Enterprise repository cleanup — branches, PRs, issues, workflows, labels, logs
*/ */
@@ -39,14 +45,23 @@ use MokoCli\{ApiClient, AuditLogger, CliFramework, Config, GitPlatformAdapter, M
class RepoCleanup extends CliFramework class RepoCleanup extends CliFramework
{ {
private const VERSION = '09.23.00'; private const VERSION = '09.23.00';
<<<<<<< HEAD
private const SYNC_PREFIX = 'chore/sync-MokoCLI-';
private const CURRENT_BRANCH = 'chore/sync-MokoCLI-v04.02.00';
=======
private const SYNC_PREFIX = 'chore/sync-mokoplatform-'; private const SYNC_PREFIX = 'chore/sync-mokoplatform-';
private const CURRENT_BRANCH = 'chore/sync-mokoplatform-v04.02.00'; private const CURRENT_BRANCH = 'chore/sync-mokoplatform-v04.02.00';
>>>>>>> main
/** Workflow files that have been retired and should be deleted from governed repos. */ /** Workflow files that have been retired and should be deleted from governed repos. */
private const RETIRED_WORKFLOWS = [ private const RETIRED_WORKFLOWS = [
'build.yml', 'code-quality.yml', 'release-cycle.yml', 'release-pipeline.yml', 'build.yml', 'code-quality.yml', 'release-cycle.yml', 'release-pipeline.yml',
'branch-cleanup.yml', 'auto-update-changelog.yml', 'enterprise-issue-manager.yml', 'branch-cleanup.yml', 'auto-update-changelog.yml', 'enterprise-issue-manager.yml',
<<<<<<< HEAD
'flush-actions-cache.yml', 'MokoCLI-script-runner.yml', 'unified-ci.yml',
=======
'flush-actions-cache.yml', 'mokoplatform-script-runner.yml', 'unified-ci.yml', 'flush-actions-cache.yml', 'mokoplatform-script-runner.yml', 'unified-ci.yml',
>>>>>>> main
'unified-platform-testing.yml', 'reusable-build.yml', 'reusable-ci-validation.yml', 'unified-platform-testing.yml', 'reusable-build.yml', 'reusable-ci-validation.yml',
'reusable-deploy.yml', 'reusable-php-quality.yml', 'reusable-platform-testing.yml', 'reusable-deploy.yml', 'reusable-php-quality.yml', 'reusable-platform-testing.yml',
'reusable-project-detector.yml', 'reusable-release.yml', 'reusable-script-executor.yml', 'reusable-project-detector.yml', 'reusable-release.yml', 'reusable-script-executor.yml',
@@ -98,7 +113,11 @@ class RepoCleanup extends CliFramework
} }
<<<<<<< HEAD
$this->logMsg("🧹 MokoCLI Repository Cleanup v" . self::VERSION);
=======
$this->logMsg("🧹 mokoplatform Repository Cleanup v" . self::VERSION); $this->logMsg("🧹 mokoplatform Repository Cleanup v" . self::VERSION);
>>>>>>> main
$this->logMsg("Organization: {$org}"); $this->logMsg("Organization: {$org}");
$this->logMsg("Current sync branch: " . self::CURRENT_BRANCH); $this->logMsg("Current sync branch: " . self::CURRENT_BRANCH);
if ($this->dryRun) { if ($this->dryRun) {
@@ -225,7 +244,11 @@ class RepoCleanup extends CliFramework
} }
$allRepos = $this->adapter->listOrgRepos($org, $skipArchived); $allRepos = $this->adapter->listOrgRepos($org, $skipArchived);
<<<<<<< HEAD
return array_filter($allRepos, fn($r) => !in_array($r['name'], ['MokoCLI', '.github-private'], true));
=======
return array_filter($allRepos, fn($r) => !in_array($r['name'], ['mokoplatform', '.github-private'], true)); return array_filter($allRepos, fn($r) => !in_array($r['name'], ['mokoplatform', '.github-private'], true));
>>>>>>> main
} }
// ─── Cleanup operations ────────────────────────────────────────────── // ─── Cleanup operations ──────────────────────────────────────────────
@@ -463,9 +486,15 @@ class RepoCleanup extends CliFramework
private function checkLabels(string $org, string $repo, array &$results): void private function checkLabels(string $org, string $repo, array &$results): void
{ {
try { try {
<<<<<<< HEAD
$this->api->get("/repos/{$org}/{$repo}/labels/MokoCLI");
} catch (\Exception $e) {
$this->logMsg(" ⚠️ Missing 'MokoCLI' label");
=======
$this->api->get("/repos/{$org}/{$repo}/labels/mokoplatform"); $this->api->get("/repos/{$org}/{$repo}/labels/mokoplatform");
} catch (\Exception $e) { } catch (\Exception $e) {
$this->logMsg(" ⚠️ Missing 'mokoplatform' label"); $this->logMsg(" ⚠️ Missing 'mokoplatform' label");
>>>>>>> main
$results['labels_missing']++; $results['labels_missing']++;
$this->api->resetCircuitBreaker(); $this->api->resetCircuitBreaker();
} }
@@ -479,7 +508,11 @@ class RepoCleanup extends CliFramework
if (preg_match('/^\s*VERSION:\s*(\d{2}\.\d{2}\.\d{2})/m', $content, $m)) { if (preg_match('/^\s*VERSION:\s*(\d{2}\.\d{2}\.\d{2})/m', $content, $m)) {
$version = $m[1]; $version = $m[1];
<<<<<<< HEAD
// Check manifest.xml for the tracked MokoCLI version
=======
// Check manifest.xml for the tracked mokoplatform version // Check manifest.xml for the tracked mokoplatform version
>>>>>>> main
try { try {
$mokoFile = $this->api->get("/repos/{$org}/{$repo}/contents/.mokogitea/manifest.xml"); $mokoFile = $this->api->get("/repos/{$org}/{$repo}/contents/.mokogitea/manifest.xml");
$mokoContent = base64_decode($mokoFile['content'] ?? ''); $mokoContent = base64_decode($mokoFile['content'] ?? '');
+3 -3
View File
@@ -4,9 +4,9 @@
# Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech> # Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# #
# DEFGROUP: MokoPlatform.Automation.ServerAutoheal # DEFGROUP: MokoCLI.Automation.ServerAutoheal
# INGROUP: MokoPlatform.Automation # INGROUP: MokoCLI.Automation
# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform # REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
# PATH: /automation/server-autoheal.sh # PATH: /automation/server-autoheal.sh
# BRIEF: Server auto-heal on unclean restart + split system/content backups # BRIEF: Server auto-heal on unclean restart + split system/content backups
# #
+15
View File
@@ -9,11 +9,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /bin/moko
* BRIEF: Unified CLI dispatcher — run any MokoCLI script without needing GitHub Actions
=======
* DEFGROUP: MokoCli.CLI * DEFGROUP: MokoCli.CLI
* INGROUP: MokoCli * INGROUP: MokoCli
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
* PATH: /bin/moko * PATH: /bin/moko
* BRIEF: Unified CLI dispatcher — run any MokoCli script without needing GitHub Actions * BRIEF: Unified CLI dispatcher — run any MokoCli script without needing GitHub Actions
>>>>>>> main
* *
* USAGE * USAGE
* php bin/moko <command> [options] (all platforms) * php bin/moko <command> [options] (all platforms)
@@ -295,10 +303,17 @@ function printHelp(): void
{ {
echo <<<'HELP' echo <<<'HELP'
╔══════════════════════════════════════════════════════════╗ ╔══════════════════════════════════════════════════════════╗
<<<<<<< HEAD
║ MokoCLI (bin/moko) ║
╚══════════════════════════════════════════════════════════╝
Run any MokoCLI script locally without GitHub Actions.
=======
║ MokoCli CLI (bin/moko) ║ ║ MokoCli CLI (bin/moko) ║
╚══════════════════════════════════════════════════════════╝ ╚══════════════════════════════════════════════════════════╝
Run any MokoCli script locally without GitHub Actions. Run any MokoCli script locally without GitHub Actions.
>>>>>>> main
USAGE USAGE
php bin/moko <command> [options] (all platforms) php bin/moko <command> [options] (all platforms)
+14
View File
@@ -8,9 +8,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/archive_repo.php * PATH: /cli/archive_repo.php
* BRIEF: Gracefully retire a governed repository — archive, close issues/PRs, remove sync def * BRIEF: Gracefully retire a governed repository — archive, close issues/PRs, remove sync def
*/ */
@@ -135,7 +141,11 @@ class ArchiveRepoCli extends CliFramework
try { try {
$issue = $adapter->createIssue( $issue = $adapter->createIssue(
$org, $org,
<<<<<<< HEAD
'MokoCLI',
=======
'mokoplatform', 'mokoplatform',
>>>>>>> main
"chore: archived repository {$repoName}", "chore: archived repository {$repoName}",
"## Repository Archived\n\n" "## Repository Archived\n\n"
. "**Repository:** `{$org}/{$repoName}`\n" . "**Repository:** `{$org}/{$repoName}`\n"
@@ -150,7 +160,11 @@ class ArchiveRepoCli extends CliFramework
] ]
); );
if (isset($issue['number'])) { if (isset($issue['number'])) {
<<<<<<< HEAD
echo " Archival record: MokoCLI#{$issue['number']}\n";
=======
echo " Archival record: mokoplatform#{$issue['number']}\n"; echo " Archival record: mokoplatform#{$issue['number']}\n";
>>>>>>> main
} }
} catch (\Exception $e) { } catch (\Exception $e) {
echo " Warning: could not create archival record: " . $e->getMessage() . "\n"; echo " Warning: could not create archival record: " . $e->getMessage() . "\n";
+6
View File
@@ -14,9 +14,15 @@
* (at your option) any later version. * (at your option) any later version.
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Enterprise.CLI
* INGROUP: MokoCLI.Enterprise
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Enterprise.CLI * DEFGROUP: MokoPlatform.Enterprise.CLI
* INGROUP: MokoPlatform.Enterprise * INGROUP: MokoPlatform.Enterprise
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/audit_query.php * PATH: /cli/audit_query.php
* BRIEF: Search, filter, and export audit logs * BRIEF: Search, filter, and export audit logs
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/badge_update.php * PATH: /cli/badge_update.php
* BRIEF: Update [VERSION: XX.XX.XX] badges in all markdown files * BRIEF: Update [VERSION: XX.XX.XX] badges in all markdown files
*/ */
+9 -1
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/branch_rename.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/branch_rename.php * PATH: /cli/branch_rename.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Rename a git branch via Gitea API (create new, update PR, delete old) * BRIEF: Rename a git branch via Gitea API (create new, update PR, delete old)
*/ */
+17 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/bulk_workflow_push.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/bulk_workflow_push.php * PATH: /cli/bulk_workflow_push.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Push a workflow file to all governed repos via the Gitea Contents API * BRIEF: Push a workflow file to all governed repos via the Gitea Contents API
*/ */
@@ -154,7 +162,11 @@ class BulkWorkflowPushCli extends CliFramework
'content' => $encodedContent, 'content' => $encodedContent,
'sha' => $remoteSha, 'sha' => $remoteSha,
'message' => "chore: sync {$destPath} " 'message' => "chore: sync {$destPath} "
<<<<<<< HEAD
. "from MokoCLI [skip ci]",
=======
. "from mokoplatform [skip ci]", . "from mokoplatform [skip ci]",
>>>>>>> main
'branch' => $branch, 'branch' => $branch,
]); ]);
@@ -184,7 +196,11 @@ class BulkWorkflowPushCli extends CliFramework
$payload = json_encode([ $payload = json_encode([
'content' => $encodedContent, 'content' => $encodedContent,
'message' => "chore: add {$destPath} " 'message' => "chore: add {$destPath} "
<<<<<<< HEAD
. "from MokoCLI [skip ci]",
=======
. "from mokoplatform [skip ci]", . "from mokoplatform [skip ci]",
>>>>>>> main
'branch' => $branch, 'branch' => $branch,
]); ]);
+9 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/bulk_workflow_trigger.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/bulk_workflow_trigger.php * PATH: /cli/bulk_workflow_trigger.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Trigger a workflow across multiple repos at once * BRIEF: Trigger a workflow across multiple repos at once
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/changelog_promote.php * PATH: /cli/changelog_promote.php
* BRIEF: Promote [Unreleased] section in CHANGELOG.md to a versioned entry * BRIEF: Promote [Unreleased] section in CHANGELOG.md to a versioned entry
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/changelog_prune.php * PATH: /cli/changelog_prune.php
* BRIEF: Prune old CHANGELOG.md entries — keeps [Unreleased] + last N releases * BRIEF: Prune old CHANGELOG.md entries — keeps [Unreleased] + last N releases
*/ */
+9 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/client_dashboard.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/client_dashboard.php * PATH: /cli/client_dashboard.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Generate unified client dashboard HTML * BRIEF: Generate unified client dashboard HTML
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/client_health_check.php * PATH: /cli/client_health_check.php
* BRIEF: Verify a client site's update server, installed version, and release availability * BRIEF: Verify a client site's update server, installed version, and release availability
*/ */
+9 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/client_inventory.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/client_inventory.php * PATH: /cli/client_inventory.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Discover and list all client-waas repos with their server configuration status * BRIEF: Discover and list all client-waas repos with their server configuration status
*/ */
+9 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/client_provision.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/client_provision.php * PATH: /cli/client_provision.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Provision a new client environment end-to-end * BRIEF: Provision a new client environment end-to-end
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/completion.php * PATH: /cli/completion.php
* BRIEF: Generate bash/zsh tab completion scripts for bin/moko * BRIEF: Generate bash/zsh tab completion scripts for bin/moko
*/ */
+22
View File
@@ -8,9 +8,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/create_project.php * PATH: /cli/create_project.php
* BRIEF: Create baseline GitHub Projects for repositories with standard fields and views * BRIEF: Create baseline GitHub Projects for repositories with standard fields and views
*/ */
@@ -24,7 +30,11 @@ use MokoCli\CliFramework;
class CreateProjectCli extends CliFramework class CreateProjectCli extends CliFramework
{ {
/** @var string[] */ /** @var string[] */
<<<<<<< HEAD
private array $ALWAYS_EXCLUDE = ['MokoCLI', '.github-private'];
=======
private array $ALWAYS_EXCLUDE = ['mokoplatform', '.github-private']; private array $ALWAYS_EXCLUDE = ['mokoplatform', '.github-private'];
>>>>>>> main
/** @var array<string, string> */ /** @var array<string, string> */
private array $PLATFORM_TO_TYPE = [ private array $PLATFORM_TO_TYPE = [
@@ -183,7 +193,11 @@ class CreateProjectCli extends CliFramework
CURLOPT_HTTPHEADER => [ CURLOPT_HTTPHEADER => [
'Authorization: bearer ' . $token, 'Authorization: bearer ' . $token,
'Content-Type: application/json', 'Content-Type: application/json',
<<<<<<< HEAD
'User-Agent: MokoCLI-CreateProject',
=======
'User-Agent: mokoplatform-CreateProject', 'User-Agent: mokoplatform-CreateProject',
>>>>>>> main
], ],
]); ]);
$body = (string) curl_exec($ch); $body = (string) curl_exec($ch);
@@ -422,14 +436,22 @@ class CreateProjectCli extends CliFramework
updateProjectV2(input: { updateProjectV2(input: {
projectId: $projectId, projectId: $projectId,
shortDescription: $shortDescription, shortDescription: $shortDescription,
<<<<<<< HEAD
readme: "Managed by MokoCLI. Run `php cli/create_project.php` to regenerate."
=======
readme: "Managed by mokoplatform. Run `php cli/create_project.php` to regenerate." readme: "Managed by mokoplatform. Run `php cli/create_project.php` to regenerate."
>>>>>>> main
}) { }) {
projectV2 { id } projectV2 { id }
} }
}', }',
[ [
'projectId' => $projectId, 'projectId' => $projectId,
<<<<<<< HEAD
'shortDescription' => "Standard project board for {$repo}. Auto-created by MokoCLI.",
=======
'shortDescription' => "Standard project board for {$repo}. Auto-created by mokoplatform.", 'shortDescription' => "Standard project board for {$repo}. Auto-created by mokoplatform.",
>>>>>>> main
], ],
$token $token
); );
+41
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/create_repo.php
* BRIEF: Scaffold a new governed repository with full MokoCLI baseline
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/create_repo.php * PATH: /cli/create_repo.php
* BRIEF: Scaffold a new governed repository with full mokoplatform baseline * BRIEF: Scaffold a new governed repository with full mokoplatform baseline
>>>>>>> main
*/ */
declare(strict_types=1); declare(strict_types=1);
@@ -28,7 +36,11 @@ class CreateRepoCli extends CliFramework
{ {
protected function configure(): void protected function configure(): void
{ {
<<<<<<< HEAD
$this->setDescription('Scaffold a new governed repository with full MokoCLI baseline');
=======
$this->setDescription('Scaffold a new governed repository with full mokoplatform baseline'); $this->setDescription('Scaffold a new governed repository with full mokoplatform baseline');
>>>>>>> main
$this->addArgument('--name', 'Repository name', null); $this->addArgument('--name', 'Repository name', null);
$this->addArgument('--type', 'Project type', null); $this->addArgument('--type', 'Project type', null);
$this->addArgument('--description', 'Repository description', ''); $this->addArgument('--description', 'Repository description', '');
@@ -60,6 +72,18 @@ class CreateRepoCli extends CliFramework
'generic' => 'generic', 'generic' => 'generic',
]; ];
$TYPE_TO_TOPICS = [ $TYPE_TO_TOPICS = [
<<<<<<< HEAD
'dolibarr' => ['dolibarr', 'erp', 'crm', 'php', 'MokoCLI'],
'joomla' => ['joomla', 'cms', 'php', 'MokoCLI'],
'nodejs' => ['nodejs', 'javascript', 'typescript', 'MokoCLI'],
'terraform' => ['terraform', 'infrastructure', 'iac', 'MokoCLI'],
'python' => ['python', 'MokoCLI'],
'wordpress' => ['wordpress', 'php', 'cms', 'MokoCLI'],
'generic' => ['MokoCLI'],
];
$platform = $TYPE_TO_PLATFORM[$type] ?? 'generic';
$topics = $TYPE_TO_TOPICS[$type] ?? ['MokoCLI'];
=======
'dolibarr' => ['dolibarr', 'erp', 'crm', 'php', 'mokoplatform'], 'dolibarr' => ['dolibarr', 'erp', 'crm', 'php', 'mokoplatform'],
'joomla' => ['joomla', 'cms', 'php', 'mokoplatform'], 'joomla' => ['joomla', 'cms', 'php', 'mokoplatform'],
'nodejs' => ['nodejs', 'javascript', 'typescript', 'mokoplatform'], 'nodejs' => ['nodejs', 'javascript', 'typescript', 'mokoplatform'],
@@ -70,6 +94,7 @@ class CreateRepoCli extends CliFramework
]; ];
$platform = $TYPE_TO_PLATFORM[$type] ?? 'generic'; $platform = $TYPE_TO_PLATFORM[$type] ?? 'generic';
$topics = $TYPE_TO_TOPICS[$type] ?? ['mokoplatform']; $topics = $TYPE_TO_TOPICS[$type] ?? ['mokoplatform'];
>>>>>>> main
$platformName = $adapter->getPlatformName(); $platformName = $adapter->getPlatformName();
$vis = $private ? 'private' : 'public'; $vis = $private ? 'private' : 'public';
echo "Scaffolding new repository: {$org}/{$name}" echo "Scaffolding new repository: {$org}/{$name}"
@@ -84,7 +109,11 @@ class CreateRepoCli extends CliFramework
if (!$this->dryRun) { if (!$this->dryRun) {
try { try {
$data = $adapter->createOrgRepo($org, $name, [ $data = $adapter->createOrgRepo($org, $name, [
<<<<<<< HEAD
'description' => $description ?: "Managed by MokoCLI ({$type})",
=======
'description' => $description ?: "Managed by mokoplatform ({$type})", 'description' => $description ?: "Managed by mokoplatform ({$type})",
>>>>>>> main
'private' => $private, 'private' => $private,
'has_issues' => true, 'has_issues' => true,
'has_projects' => true, 'has_projects' => true,
@@ -143,7 +172,11 @@ class CreateRepoCli extends CliFramework
. "Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>\n" . "Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>\n"
. "SPDX-License-Identifier: GPL-3.0-or-later\n" . "SPDX-License-Identifier: GPL-3.0-or-later\n"
. "DEFGROUP: {$name}\n" . "DEFGROUP: {$name}\n"
<<<<<<< HEAD
. "INGROUP: MokoCLI\n"
=======
. "INGROUP: mokoplatform\n" . "INGROUP: mokoplatform\n"
>>>>>>> main
. "REPO: {$repoUrl}\n" . "REPO: {$repoUrl}\n"
. "PATH: /README.md\n" . "PATH: /README.md\n"
. "BRIEF: {$description}\n" . "BRIEF: {$description}\n"
@@ -152,7 +185,11 @@ class CreateRepoCli extends CliFramework
. "{$description}\n\n" . "{$description}\n\n"
. "## Getting Started\n\n" . "## Getting Started\n\n"
. "This repository is governed by" . "This repository is governed by"
<<<<<<< HEAD
. " [MokoCLI]({$standardsUrl}).\n\n"
=======
. " [mokoplatform]({$standardsUrl}).\n\n" . " [mokoplatform]({$standardsUrl}).\n\n"
>>>>>>> main
. "## License\n\n" . "## License\n\n"
. "GPL-3.0-or-later. See [LICENSE](LICENSE)" . "GPL-3.0-or-later. See [LICENSE](LICENSE)"
. " for details.\n"; . " for details.\n";
@@ -169,7 +206,11 @@ class CreateRepoCli extends CliFramework
$name, $name,
'README.md', 'README.md',
$readmeContent, $readmeContent,
<<<<<<< HEAD
'docs: initialize README with MokoCLI header [skip ci]',
=======
'docs: initialize README with mokoplatform header [skip ci]', 'docs: initialize README with mokoplatform header [skip ci]',
>>>>>>> main
$sha $sha
); );
echo " README.md created\n"; echo " README.md created\n";
+6
View File
@@ -8,9 +8,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.CLI * DEFGROUP: MokoPlatform.CLI
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/deploy_joomla.php * PATH: /cli/deploy_joomla.php
* BRIEF: Smart Joomla deploy — routes files to correct server directories by extension type * BRIEF: Smart Joomla deploy — routes files to correct server directories by extension type
* *
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/dev_branch_reset.php * PATH: /cli/dev_branch_reset.php
* BRIEF: Delete and recreate dev branch from main via Gitea API * BRIEF: Delete and recreate dev branch from main via Gitea API
*/ */
+9 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/grafana_dashboard.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/grafana_dashboard.php * PATH: /cli/grafana_dashboard.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Manage Grafana dashboards via API * BRIEF: Manage Grafana dashboards via API
*/ */
+9 -1
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/joomla_build.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/joomla_build.php * PATH: /cli/joomla_build.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Build a Joomla extension ZIP from manifest — all types supported * BRIEF: Build a Joomla extension ZIP from manifest — all types supported
* NOTE: Called by pre-release and auto-release workflows. * NOTE: Called by pre-release and auto-release workflows.
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/joomla_compat_check.php * PATH: /cli/joomla_compat_check.php
* BRIEF: Check if extension targetplatform regex matches the latest Joomla version * BRIEF: Check if extension targetplatform regex matches the latest Joomla version
*/ */
+44 -1
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/joomla_metadata_validate.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/joomla_metadata_validate.php * PATH: /cli/joomla_metadata_validate.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Validate MokoGitea repo metadata against Joomla extension manifest XML * BRIEF: Validate MokoGitea repo metadata against Joomla extension manifest XML
*/ */
@@ -18,7 +26,11 @@ declare(strict_types=1);
require_once __DIR__ . '/../lib/Enterprise/CliFramework.php'; require_once __DIR__ . '/../lib/Enterprise/CliFramework.php';
<<<<<<< HEAD
use MokoEnterprise\CliFramework;
=======
use MokoCli\CliFramework; use MokoCli\CliFramework;
>>>>>>> main
class JoomlaMetadataValidateCli extends CliFramework class JoomlaMetadataValidateCli extends CliFramework
{ {
@@ -146,9 +158,12 @@ class JoomlaMetadataValidateCli extends CliFramework
if (preg_match('/<extension\s[^>]*type=["\']([^"\']+)["\']/', $content, $typeMatch)) { if (preg_match('/<extension\s[^>]*type=["\']([^"\']+)["\']/', $content, $typeMatch)) {
$xml = @simplexml_load_string($content); $xml = @simplexml_load_string($content);
if ($xml === false) { if ($xml === false) {
<<<<<<< HEAD
=======
$relPath = str_replace($root . '/', '', $file); $relPath = str_replace($root . '/', '', $file);
$relPath = str_replace($root . '\\', '', $relPath); $relPath = str_replace($root . '\\', '', $relPath);
$this->log('WARN', "Skipping {$relPath}: malformed XML"); $this->log('WARN', "Skipping {$relPath}: malformed XML");
>>>>>>> main
continue; continue;
} }
@@ -173,6 +188,29 @@ class JoomlaMetadataValidateCli extends CliFramework
private function loadMetadata(string $root, string $org, string $repoName, string $token, string $apiBase): ?array private function loadMetadata(string $root, string $org, string $repoName, string $token, string $apiBase): ?array
{ {
<<<<<<< HEAD
if ($token !== '') {
$url = "{$apiBase}/repos/{$org}/{$repoName}/metadata";
$ctx = stream_context_create([
'http' => [
'header' => "Authorization: token {$token}\r\nAccept: application/json\r\n",
'timeout' => 10,
],
]);
$body = @file_get_contents($url, false, $ctx);
if ($body !== false) {
$data = json_decode($body, true);
if (is_array($data)) {
$data['source'] = 'api';
return $data;
}
}
}
return null;
=======
if ($token === '') { if ($token === '') {
$this->log('ERROR', 'No API token provided (use --token or set GITEA_TOKEN env var)'); $this->log('ERROR', 'No API token provided (use --token or set GITEA_TOKEN env var)');
return null; return null;
@@ -224,6 +262,7 @@ class JoomlaMetadataValidateCli extends CliFramework
$data['source'] = 'api'; $data['source'] = 'api';
return $data; return $data;
>>>>>>> main
} }
// ================================================================= // =================================================================
@@ -237,9 +276,13 @@ class JoomlaMetadataValidateCli extends CliFramework
$type = $joomlaXml['type']; $type = $joomlaXml['type'];
// 1. Extension type // 1. Extension type
<<<<<<< HEAD
$metaType = $this->normalizeExtensionType($metadata['extension_type'] ?? '');
=======
$metaType = $this->normalizeExtensionType( $metaType = $this->normalizeExtensionType(
$metadata['extension_type'] ?? $metadata['package_type'] ?? '' $metadata['extension_type'] ?? $metadata['package_type'] ?? ''
); );
>>>>>>> main
$results[] = [ $results[] = [
'field' => 'extension_type', 'field' => 'extension_type',
'metadata' => $metaType, 'metadata' => $metaType,
+10
View File
@@ -8,9 +8,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/joomla_release.php * PATH: /cli/joomla_release.php
* BRIEF: Joomla release pipeline — build ZIP+tar.gz, upload to GitHub Release, update updates.xml * BRIEF: Joomla release pipeline — build ZIP+tar.gz, upload to GitHub Release, update updates.xml
* *
@@ -407,7 +413,11 @@ class JoomlaRelease extends CliFramework
$this->api->post("/repos/{$repo}/releases", [ $this->api->post("/repos/{$repo}/releases", [
'tag_name' => $tag, 'tag_name' => $tag,
'name' => $releaseName, 'name' => $releaseName,
<<<<<<< HEAD
'body' => "## {$version}\n\nCreated by MokoCLI release pipeline.",
=======
'body' => "## {$version}\n\nCreated by mokoplatform release pipeline.", 'body' => "## {$version}\n\nCreated by mokoplatform release pipeline.",
>>>>>>> main
'prerelease' => ($stability !== 'stable'), 'prerelease' => ($stability !== 'stable'),
]); ]);
} }
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/license_manage.php * PATH: /cli/license_manage.php
* BRIEF: Manage license packages and keys via MokoGitea licensing API * BRIEF: Manage license packages and keys via MokoGitea licensing API
* *
+1 -1
View File
@@ -10,7 +10,7 @@
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/manifest_detect.php * PATH: /cli/manifest_detect.php
* VERSION: 09.32.01 * VERSION: 09.32.00
* BRIEF: Auto-detect manifest fields from source files and optionally push to API * BRIEF: Auto-detect manifest fields from source files and optionally push to API
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/manifest_element.php * PATH: /cli/manifest_element.php
* BRIEF: Extract element name, type, type prefix, and ZIP name from manifest * BRIEF: Extract element name, type, type prefix, and ZIP name from manifest
*/ */
+1 -1
View File
@@ -10,7 +10,7 @@
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/manifest_integrity.php * PATH: /cli/manifest_integrity.php
* VERSION: 09.32.01 * VERSION: 09.32.00
* BRIEF: Cross-check manifest API fields against repo contents across the org * BRIEF: Cross-check manifest API fields against repo contents across the org
*/ */
+9 -1
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/manifest_licensing.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/manifest_licensing.php * PATH: /cli/manifest_licensing.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Ensure licensing tags (updateservers, dlid) in Joomla extension manifests * BRIEF: Ensure licensing tags (updateservers, dlid) in Joomla extension manifests
*/ */
+18 -1
View File
@@ -6,12 +6,21 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/manifest_read.php
* VERSION: 09.25.05
* BRIEF: Parse .manifest.xml and output requested field(s) for CI consumption
=======
* DEFGROUP: mokocli.CLI * DEFGROUP: mokocli.CLI
* INGROUP: mokocli * INGROUP: mokocli
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/manifest_read.php * PATH: /cli/manifest_read.php
* VERSION: 09.32.01 * VERSION: 09.32.00
* BRIEF: Read repo metadata from Gitea manifest API, auto-detect the rest * BRIEF: Read repo metadata from Gitea manifest API, auto-detect the rest
>>>>>>> main
*/ */
declare(strict_types=1); declare(strict_types=1);
@@ -67,6 +76,13 @@ class ManifestReadCli extends CliFramework
$fields = $this->autoDetect($root, $repo); $fields = $this->autoDetect($root, $repo);
} }
<<<<<<< HEAD
// Priority: manifest.xml (current standard)
$candidates = [
"{$root}/.mokogitea/manifest.xml",
"{$root}/.mokogitea/.manifest.xml", // legacy (dot-prefixed)
"{$root}/.mokogitea/.MokoCLI", // legacy v4
=======
if (empty($fields)) { if (empty($fields)) {
$this->log('ERROR', "Could not resolve metadata for {$root}"); $this->log('ERROR', "Could not resolve metadata for {$root}");
return 1; return 1;
@@ -134,6 +150,7 @@ class ManifestReadCli extends CliFramework
$fields = [ $fields = [
'name' => $repoName ?: basename($root), 'name' => $repoName ?: basename($root),
'org' => 'MokoConsulting', 'org' => 'MokoConsulting',
>>>>>>> main
]; ];
// Resolve source directory (source/ or src/) // Resolve source directory (source/ or src/)
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/package_build.php * PATH: /cli/package_build.php
* BRIEF: Build ZIP and tar.gz install packages for Joomla/Dolibarr/generic projects * BRIEF: Build ZIP and tar.gz install packages for Joomla/Dolibarr/generic projects
* *
+11 -3
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/platform_detect.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/platform_detect.php * PATH: /cli/platform_detect.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Auto-detect repository platform type and optionally update manifest * BRIEF: Auto-detect repository platform type and optionally update manifest
*/ */
@@ -134,9 +142,9 @@ class PlatformDetectCli extends CliFramework
} }
} }
// 5. Platform — is mokoplatform itself or org-config // 5. Platform — is MokoCLI itself or org-config
$repoName = basename($root); $repoName = basename($root);
if (in_array($repoName, ['mokoplatform', 'mokogitea-org-config'])) { if (in_array($repoName, ['mokocli', 'mokoplatform', 'mokogitea-org-config'])) {
return 'platform'; return 'platform';
} }
+12
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/release.php
* BRIEF: Automate the MokoCLI version branch release flow
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/release.php * PATH: /cli/release.php
* BRIEF: Automate the mokoplatform version branch release flow * BRIEF: Automate the mokoplatform version branch release flow
>>>>>>> main
*/ */
declare(strict_types=1); declare(strict_types=1);
@@ -23,7 +31,11 @@ class ReleaseCli extends CliFramework
{ {
protected function configure(): void protected function configure(): void
{ {
<<<<<<< HEAD
$this->setDescription('Automate the MokoCLI version branch release flow');
=======
$this->setDescription('Automate the mokoplatform version branch release flow'); $this->setDescription('Automate the mokoplatform version branch release flow');
>>>>>>> main
$this->addArgument('--bump', 'Bump type: patch, minor, or major', ''); $this->addArgument('--bump', 'Bump type: patch, minor, or major', '');
} }
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_body_update.php * PATH: /cli/release_body_update.php
* BRIEF: Update Gitea release body with changelog extract and checksums * BRIEF: Update Gitea release body with changelog extract and checksums
*/ */
+10 -1
View File
@@ -6,12 +6,21 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/release_cascade.php
* VERSION: 09.25.05
* BRIEF: DEPRECATED — cascade behavior removed. Each release stream is independent.
=======
* DEFGROUP: mokocli.CLI * DEFGROUP: mokocli.CLI
* INGROUP: mokocli * INGROUP: mokocli
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/release_cascade.php * PATH: /cli/release_cascade.php
* VERSION: 09.32.01 * VERSION: 09.32.00
* BRIEF: Cascade release zip to all lower stability channels * BRIEF: Cascade release zip to all lower stability channels
>>>>>>> main
*/ */
declare(strict_types=1); declare(strict_types=1);
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_create.php * PATH: /cli/release_create.php
* BRIEF: Create or overwrite a Gitea release with proper naming * BRIEF: Create or overwrite a Gitea release with proper naming
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_manage.php * PATH: /cli/release_manage.php
* BRIEF: Create/update Gitea releases, upload assets, update release body * BRIEF: Create/update Gitea releases, upload assets, update release body
*/ */
+14
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_mirror.php * PATH: /cli/release_mirror.php
* BRIEF: Mirror a Gitea release (with assets) to a GitHub repository * BRIEF: Mirror a Gitea release (with assets) to a GitHub repository
*/ */
@@ -201,7 +207,11 @@ class ReleaseMirrorCli extends CliFramework
CURLOPT_HTTPHEADER => [ CURLOPT_HTTPHEADER => [
"Authorization: token {$token}", "Authorization: token {$token}",
'Accept: application/vnd.github+json', 'Accept: application/vnd.github+json',
<<<<<<< HEAD
'User-Agent: MokoCLI',
=======
'User-Agent: mokoplatform', 'User-Agent: mokoplatform',
>>>>>>> main
'Content-Type: application/json', 'Content-Type: application/json',
], ],
CURLOPT_TIMEOUT => 30, CURLOPT_TIMEOUT => 30,
@@ -229,7 +239,11 @@ class ReleaseMirrorCli extends CliFramework
CURLOPT_HTTPHEADER => [ CURLOPT_HTTPHEADER => [
"Authorization: token {$token}", "Authorization: token {$token}",
'Accept: application/vnd.github+json', 'Accept: application/vnd.github+json',
<<<<<<< HEAD
'User-Agent: MokoCLI',
=======
'User-Agent: mokoplatform', 'User-Agent: mokoplatform',
>>>>>>> main
'Content-Type: application/octet-stream', 'Content-Type: application/octet-stream',
], ],
CURLOPT_POSTFIELDS => file_get_contents($filePath), CURLOPT_POSTFIELDS => file_get_contents($filePath),
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_notes.php * PATH: /cli/release_notes.php
* BRIEF: Extract release notes from CHANGELOG.md for a given version * BRIEF: Extract release notes from CHANGELOG.md for a given version
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_package.php * PATH: /cli/release_package.php
* BRIEF: Build packages (ZIP + tar.gz) with SHA-256 and upload to Gitea release * BRIEF: Build packages (ZIP + tar.gz) with SHA-256 and upload to Gitea release
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_promote.php * PATH: /cli/release_promote.php
* BRIEF: Promote a Gitea release from one channel to another (rename release, tag, assets) * BRIEF: Promote a Gitea release from one channel to another (rename release, tag, assets)
*/ */
+9 -1
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/release_publish.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/release_publish.php * PATH: /cli/release_publish.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Publish a release and create copies for all lesser stability streams. * BRIEF: Publish a release and create copies for all lesser stability streams.
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_validate.php * PATH: /cli/release_validate.php
* BRIEF: Pre-release validation -- version consistency, required files, manifest checks * BRIEF: Pre-release validation -- version consistency, required files, manifest checks
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/release_verify.php * PATH: /cli/release_verify.php
* BRIEF: Verify a built release artifact — version, SHA256, disallowed files * BRIEF: Verify a built release artifact — version, SHA256, disallowed files
*/ */
+9 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/scaffold_client.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/scaffold_client.php * PATH: /cli/scaffold_client.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Scaffold a new client-waas repo from Template-Client-WaaS with pre-configured settings * BRIEF: Scaffold a new client-waas repo from Template-Client-WaaS with pre-configured settings
*/ */
+10
View File
@@ -8,9 +8,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/sync_rulesets.php * PATH: /cli/sync_rulesets.php
* BRIEF: Apply branch protection rules to all repos via platform adapter * BRIEF: Apply branch protection rules to all repos via platform adapter
*/ */
@@ -46,7 +52,11 @@ class SyncRulesetsCli extends CliFramework
); );
$platformName = $adapter->getPlatformName(); $platformName = $adapter->getPlatformName();
<<<<<<< HEAD
$ALWAYS_EXCLUDE = ['MokoCLI', '.github-private'];
=======
$ALWAYS_EXCLUDE = ['mokoplatform', '.github-private']; $ALWAYS_EXCLUDE = ['mokoplatform', '.github-private'];
>>>>>>> main
// -- Protection rules (platform-agnostic format) -- // -- Protection rules (platform-agnostic format) --
$PROTECTIONS = [ $PROTECTIONS = [
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/theme_lint.php * PATH: /cli/theme_lint.php
* BRIEF: Lint theme files -- CSS syntax, image sizes, hardcoded URLs * BRIEF: Lint theme files -- CSS syntax, image sizes, hardcoded URLs
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/updates_xml_build.php * PATH: /cli/updates_xml_build.php
* BRIEF: Generate Joomla updates.xml from extension manifest metadata * BRIEF: Generate Joomla updates.xml from extension manifest metadata
*/ */
+9 -1
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/updates_xml_sync.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/updates_xml_sync.php * PATH: /cli/updates_xml_sync.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Sync updates.xml to target branches via Gitea API * BRIEF: Sync updates.xml to target branches via Gitea API
* NOTE: Called by pre-release and auto-release workflows after updates.xml * NOTE: Called by pre-release and auto-release workflows after updates.xml
* is modified on the current branch. Pushes the file to other branches * is modified on the current branch. Pushes the file to other branches
+9 -1
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/version_auto_bump.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/version_auto_bump.php * PATH: /cli/version_auto_bump.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Auto patch-bump, set stability suffix, and commit — single CLI replacing inline workflow bash * BRIEF: Auto patch-bump, set stability suffix, and commit — single CLI replacing inline workflow bash
*/ */
+7 -1
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/version_bump.php * PATH: /cli/version_bump.php
* BRIEF: Auto-increment version -- manifest.xml is canonical, cascades to all XML and MD files * BRIEF: Auto-increment version -- manifest.xml is canonical, cascades to all XML and MD files
*/ */
@@ -370,7 +376,7 @@ class VersionBumpCli extends CliFramework
/** /**
* Scan git release tags for the highest version across all channels. * Scan git release tags for the highest version across all channels.
* *
* Checks release names like "MokoSuiteClient (VERSION: 09.32.01)" in * Checks release names like "MokoSuiteClient (VERSION: 02.45.00)" in
* git tags (stable, release-candidate, development, etc.) to find the * git tags (stable, release-candidate, development, etc.) to find the
* highest version that has been released on any channel. * highest version that has been released on any channel.
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/version_bump_remote.php * PATH: /cli/version_bump_remote.php
* BRIEF: Bump version in manifest XML and CHANGELOG.md on a remote branch via Gitea API * BRIEF: Bump version in manifest XML and CHANGELOG.md on a remote branch via Gitea API
*/ */
+9 -1
View File
@@ -6,11 +6,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/version_check.php
* VERSION: 09.25.05
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/version_check.php * PATH: /cli/version_check.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Validate version consistency across README, manifests, and sub-packages * BRIEF: Validate version consistency across README, manifests, and sub-packages
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/version_read.php * PATH: /cli/version_read.php
* BRIEF: Read version manifest.xml is canonical, falls back to README.md and Joomla XML * BRIEF: Read version manifest.xml is canonical, falls back to README.md and Joomla XML
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/version_reset_dev.php * PATH: /cli/version_reset_dev.php
* BRIEF: Reset platform version to 'development' on a branch via Gitea API * BRIEF: Reset platform version to 'development' on a branch via Gitea API
*/ */
+6
View File
@@ -6,9 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /cli/version_set_platform.php * PATH: /cli/version_set_platform.php
* BRIEF: Set version in platform-specific files (Dolibarr $this->version, Joomla <version>) * BRIEF: Set version in platform-specific files (Dolibarr $this->version, Joomla <version>)
*/ */
+21 -1
View File
@@ -6,12 +6,21 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.CLI
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/wiki_sync.php
* VERSION: 09.25.05
* BRIEF: Sync select wiki pages from MokoCLI to all template repos
=======
* DEFGROUP: mokoplatform.CLI * DEFGROUP: mokoplatform.CLI
* INGROUP: mokoplatform * INGROUP: mokoplatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /cli/wiki_sync.php * PATH: /cli/wiki_sync.php
* VERSION: 09.32.01 * VERSION: 09.32.00
* BRIEF: Sync select wiki pages from mokoplatform to all template repos * BRIEF: Sync select wiki pages from mokoplatform to all template repos
>>>>>>> main
*/ */
declare(strict_types=1); declare(strict_types=1);
@@ -25,7 +34,11 @@ class WikiSyncCli extends CliFramework
private string $giteaUrl = 'https://git.mokoconsulting.tech'; private string $giteaUrl = 'https://git.mokoconsulting.tech';
private string $token = ''; private string $token = '';
private string $org = 'MokoConsulting'; private string $org = 'MokoConsulting';
<<<<<<< HEAD
private string $sourceRepo = 'MokoCLI';
=======
private string $sourceRepo = 'mokoplatform'; private string $sourceRepo = 'mokoplatform';
>>>>>>> main
private array $targetRepos = []; private array $targetRepos = [];
private array $pages = []; private array $pages = [];
private bool $allTemplates = false; private bool $allTemplates = false;
@@ -38,10 +51,17 @@ class WikiSyncCli extends CliFramework
protected function configure(): void protected function configure(): void
{ {
<<<<<<< HEAD
$this->setDescription('Sync wiki pages from MokoCLI to template repos');
$this->addArgument('--token', 'Gitea API token (required)', '');
$this->addArgument('--org', 'Organization (default: MokoConsulting)', 'MokoConsulting');
$this->addArgument('--source', 'Source repo (default: MokoCLI)', 'MokoCLI');
=======
$this->setDescription('Sync wiki pages from mokoplatform to template repos'); $this->setDescription('Sync wiki pages from mokoplatform to template repos');
$this->addArgument('--token', 'Gitea API token (required)', ''); $this->addArgument('--token', 'Gitea API token (required)', '');
$this->addArgument('--org', 'Organization (default: MokoConsulting)', 'MokoConsulting'); $this->addArgument('--org', 'Organization (default: MokoConsulting)', 'MokoConsulting');
$this->addArgument('--source', 'Source repo (default: mokoplatform)', 'mokoplatform'); $this->addArgument('--source', 'Source repo (default: mokoplatform)', 'mokoplatform');
>>>>>>> main
$this->addArgument('--target', 'Target repo (can repeat)', ''); $this->addArgument('--target', 'Target repo (can repeat)', '');
$this->addArgument('--page', 'Page to sync (can repeat)', ''); $this->addArgument('--page', 'Page to sync (can repeat)', '');
$this->addArgument('--all-standards', 'Sync all UPPERCASE standards pages', false); $this->addArgument('--all-standards', 'Sync all UPPERCASE standards pages', false);
+8 -4
View File
@@ -6,11 +6,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
* DEFGROUP: moko-platform.CLI * DEFGROUP: MokoCLI.CLI
* INGROUP: moko-platform * INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /cli/workflow_sync.php * PATH: /cli/workflow_sync.php
* VERSION: 09.32.01 <<<<<<< HEAD
* VERSION: 09.25.05
=======
* VERSION: 09.32.00
>>>>>>> main
* BRIEF: Sync workflows from Generic platform templates live repos based on manifest.platform * BRIEF: Sync workflows from Generic platform templates live repos based on manifest.platform
*/ */
+10
View File
@@ -1,6 +1,11 @@
{ {
<<<<<<< HEAD
"name": "mokoconsulting-tech/mokocli",
"description": "MokoCLI Enterprise API \u2014 PHP implementation",
=======
"name": "mokoconsulting-tech/enterprise", "name": "mokoconsulting-tech/enterprise",
"description": "mokoplatform Enterprise API \u2014 PHP implementation", "description": "mokoplatform Enterprise API \u2014 PHP implementation",
>>>>>>> main
"type": "library", "type": "library",
"version": "09.23.00", "version": "09.23.00",
"license": "GPL-3.0-or-later", "license": "GPL-3.0-or-later",
@@ -50,7 +55,12 @@
"lib/Enterprise/CliFramework.php" "lib/Enterprise/CliFramework.php"
], ],
"files": [ "files": [
<<<<<<< HEAD
"src/functions.php",
"src/aliases.php"
=======
"source/functions.php" "source/functions.php"
>>>>>>> main
] ]
}, },
"archive": { "archive": {
+9 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Scripts.Deploy
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /deploy/backup-before-deploy.php
* VERSION: 09.25.05
=======
* DEFGROUP: MokoPlatform.Scripts.Deploy * DEFGROUP: MokoPlatform.Scripts.Deploy
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /deploy/backup-before-deploy.php * PATH: /deploy/backup-before-deploy.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Snapshot Joomla directories before deployment for rollback capability * BRIEF: Snapshot Joomla directories before deployment for rollback capability
*/ */
+9 -1
View File
@@ -8,11 +8,19 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Scripts.Deploy
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
* PATH: /deploy/deploy-dolibarr.php
* VERSION: 09.25.05
=======
* DEFGROUP: MokoPlatform.Scripts.Deploy * DEFGROUP: MokoPlatform.Scripts.Deploy
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
* PATH: /deploy/deploy-dolibarr.php * PATH: /deploy/deploy-dolibarr.php
* VERSION: 09.32.01 * VERSION: 09.32.00
>>>>>>> main
* BRIEF: Deploy Dolibarr module files to a remote server via SFTP/rsync * BRIEF: Deploy Dolibarr module files to a remote server via SFTP/rsync
*/ */
+6
View File
@@ -8,9 +8,15 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* FILE INFORMATION * FILE INFORMATION
<<<<<<< HEAD
* DEFGROUP: MokoCLI.Scripts.Deploy
* INGROUP: MokoCLI
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokocli
=======
* DEFGROUP: MokoPlatform.Scripts.Deploy * DEFGROUP: MokoPlatform.Scripts.Deploy
* INGROUP: MokoPlatform * INGROUP: MokoPlatform
* REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform * REPO: https://git.mokoconsulting.tech/MokoConsulting/mokoplatform
>>>>>>> main
* PATH: /deploy/deploy-joomla.php * PATH: /deploy/deploy-joomla.php
* BRIEF: Smart Joomla deploy routes files to correct Joomla directories based on XML manifest * BRIEF: Smart Joomla deploy routes files to correct Joomla directories based on XML manifest
* *

Some files were not shown because too many files have changed in this diff Show More