From 52ba4b4da3d799eb4aa21b6ebaa7a2246dc67014 Mon Sep 17 00:00:00 2001 From: Jing Teng <jing.teng@silabs.com> Date: Fri, 4 Mar 2022 16:27:25 -0500 Subject: [PATCH] ensure apack.json is packaged within linux/mac/win .zip files + unit test. --- .github/workflows/release.yml | 44 ++++++++++++++----- package.json | 3 +- .../{pack-apack.js => pack-apack-mac.js} | 7 +-- src-script/pack-apack-win-linux.js | 18 ++++++++ 4 files changed, 55 insertions(+), 17 deletions(-) rename src-script/{pack-apack.js => pack-apack-mac.js} (81%) create mode 100644 src-script/pack-apack-win-linux.js diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9478f0e5..b14d542e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -98,34 +98,58 @@ jobs: id: linux_apack_setup if: startsWith(matrix.os, 'ubuntu') run: | - echo "::set-output name=linux::$(./node_modules/7zip-bin/linux/x64/7za l ./dist/*linux.zip | grep ' apack.json')" - - name: Verify apack.json exists in Linux .zip package + echo "::set-output name=linuxBaseDir::$(./node_modules/7zip-bin/linux/x64/7za l ./dist/*linux.zip | grep apack.json)" + echo "::set-output name=linuxAsarDir::$(npx asar l ./dist/linux-unpacked/resources/app.asar | grep apack.json)" + - name: Verify apack.json exists in Linux package .zip package uses: nick-fields/assert-action@v1 if: startsWith(matrix.os, 'ubuntu') with: - expected: ' apack.json' - actual: ${{ steps.linux_apack_setup.outputs.linux }} + expected: 'apack.json' + actual: ${{ steps.linux_apack_setup.outputs.linuxBaseDir }} + comparison: contains + - name: Verify apack.json exists in Linux package .zip package's app.asar archive + uses: nick-fields/assert-action@v1 + if: startsWith(matrix.os, 'ubuntu') + with: + expected: 'apack.json' + actual: ${{ steps.linux_apack_setup.outputs.linuxAsarDir }} comparison: contains - name: Setup macOS/Windows package for adapter pack test id: nonlinux_apack_setup if: startsWith(matrix.os, 'macos') run: | - echo "::set-output name=win::$(./node_modules/7zip-bin/mac/x64/7za l dist/*win.zip | grep ' apack.json')" - echo "::set-output name=mac::$(./node_modules/7zip-bin/mac/x64/7za l dist/*mac.zip | grep ' apack.json')" + echo "::set-output name=winBaseDir::$(./node_modules/7zip-bin/mac/x64/7za l dist/*win.zip | grep apack.json)" + echo "::set-output name=winAsarDir::$(npx asar l ./dist/win-unpacked/resources/app.asar | grep apack.json)" + echo "::set-output name=macBaseDir::$(./node_modules/7zip-bin/mac/x64/7za l dist/*mac.zip | grep apack.json)" + echo "::set-output name=macAsarDir::$(npx asar l ./dist/mac/zap.app/Contents/Resources/app.asar | grep apack.json)" - name: Verify apack.json exists in Windows .zip package uses: nick-fields/assert-action@v1.1.0 if: startsWith(matrix.os, 'macos') with: - expected: ' apack.json' - actual: ${{ steps.nonlinux_apack_setup.outputs.win }} + expected: 'apack.json' + actual: ${{ steps.nonlinux_apack_setup.outputs.winBaseDir }} + comparison: contains + - name: Verify apack.json exists in Windows .zip package's app.asar archive + uses: nick-fields/assert-action@v1.1.0 + if: startsWith(matrix.os, 'macos') + with: + expected: 'apack.json' + actual: ${{ steps.nonlinux_apack_setup.outputs.winAsarDir }} comparison: contains - name: Verify apack.json exists in macOS .zip package uses: nick-fields/assert-action@v1.1.0 if: startsWith(matrix.os, 'macos') with: - expected: ' apack.json' - actual: ${{ steps.nonlinux_apack_setup.outputs.mac }} + expected: 'apack.json' + actual: ${{ steps.nonlinux_apack_setup.outputs.macBaseDir }} + comparison: contains + - name: Verify apack.json exists in macOS .zip package's app.asar archive + uses: nick-fields/assert-action@v1.1.0 + if: startsWith(matrix.os, 'macos') + with: + expected: 'apack.json' + actual: ${{ steps.nonlinux_apack_setup.outputs.macAsarDir }} comparison: contains - name: Archive Windows .zip file diff --git a/package.json b/package.json index 4274e056..e58a129d 100644 --- a/package.json +++ b/package.json @@ -194,7 +194,8 @@ "build": { "appId": "zap.id", "artifactName": "${productName}-${os}.${ext}", - "afterAllArtifactBuild": "./src-script/pack-apack.js", + "afterPack": "./src-script/pack-apack-win-linux.js", + "afterAllArtifactBuild": "./src-script/pack-apack-mac.js", "mac": { "category": "public.app-category.developer-tools", "darkModeSupport": true, diff --git a/src-script/pack-apack.js b/src-script/pack-apack-mac.js similarity index 81% rename from src-script/pack-apack.js rename to src-script/pack-apack-mac.js index a2856cc2..6328aec2 100644 --- a/src-script/pack-apack.js +++ b/src-script/pack-apack-mac.js @@ -6,12 +6,7 @@ const pathTo7zip = sevenBin.path7za exports.default = async function (buildResult) { buildResult?.artifactPaths?.forEach((element) => { - if ( - (element.includes('mac') || - element.includes('win') || - element.includes('linux')) && - element.endsWith('.zip') - ) { + if (element.includes('mac') && element.endsWith('.zip')) { const myStream = Seven.add( element, path.join(buildResult.outDir, '../apack.json'), diff --git a/src-script/pack-apack-win-linux.js b/src-script/pack-apack-win-linux.js new file mode 100644 index 00000000..fe0f590a --- /dev/null +++ b/src-script/pack-apack-win-linux.js @@ -0,0 +1,18 @@ +const scriptUtil = require('./script-util.js') +const path = require('path') + +exports.default = async function (context) { + if ( + context.electronPlatformName === 'win' || + context.electronPlatformName === 'linux' + ) { + return scriptUtil.executeCmd({}, 'npx', [ + 'copyfiles', + '-V', + '-u', + '5', + path.resolve(context.outDir, '../apack.json'), + context.appOutDir, + ]) + } +} -- GitLab