diff --git a/.github/workflows/release-matrix.yml b/.github/workflows/release-matrix.yml index d94e2c1..ba313dc 100644 --- a/.github/workflows/release-matrix.yml +++ b/.github/workflows/release-matrix.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: build_type: [ ubuntu, macos, windows ] - gui: [ true, false ] + gui: [ gui, cli ] runs-on: ${{ matrix.build_type }}-latest steps: - name: Checkout @@ -38,8 +38,8 @@ jobs: uses: actions/upload-release-asset@v1 with: upload_url: ${{ github.event.release.upload_url }} - asset_name: ${{ env.PACKAGE_NAME }}-${{ env.PACKAGE_VERSION }}-${{ matrix.build_type }}.7z - asset_path: ./lib/_builds/${{ env.PACKAGE_NAME }}-${{ env.PACKAGE_VERSION }}-${{ matrix.build_type }}64.7z + asset_name: multi-downloader-nx-${{ matrix.build_type }}-{{ matrix.gui }}.7z + asset_path: ./lib/_builds/multi-downloader-nx-${{ matrix.build_type }}64-{{ matrix.gui }}.7z asset_content_type: application/x-7z-compressed env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/modules/build.ts b/modules/build.ts index 5d16437..6145943 100644 --- a/modules/build.ts +++ b/modules/build.ts @@ -4,6 +4,7 @@ import pkg from '../package.json'; import modulesCleanup from 'removeNPMAbsolutePaths'; import { exec } from 'pkg'; import { execSync } from 'child_process'; +import { sep } from 'path'; const buildsDir = './_builds'; const nodeVer = 'node16-'; @@ -13,19 +14,32 @@ const nodeVer = 'node16-'; const isGUI = process.argv[3] === 'true'; if (isGUI) { - buildGUI(); + buildGUI(buildType); } else { buildBinary(buildType); } })(); -async function buildGUI() { +async function buildGUI(buildType: string) { execSync('npx electron-forge make'); + const path = ['out', 'make']; + const makerDir = fs.readdirSync(path.join(sep)); + if (makerDir.length !== 1) + throw new Error(`Illegal state ${makerDir.join(sep)}`); + path.push(makerDir[0]); + const arch = fs.readdirSync(path.join(sep)); + if (arch.length !== 1) + throw new Error(`Illegal state ${arch.join(sep)}`); + path.push(arch[0]); + execSync(`7z a -t7z "../../../../${buildsDir}/multi-downloader-nx-${buildType}-gui.7z" .`,{ + stdio:[0,1,2], + cwd: path.join(sep) + }); } // main async function buildBinary(buildType: string) { - const buildStr = `${pkg.name}-${pkg.version}`; + const buildStr = `multi-downloader-nx`; const acceptableBuilds = ['windows64','ubuntu64','macos64']; if(!acceptableBuilds.includes(buildType)){ console.error('[ERROR] unknown build type!'); @@ -35,7 +49,7 @@ async function buildBinary(buildType: string) { if(!fs.existsSync(buildsDir)){ fs.mkdirSync(buildsDir); } - const buildFull = `${buildStr}-${buildType}`; + const buildFull = `${buildStr}-${buildType}-cli`; const buildDir = `${buildsDir}/${buildFull}`; if(fs.existsSync(buildDir)){ fs.removeSync(buildDir); diff --git a/package.json b/package.json index 5ff1b61..9c725e4 100644 --- a/package.json +++ b/package.json @@ -76,18 +76,18 @@ "start": "cd lib && electron-forge start", "docs": "ts-node modules/build-docs.ts", "tsc": "ts-node tsc.ts", - "prebuild-windows-false": "npm run tsc false false", - "prebuild-ubuntu-false": "npm run tsc false false", - "prebuild-macos-false": "npm run tsc false false", - "build-windows-false": "cd lib && node modules/build windows64", - "build-ubuntu-false": "cd lib && node modules/build ubuntu64", - "build-macos-false": "cd lib && node modules/build macos64", - "prebuild-windows-true": "npm run tsc", - "prebuild-ubuntu-true": "npm run tsc", - "prebuild-macos-true": "npm run tsc", - "build-windows-true": "cd lib && node modules/build notNeeded true", - "build-ubuntu-true": "cd lib && node modules/build notNeeded true", - "build-macos-true": "cd lib && node modules/build notNeeded true", + "prebuild-windows-cli": "npm run tsc false false", + "prebuild-ubuntu-cli": "npm run tsc false false", + "prebuild-macos-cli": "npm run tsc false false", + "build-windows-cli": "cd lib && node modules/build windows64", + "build-ubuntu-cli": "cd lib && node modules/build ubuntu64", + "build-macos-cli": "cd lib && node modules/build macos64", + "prebuild-windows-gui": "npm run tsc", + "prebuild-ubuntu-gui": "npm run tsc", + "prebuild-macos-gui": "npm run tsc", + "build-windows-gui": "cd lib && node modules/build windows64 true", + "build-ubuntu-gui": "cd lib && node modules/build ubuntu64 true", + "build-macos-gui": "cd lib && node modules/build macos64 true", "eslint": "eslint *.js modules", "eslint-fix": "eslint *.js modules --fix", "pretest": "npm run tsc",