blob: 040b634a69f659e35f78ce0198c128eb1c6e6e08 [file] [log] [blame]
#!/usr/bin/env node
/**
*
* Copyright (c) 2020 Silicon Labs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const scriptUtil = require('./script-util.js')
//workaround: executeCmd()/spawn() fails silently without complaining about missing path to electron
process.env.PATH = process.env.PATH + ':/usr/local/bin/'
let startTime = process.hrtime.bigint()
let args = process.argv.slice(2)
scriptUtil
.stampVersion()
.then(() => scriptUtil.rebuildSpaIfNeeded())
.then(() => scriptUtil.rebuildBackendIfNeeded())
.then(() => {
let plat = process.platform
let executable
let main
let extraArgs = []
switch (args[0]) {
case 'selfCheck':
case 'generate':
case 'server':
case 'stop':
case 'status':
case 'analyze':
case 'regenerateSdk':
executable = 'node'
main = scriptUtil.mainPath(false)
break
case 'convert':
executable = 'node'
main = scriptUtil.mainPath(false)
extraArgs = ['--noUi', '--noServer', '--noZapFileLog']
break
default:
executable = 'electron'
main = scriptUtil.mainPath(true)
break
}
if (args.includes('--version')) {
executable = 'node'
main = scriptUtil.mainPath(false)
}
let cmdArgs = [executable]
if (executable == 'node') {
cmdArgs.push('--unhandled-rejections=strict')
}
if (plat == 'linux' && executable == 'electron') {
// This makes it safer to run on Linux, and latest linux distros broke this.
cmdArgs.push('--disable-seccomp-filter-sandbox')
}
cmdArgs.push(main)
if (process.platform == 'linux' && executable == 'electron') {
if (!process.env.DISPLAY) {
console.log(`
You are on Linux and you are attempting to run zap in UI mode without DISPLAY set.
Please set your DISPLAY environment variable or run zap-start.js with a command that does not require DISPLAY.`)
process.exit(1)
}
}
cmdArgs.push(...extraArgs)
cmdArgs.push(...args)
return scriptUtil.executeCmd(null, 'npx', cmdArgs)
})
.then(() => scriptUtil.doneStamp(startTime))
.then(() => {
process.exit(0)
})
.catch((err) => {
console.log(err)
process.exit(1)
})