.gitHub/workflows: validate that the directories exist

This commit is contained in:
Guillaume Ballet 2025-11-26 21:29:55 +01:00 committed by GitHub
parent 3bbf5f5b6a
commit 0183ffa8ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,4 +1,4 @@
name: PR Format Validation name: PR Format Validatio
on: on:
pull_request: pull_request:
@ -8,10 +8,15 @@ jobs:
validate-pr: validate-pr:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Check PR Title Format - name: Check PR Title Format
uses: actions/github-script@v7 uses: actions/github-script@v7
with: with:
script: | script: |
const fs = require('fs');
const path = require('path');
const prTitle = context.payload.pull_request.title; const prTitle = context.payload.pull_request.title;
const titleRegex = /^([\w\s,{}/.]+): .+/; const titleRegex = /^([\w\s,{}/.]+): .+/;
@ -19,5 +24,21 @@ jobs:
core.setFailed(`PR title "${prTitle}" does not match required format: directory, ...: description`); core.setFailed(`PR title "${prTitle}" does not match required format: directory, ...: description`);
return; return;
} }
const match = prTitle.match(titleRegex);
const dirPart = match[1];
const directories = dirPart.split(',').map(d => d.trim());
const missingDirs = [];
for (const dir of directories) {
const fullPath = path.join(process.env.GITHUB_WORKSPACE, dir);
if (!fs.existsSync(fullPath)) {
missingDirs.push(dir);
}
}
if (missingDirs.length > 0) {
core.setFailed(`The following directories in the PR title do not exist: ${missingDirs.join(', ')}`);
return;
}
console.log('✅ PR title format is valid'); console.log('✅ PR title format is valid');