Skip to content

Adopt the shared tools console for manifest validation - #15

Merged
admdly merged 3 commits into
mainfrom
manifest-validator-console
Nov 9, 2026
Merged

admdly merged 3 commits into
mainfrom
manifest-validator-console

Conversation

@admdly

@admdly admdly commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Ports tools/validate.php into the same shape FOSSBilling/FOSSBilling now uses for all of its tooling: a FOSSBilling\Tools\Manifest\Validator class and a manifest:validate command behind a shared tools/bin/console (Symfony Console) entry point. This keeps the manifest validator mirror in sync with the restructuring done in FOSSBilling/FOSSBilling, where the bundled copy of these tools moved from a standalone script to the unified tools console package.

What changed

  • tools/validate.php → tools/src/Manifest/Validator.php + tools/src/Manifest/Command/ValidateCommand.php, registered in a new tools/bin/console (with tools/bootstrap.php).
  • tools/composer.json: adds symfony/console + symfony/finder, PSR-4 autoload for FOSSBilling\Tools\, and the shared tooling baseline of PHP ~8.5.0 with a platform pin (the validate workflow already runs PHP 8.5). composer.lock regenerated.
  • .github/workflows/validate.yml now runs tools/bin/console manifest:validate.
  • README updated to reference the new invocation.

Repo-specific rules preserved verbatim

The validator intentionally differs from the FOSSBilling/FOSSBilling copy where the repositories differ, and those differences are kept:

  • Package discovery over root directories (excluding tools and dotdirs).
  • type must be "module" in this repo — this repo only publishes modules.

Follow-ups tracked elsewhere:

  • extensions.fossbilling.org needs to resolve the "Icon Path" from the released package's icon.<ext> file instead of the payload field; until then, newly published revisions gradually lose their directory icon (stored values for existing entries remain).
  • The module-developer manifest documentation (docs.fossbilling.org) should document the <Name>/icon.<ext> convention if it references icon_url.

Port tools/validate.php into the same shape FOSSBilling/FOSSBilling now
uses for its tooling: a FOSSBilling\Tools\Manifest\Validator class plus
a manifest:validate command behind tools/bin/console.

Repo-specific rules are preserved verbatim: package discovery over root
directories (excluding tools and dotdirs), the 'type must be module in
this repo' rule, and the icon_url containment check. The composer
requirements move to the shared tooling baseline (PHP ~8.5, Symfony
Console/Finder 8.1) that the CI workflow already runs on.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 7, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-09T09:37:06.910080Z 917bf25 Manual request
🔒 Security Review ✅ Completed 2026-11-07T18:43:44.058571Z d6c196d PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@admdly

This comment was marked as low quality.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d6c196d089

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tools/validate.php Resolved
schema-deploy.yml still invoked tools/validate.php, which this PR
deletes, so schema deployment on main and workflow_dispatch would exit
1 during the Validate Manifest step and skip the R2 upload. Invoke
tools/bin/console manifest:validate as validate.yml already does.
@admdly

This comment was marked as low quality.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: b2f68e1c28

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Module icons are the shipped file at <Name>/icon.<ext> (svg, png, webp
or avif): the FOSSBilling runtime resolves icons from that file and
ignores any manifest declaration. Remove the icon_url property from
the schema, replace the containment check with the file rule (at most
one icon, no symlinks, absence allowed - mirroring FOSSBilling),
delete the field from the two manifests that carried it, and stop
sending icon_url to the extensions directory payload. The schema is
now identical to the one bundled with FOSSBilling.
@admdly

This comment was marked as low quality.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: 917bf254bb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@admdly
admdly merged commit 448e4c3 into main Nov 9, 2026
3 checks passed
@admdly
admdly deleted the manifest-validator-console branch November 9, 2026 09:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant