From 81bf7a838c91da51981aff6029df046be0a607b9 Mon Sep 17 00:00:00 2001 From: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com> Date: Fri, 1 Mar 2024 11:33:00 -0800 Subject: [PATCH] Only require acknowledgments rebuild in gh lint action --- .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 231ecda780..54c7a6a5d1 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 c30a8fcb64..65e61706bc 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() {