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 + ")...")
|
2018-10-12 10:51:48 +02:00
|
|
|
const updateSubDir = "desktop" + nameSuffix
|
2018-10-11 14:59:21 +02:00
|
|
|
const distDir = path.join(dirname, '/build/dist/')
|
2018-09-24 11:56:41 +02:00
|
|
|
|
2018-10-02 14:46:53 +02:00
|
|
|
console.log("Updating config...")
|
2018-10-11 14:59:21 +02:00
|
|
|
const content = require('./electron-package-json-template')(
|
2018-10-12 12:22:39 +02:00
|
|
|
nameSuffix,
|
2018-10-11 14:59:21 +02:00
|
|
|
version,
|
|
|
|
|
updateUrl,
|
|
|
|
|
path.join(dirname, "/resources/desktop-icons/desktop-icon.png")
|
|
|
|
|
)
|
|
|
|
|
let writeConfig = fs.writeFileAsync("./build/dist/package.json", JSON.stringify(content), 'utf-8')
|
2018-10-02 14:46:53 +02:00
|
|
|
|
2018-09-24 15:29:24 +02:00
|
|
|
//prepare files
|
2018-10-11 14:59:21 +02:00
|
|
|
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(() => {
|
2018-10-12 12:22:39 +02:00
|
|
|
console.log("Move output to /build/" + updateSubDir + "/...")
|
2018-10-11 14:59:21 +02:00
|
|
|
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([
|
2018-10-11 16:12:44 +02:00
|
|
|
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')),
|
2018-10-11 14:59:21 +02:00
|
|
|
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
|
|
|
}
|