'use strict'; const jsonfile = require('jsonfile'); const TEST_BUILD = process.env.TEST_BUILD; // set true if you would like to test on your local machince // electron-builder security override. // Need if wanna create test release build from PR process.env.PUBLISH_FOR_PULL_REQUEST = TEST_BUILD; if (!process.env.CI && !TEST_BUILD) { console.error('Create release only on CI server'); process.exit(1); } let branchName = ''; let pullRequestNr = ''; let gitTag = ''; let repoName = ''; if (process.env.TRAVIS) { branchName = process.env.TRAVIS_BRANCH; pullRequestNr = process.env.TRAVIS_PULL_REQUEST; gitTag = process.env.TRAVIS_TAG; repoName = process.env.TRAVIS_REPO_SLUG; } else if (process.env.APPVEYOR) { branchName = process.env.APPVEYOR_REPO_BRANCH; pullRequestNr = process.env.APPVEYOR_PULL_REQUEST_NUMBER; gitTag = process.env.APPVEYOR_REPO_TAG_NAME; repoName = process.env.APPVEYOR_REPO_NAME; } console.log({ branchName, pullRequestNr, gitTag, repoName }); const isReleaseCommit = TEST_BUILD || branchName === gitTag && repoName === 'UltimateHackingKeyboard/agent'; if (!isReleaseCommit) { console.log('It is not a release task. Skipping publish.'); process.exit(0) } const path = require('path'); const builder = require("electron-builder"); const Platform = builder.Platform; const electron_build_folder = path.join(__dirname, '../packages/uhk-agent/dist'); let sha = ''; if (process.env.TRAVIS) { sha = process.env.TRAVIS_COMMIT; } else if (process.env.APPVEYOR) { sha = process.env.APPVEYOR_REPO_COMMIT; } let target = ''; let artifactName = 'UHK.Agent-${version}-${os}'; let extraResources = []; if (process.platform === 'darwin') { target = Platform.MAC.createTarget(); artifactName += '.${ext}'; } else if (process.platform === 'win32') { target = Platform.WINDOWS.createTarget(); // TODO: If all HID API test success then remove zadic extra resources extraResources.push(`rules/zadic-ia32.exe`); extraResources.push(`rules/zadic-x64.exe`); artifactName += '-${arch}.${ext}'; extraResources.push(`rules/zadic-${process.arch}.exe`); } else if (process.platform === 'linux') { target = Platform.LINUX.createTarget(); artifactName += '.${ext}'; extraResources.push('rules/setup-rules.sh'); extraResources.push('rules/50-uhk60.rules'); } else { console.error(`I dunno how to publish a release for ${process.platform} :(`); process.exit(1); } if (process.platform === 'darwin') { // TODO: Remove comment when macOS certificates boughted and exported //require('./setup-macos-keychain').registerKeyChain(); } let version = ''; if (TEST_BUILD || gitTag) { const jsonVersion = require('../package.json').version; version = gitTag; updateVersionNumberIn2rndPackageJson(jsonVersion); builder.build({ dir: TEST_BUILD, targets: target, appMetadata: { main: 'electron-main.js', name: 'UHK Agent', author: { name: 'Ultimate Gadget Laboratories' }, version: jsonVersion }, config: { directories: { app: electron_build_folder }, appId: 'com.ultimategadgetlabs.uhk.agent', productName: 'UHK Agent', mac: { category: 'public.app-category.utilities' }, win: { extraResources }, linux: { extraResources }, publish: 'github', artifactName, files: [ '**/*' ] }, }) .then(() => { console.log('Packing success.'); }) .catch((error) => { console.error(`${error}`); process.exit(1); }) } else { console.log('No git tag'); // TODO: Need it? version = sha.substr(0, 8); process.exit(1); } function updateVersionNumberIn2rndPackageJson(version) { const jsonPath = path.join(__dirname,'../packages/uhk-agent/dist/package.json'); const json = require(jsonPath); json.version = version; jsonfile.writeFileSync(jsonPath, json, {spaces: 2}) }