Files
agent/scripts/release.js
Róbert Kiss 2df8f2ea54 Windows set up permission button #261 (#300)
* style(privilege): Fix typo 'excusive' -> 'exclusive'

* style(privilege): remove unused imports

* style(privilege): Fix typo 'initizalized$' -> 'initialized$'

* feat(log): Add application wide logger and error handler

It is help to debug electron install app on different device

* feat(privilege): Add windows USB driver installation

* build: I need the windows installer to test the app on windows

* fix(privilege): change wdi-simpler installer to zadic

* feat(log): change log level to debug in renderer process

* chore: Add author in package.json

* feat(privilege): Add privilege setter file as extraResource

* fix(log): Allowed transport level change only in main process

* fix(privilege): Fix app path calculation

* fix(privilege): Take the scriptPath between double quote

* build: revert the appveyor settings

* refactor(privilege): Extract vendor ID, product ID and MAX_PAYLOAD_SIZE into constants file

* refactor(privilege): Add both 32 and 64 bit zadics to extraResource of the installer

* feat(device): Add HID API communication protocol

* build: Fix npm install process

* build: Fix npm install process v2

* ci: Add libudev-dev as travis apt dependencies

* ci: Merge travis apt packages

* ci: remove node-hid from build:usb

* ci: try to fix linux build

* ci: node-hid use git repo

* ci: Add libusb-1.0-0-dev to travis apt dependency

* feat(device): Use logging service when communicate with the device

* build: create test build

* build: PUBLISH_FOR_PULL_REQUEST override

* build: revert TEST_BUILD to false

* build: node-hid use package version instead of git repo

* refactor: remove unused device store files from PR

* ci: Manage test build from environment variable

* fix(privilege): Set rules files dir base on dev or prod mode

* fix(log): Extract nested properties of the logged object

* feat(log): use util.inspect in logger service

* build: upgrade @types/node-hid -> 0.5.2

* fix(device): Add extra logging when try to open device.

* fix(device): log device description and not the device

* fix(device): add win specific write

* fix(device): add report id as first byte

* style(privilege): Reformat else and comment in privilege-checker component

* fix(privilege): Comment out windows branch
2017-07-02 20:33:28 +02:00

147 lines
4.2 KiB
JavaScript

'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 fs = require('fs-extra');
const cp = require('child_process');
const path = require('path');
const builder = require("electron-builder");
const Platform = builder.Platform;
const electron_build_folder = path.join(__dirname, '../electron/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,'../electron/dist/package.json');
const json = require(jsonPath);
json.version = version;
jsonfile.writeFileSync(jsonPath, json, {spaces: 2})
}