From 3b948a982e18b99359a9123d3bf332911f7e647c Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Mon, 24 Jan 2022 14:21:53 +0100 Subject: [PATCH] Move symlinking to script. Require valid semver range Signed-off-by: Johan Haals --- .github/workflows/sync_release-manifest.yml | 9 +------- scripts/assemble-manifest.js | 25 ++++++++++++++++----- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/.github/workflows/sync_release-manifest.yml b/.github/workflows/sync_release-manifest.yml index 48a0cc12ed..e41fc6604a 100644 --- a/.github/workflows/sync_release-manifest.yml +++ b/.github/workflows/sync_release-manifest.yml @@ -23,15 +23,8 @@ jobs: git config --global user.name 'Github versions workflow' - name: Create release run: | - node scripts/assemble-manifest.js ${{ github.event.inputs.version }} versions/v1/releases + node scripts/assemble-manifest.js ${{ github.event.inputs.version }} cd versions - if [[ "${{ github.event.inputs.version }}" == *"next"* ]]; then - echo Updating next tag - rm -f v1/tags/next && ln -s ../releases/${{ github.event.inputs.version }} v1/tags/next - else - echo Updating main tag - rm -f v1/tags/main && ln -s ../releases/${{ github.event.inputs.version }} v1/tags/main - fi git add . git commit -am "${{ github.event.inputs.version }}" git push diff --git a/scripts/assemble-manifest.js b/scripts/assemble-manifest.js index 9d16d83aa0..09ba3e9329 100755 --- a/scripts/assemble-manifest.js +++ b/scripts/assemble-manifest.js @@ -16,17 +16,21 @@ * limitations under the License. */ +const semver = require('semver'); const fs = require('fs-extra'); const { getPackages } = require('@manypkg/get-packages'); const path = require('path'); async function main() { - const [script, version, outputPath] = process.argv.slice(1); - if (!version || !outputPath) { - throw new Error(`Argument must be ${script} `); + const [script, version] = process.argv.slice(1); + if (!version) { + throw new Error(`Argument must be ${script} `); + } + if (!semver.valid(version)) { + throw new Error(`version '${version}' must be a valid semver`); } - const manifestDir = path.resolve(outputPath, version); + const manifestDir = path.resolve('versions', 'v1', 'releases', version); if (await fs.pathExists(manifestDir)) { throw new Error( `Release manifest path for version ${version} already exists`, @@ -49,9 +53,20 @@ async function main() { await fs.mkdir(manifestDir); await fs.writeJSON( path.resolve(manifestDir, 'manifest.json'), - { packages: versions }, + { releaseVersion: version, packages: versions }, { spaces: 2 }, ); + const tag = version.includes('next') ? 'next' : 'main'; + const tagPath = path.resolve('versions', 'v1', 'tags', tag); + const currentTag = await fs.readJSON(path.resolve(tagPath, 'manifest.json')); + if (semver.gt(currentTag.releaseVersion, version)) { + console.log( + `Skipping update of ${tagPath} since current current ${tag} version is ${currentTag.releaseVersion}`, + ); + return; + } + await fs.remove(tagPath); + await fs.ensureSymlink(path.join('..', 'releases', version), tagPath); } main().catch(error => {