feat: joomla_metadata_validate CLI command (#257) #258

Merged
jmiller merged 2 commits from feature/257-joomla-metadata-validate into main 2026-06-18 20:55:12 +00:00
Owner

Summary

New CLI command that validates MokoGitea repo metadata against the actual Joomla extension manifest XML to catch update delivery mismatches before production.

What it checks

Field Comparison Severity
package_type metadata vs <extension type> Error
element Derived name vs Joomla convention Error
display_name metadata vs <name> tag Warning
version Base version match (ignores -dev/-rc) Warning
php_minimum metadata vs composer.json Warning
description metadata vs manifest (skips lang keys) Info

Usage

# Local validation
php cli/joomla_metadata_validate.php --path /path/to/repo

# CI mode (exit 1 on errors)
php cli/joomla_metadata_validate.php --path . --ci

# JSON output for workflow parsing
php cli/joomla_metadata_validate.php --path . --ci --json

# Remote mode via API
php cli/joomla_metadata_validate.php --repo MokoSuiteBackup --token $GITEA_TOKEN

Tested against MokoSuiteBackup — all 4 checks pass

Refs #257

## Summary New CLI command that validates MokoGitea repo metadata against the actual Joomla extension manifest XML to catch update delivery mismatches before production. ### What it checks | Field | Comparison | Severity | |-------|-----------|----------| | `package_type` | metadata vs `<extension type>` | Error | | `element` | Derived name vs Joomla convention | Error | | `display_name` | metadata vs `<name>` tag | Warning | | `version` | Base version match (ignores -dev/-rc) | Warning | | `php_minimum` | metadata vs composer.json | Warning | | `description` | metadata vs manifest (skips lang keys) | Info | ### Usage ```bash # Local validation php cli/joomla_metadata_validate.php --path /path/to/repo # CI mode (exit 1 on errors) php cli/joomla_metadata_validate.php --path . --ci # JSON output for workflow parsing php cli/joomla_metadata_validate.php --path . --ci --json # Remote mode via API php cli/joomla_metadata_validate.php --repo MokoSuiteBackup --token $GITEA_TOKEN ``` ### Tested against MokoSuiteBackup — all 4 checks pass Refs #257
jmiller added 2 commits 2026-06-18 20:54:02 +00:00
feat: add joomla_metadata_validate CLI command (#257)
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 / Access control (push) Successful in 1s
Generic: Repo Health / Site Health (push) Has been skipped
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
2a3e733d8c
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
chore(version): auto-bump patch 09.29.01-dev [skip ci]
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
7ac196e4a8
jmiller merged commit 78fa142342 into main 2026-06-18 20:55:12 +00:00
jmiller deleted branch feature/257-joomla-metadata-validate 2026-06-18 20:55:13 +00:00
Sign in to join this conversation.
No Reviewers
No labels
Priority -
Type -
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/mokoplatform#258