From 3f8206e66f8a1e751c860838502834b26963ebdb Mon Sep 17 00:00:00 2001 From: automated-signal <37887102+automated-signal@users.noreply.github.com> Date: Fri, 1 Mar 2024 14:33:18 -0600 Subject: [PATCH] Only require acknowledgments rebuild in gh lint action Co-authored-by: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com> --- .github/workflows/ci.yml | 6 ++++++ scripts/generate-acknowledgments.js | 33 +++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ce0d5ab4c79..b09c46f3975 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,6 +50,12 @@ jobs: - run: yarn lint - run: yarn lint-deps - run: yarn lint-license-comments + + - name: Check acknowledgments file is up to date + run: yarn build:acknowledgments + env: + REQUIRE_SIGNAL_LIB_FILES: 1 + - run: git diff --exit-code - name: Update cached .eslintcache and tsconfig.tsbuildinfo diff --git a/scripts/generate-acknowledgments.js b/scripts/generate-acknowledgments.js index c30a8fcb643..65e61706bc5 100644 --- a/scripts/generate-acknowledgments.js +++ b/scripts/generate-acknowledgments.js @@ -7,6 +7,11 @@ const { join } = require('path'); const pMap = require('p-map'); const prettier = require('prettier'); +// During development, you might use local versions of dependencies which are missing +// acknowledgment files. In this case we'll skip rebuilding the acknowledgment files. +// Enable this flag to throw an error. +const REQUIRE_SIGNAL_LIB_FILES = Boolean(process.env.REQUIRE_SIGNAL_LIB_FILES); + const { dependencies = {}, optionalDependencies = {}, @@ -76,12 +81,28 @@ async function getMarkdownForSignalLib(dependencyName) { 'dist', 'acknowledgments.md' ); - const licenseBody = (await fs.promises.readFile(licenseFilePath, 'utf8')) - .replace(/^# Acknowledgments/, '') - .trim(); - return [`# Acknowledgements for ${dependencyName}`, '', licenseBody].join( - '\n' - ); + + let licenseBody; + try { + licenseBody = await fs.promises.readFile(licenseFilePath, 'utf8'); + } catch (err) { + if (err) { + if (err.code === 'ENOENT' && !REQUIRE_SIGNAL_LIB_FILES) { + console.warn( + `Missing acknowledgments file for ${dependencyName}. Skipping generation of acknowledgments.` + ); + process.exit(0); + } + + throw err; + } + } + + return [ + `# Acknowledgements for ${dependencyName}`, + '', + licenseBody.replace(/^# Acknowledgments/, '').trim(), + ].join('\n'); } async function main() {