tutanota/buildSrc/DesktopBuilder.js

68 lines
2.2 KiB
JavaScript
Raw Normal View History

2018-09-24 11:56:41 +02:00
const Promise = require('bluebird')
2018-10-09 11:56:40 +02:00
const Builder = require('./Builder.js').Builder
2018-09-24 11:56:41 +02:00
const fs = Promise.promisifyAll(require("fs-extra"))
const path = require("path")
2018-10-12 13:36:59 +02:00
function build(dirname, version, targets, targetUrl, updateUrl, nameSuffix) {
2018-10-02 16:19:03 +02:00
const targetString = Object.keys(targets)
.filter(k => typeof targets[k] !== "undefined")
.join(" ")
console.log("Building desktop client for v" + version + " (" + targetString + ")...")
const updateSubDir = "desktop" + nameSuffix
const distDir = path.join(dirname, '/build/dist/')
2018-09-24 11:56:41 +02:00
console.log("Updating config...")
const content = require('./electron-package-json-template')(
nameSuffix,
version,
updateUrl,
path.join(dirname, "/resources/desktop-icons/desktop-icon.png")
)
let writeConfig = fs.writeFileAsync("./build/dist/package.json", JSON.stringify(content), 'utf-8')
//prepare files
return writeConfig
.then(() => {
return fs.removeAsync(path.join(distDir, "..", updateSubDir))
})
.then(() => {
return new Builder(dirname, distDir)
.build(['src/desktop'], false)
})
.then(() => {
console.log("Starting installer build...")
//package for linux, win, mac
const builder = require("electron-builder")
return builder.build({
_: ['build'],
win: targets.win,
mac: targets.mac,
linux: targets.linux,
p: 'always',
project: distDir
})
})
.then(() => {
console.log("Move output to /build/" + updateSubDir + "/...")
return Promise.all(
fs.readdirSync(path.join(distDir, '/installers'))
.filter((file => file.startsWith(content.name) || file.endsWith('.yml')))
.map(file => fs.moveAsync(
path.join(distDir, '/installers/', file),
path.join(distDir, `../${updateSubDir}`, file)
)
)
).then(() => Promise.all([
fs.removeAsync(path.join(distDir, '/installers/')),
fs.removeAsync(path.join(distDir, '/node_modules/')),
fs.removeAsync(path.join(distDir, '/cache.json')),
fs.removeAsync(path.join(distDir, '/package.json')),
fs.removeAsync(path.join(distDir, '/package-lock.json')),
fs.removeAsync(path.join(distDir, '/src/')),
]))
})
2018-09-24 11:56:41 +02:00
}
module.exports = {
2018-10-01 09:28:08 +02:00
build
2018-09-24 11:56:41 +02:00
}