1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/usr/bin/env node
- const version = require('./package').version
- const fs = require('fs')
- const os = require('os')
- const path = require('path')
- const extract = require('extract-zip')
- const { downloadArtifact } = require('@electron/get')
- if (process.env.ELECTRON_SKIP_BINARY_DOWNLOAD) {
- process.exit(0)
- }
- const platformPath = getPlatformPath()
- if (isInstalled()) {
- process.exit(0)
- }
- // downloads if not cached
- downloadArtifact({
- version,
- artifactName: 'electron',
- force: process.env.force_no_cache === 'true',
- cacheRoot: process.env.electron_config_cache,
- platform: process.env.npm_config_platform || process.platform,
- arch: process.env.npm_config_arch || process.arch
- }).then(extractFile).catch(err => {
- console.error(err.stack)
- process.exit(1)
- })
- function isInstalled () {
- try {
- if (fs.readFileSync(path.join(__dirname, 'dist', 'version'), 'utf-8').replace(/^v/, '') !== version) {
- return false
- }
- if (fs.readFileSync(path.join(__dirname, 'path.txt'), 'utf-8') !== platformPath) {
- return false
- }
- } catch (ignored) {
- return false
- }
-
- const electronPath = process.env.ELECTRON_OVERRIDE_DIST_PATH || path.join(__dirname, 'dist', platformPath)
-
- return fs.existsSync(electronPath)
- }
- // unzips and makes path.txt point at the correct executable
- function extractFile (zipPath) {
- return new Promise((resolve, reject) => {
- extract(zipPath, { dir: path.join(__dirname, 'dist') }, err => {
- if (err) return reject(err)
- fs.writeFile(path.join(__dirname, 'path.txt'), platformPath, err => {
- if (err) return reject(err)
- resolve()
- })
- })
- })
- }
- function getPlatformPath () {
- const platform = process.env.npm_config_platform || os.platform()
- switch (platform) {
- case 'mas':
- case 'darwin':
- return 'Electron.app/Contents/MacOS/Electron'
- case 'freebsd':
- case 'openbsd':
- case 'linux':
- return 'electron'
- case 'win32':
- return 'electron.exe'
- default:
- throw new Error('Electron builds are not available on platform: ' + platform)
- }
- }
|