# Gate every pull request into `main` and `edge`. # # RunicNPC cannot be compiled by CI: it is deployed as SOURCE and built by Oxide # or Carbon against game assemblies that exist only on a Rust server, so a build # job is not available at any price. # # What is available is a reader, and the mistakes worth reading for are the ones # both frameworks make silent. Hooks, chat commands and `Call` targets bind by # name through reflection, with no compile-time check and no warning when a name # matches nothing. `scripts/checkPlugin.js` asks, dependency-free: # # • every hook is listed in `ExpectedHooks`, so `rnpc.status` can report it; # • every hook is void unless answering is written down with a reason; # • every chat command has the signature the frameworks bind; # • every `RunicNpc_*` API call is one Oxide's `Call` can reach; # • `ApiVersion`, `// Requires:` and `[Info]` agree with plugin.toml, which is # what the release copies into the manifest the installer reads. # # Its own test suite breaks it every way it claims to catch — including the # failure that would make every other case meaningless, a parser that silently # matches nothing. # # Enforcement (one-time, in the Gitea UI): # Repository Settings → Branches → Branch Protection (rules for `main`, `edge`) # • Enable Status Check # • Status check patterns: PR Checks / * # Gitea only lists a context after it has reported once; the glob matches # without the dropdown and keeps matching as jobs are added. name: PR Checks on: pull_request: branches: [main, edge] concurrency: group: pr-checks-${{ github.ref }} cancel-in-progress: true jobs: plugin-checks: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 # No install step: the checks are dependency-free on purpose, which is also # how a contributor runs them. - name: Check the plugin's hooks, API and declarations run: node scripts/checkPlugin.js # Named individually rather than `node --test scripts/`: directory mode is # not portable across the Node versions this project runs on. - name: Test the checker itself run: node --test scripts/checkPlugin.test.js