162 lines
5.1 KiB
JavaScript
162 lines
5.1 KiB
JavaScript
import path from 'path'
|
|
import { fileURLToPath } from 'url'
|
|
import { Command } from './Command.mjs'
|
|
import { publishSnap } from './publishSnap.mjs'
|
|
import { runCommand } from './runCommand.mjs'
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = path.dirname(__filename)
|
|
|
|
const RootDir = path.join(__dirname, '../../..')
|
|
export const DesktopDir = path.join(__dirname, '../')
|
|
const ScriptsDir = path.join(__dirname)
|
|
|
|
async function buildTargets(targets) {
|
|
console.log('Building targets: ', targets)
|
|
|
|
await runCommand(Command('yarn run lint', DesktopDir))
|
|
await runCommand(Command('yarn clean:build', DesktopDir))
|
|
await runCommand(Command('yarn run build:web', RootDir))
|
|
|
|
for (const group of CompileGroups) {
|
|
let didCompileGroup = false
|
|
for (const target of targets) {
|
|
if (group.targets.includes(target)) {
|
|
if (!didCompileGroup) {
|
|
await runCommand(group.compileCommand)
|
|
didCompileGroup = true
|
|
}
|
|
const buildCommands = BuildCommands[target]
|
|
for (const buildCommand of buildCommands) {
|
|
await runCommand(buildCommand)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
const Targets = {
|
|
Appimage: 'appimage',
|
|
AppimageArm64: 'appimage-arm64',
|
|
AppimageX64: 'appimage-x64',
|
|
AppimageAll: 'appimage-all',
|
|
Deb: 'deb',
|
|
DebArm64: 'deb-arm64',
|
|
Dir: 'dir',
|
|
DirArm64: 'dir-arm64',
|
|
Mac: 'mac',
|
|
MacAll: 'mac-all',
|
|
MacArm64: 'mac-arm64',
|
|
Snap: 'snap',
|
|
SnapArm64: 'snap-arm64',
|
|
Windows: 'windows',
|
|
}
|
|
|
|
const MainstreamTargetGroup = 'mainstream'
|
|
|
|
const TargetGroups = {
|
|
all: [
|
|
Targets.AppimageAll,
|
|
Targets.Deb,
|
|
Targets.DebArm64,
|
|
Targets.Dir,
|
|
Targets.DirArm64,
|
|
Targets.MacAll,
|
|
Targets.Snap,
|
|
Targets.SnapArm64,
|
|
Targets.Windows,
|
|
],
|
|
[MainstreamTargetGroup]: [
|
|
Targets.Windows,
|
|
Targets.AppimageAll,
|
|
Targets.Deb,
|
|
Targets.Snap,
|
|
Targets.DebArm64,
|
|
Targets.MacAll,
|
|
],
|
|
mac: [Targets.MacArm64],
|
|
}
|
|
|
|
const arm64Env = { npm_config_target_arch: 'arm64' }
|
|
|
|
const CompileGroups = [
|
|
{
|
|
compileCommand: Command('yarn run webpack --config desktop.webpack.prod.js', DesktopDir),
|
|
targets: [
|
|
Targets.Appimage,
|
|
Targets.AppimageX64,
|
|
Targets.AppimageArm64,
|
|
Targets.AppimageAll,
|
|
Targets.Mac,
|
|
Targets.MacArm64,
|
|
Targets.MacAll,
|
|
Targets.Dir,
|
|
Targets.Windows,
|
|
],
|
|
},
|
|
{
|
|
compileCommand: Command('yarn run webpack --config desktop.webpack.prod.js --env deb', DesktopDir),
|
|
targets: [Targets.Deb],
|
|
},
|
|
{
|
|
compileCommand: Command('yarn run webpack --config desktop.webpack.prod.js --env deb', DesktopDir, arm64Env),
|
|
targets: [Targets.DebArm64],
|
|
},
|
|
{
|
|
compileCommand: Command('yarn run webpack --config desktop.webpack.prod.js', DesktopDir, arm64Env),
|
|
targets: [Targets.DirArm64],
|
|
},
|
|
{
|
|
compileCommand: Command('yarn run webpack --config desktop.webpack.prod.js --env snap', DesktopDir),
|
|
targets: [Targets.Snap],
|
|
},
|
|
{
|
|
compileCommand: Command('yarn run webpack --config desktop.webpack.prod.js --env snap', DesktopDir, arm64Env),
|
|
targets: [Targets.SnapArm64],
|
|
},
|
|
]
|
|
|
|
const BuildCommands = {
|
|
[Targets.Appimage]: [
|
|
Command('yarn run electron-builder --linux --x64 --ia32 -c.linux.target=AppImage --publish=never', DesktopDir),
|
|
],
|
|
[Targets.AppimageX64]: [
|
|
Command('yarn run electron-builder --linux --x64 -c.linux.target=AppImage --publish=never', DesktopDir),
|
|
],
|
|
[Targets.AppimageArm64]: [
|
|
Command('yarn run electron-builder --linux --arm64 -c.linux.target=AppImage --publish=never', DesktopDir),
|
|
],
|
|
[Targets.AppimageAll]: [
|
|
Command(
|
|
'yarn run electron-builder --linux --arm64 --x64 --ia32 -c.linux.target=AppImage --publish=never',
|
|
DesktopDir,
|
|
),
|
|
],
|
|
[Targets.Deb]: [
|
|
Command('yarn run electron-builder --linux --x64 --ia32 -c.linux.target=deb --publish=never', DesktopDir),
|
|
],
|
|
[Targets.DebArm64]: [
|
|
Command('yarn run electron-builder --linux --arm64 -c.linux.target=deb --publish=never', DesktopDir, {
|
|
npm_config_target_arch: 'arm64',
|
|
USE_SYSTEM_FPM: 'true',
|
|
}),
|
|
],
|
|
[Targets.Mac]: [
|
|
Command('yarn run electron-builder --mac --x64 --publish=never', DesktopDir),
|
|
Command('node scripts/fix-mac-zip', ScriptsDir),
|
|
],
|
|
[Targets.MacArm64]: [Command('yarn run electron-builder --mac --arm64 --publish=never', DesktopDir)],
|
|
[Targets.MacAll]: [Command('yarn run electron-builder --macos --arm64 --x64 --publish=never', DesktopDir)],
|
|
[Targets.Dir]: [Command('yarn run electron-builder --linux --x64 -c.linux.target=dir --publish=never', DesktopDir)],
|
|
[Targets.DirArm64]: [
|
|
Command('yarn run electron-builder --linux --arm64 -c.linux.target=dir --publish=never', DesktopDir, arm64Env),
|
|
],
|
|
[Targets.Snap]: [Command('yarn run electron-builder --linux --x64 -c.linux.target=snap --publish=never', DesktopDir)],
|
|
[Targets.SnapArm64]: [
|
|
Command('yarn run electron-builder --linux --arm64 -c.linux.target=snap --publish=never', DesktopDir, {
|
|
npm_config_target_arch: 'arm64',
|
|
SNAPCRAFT_BUILD_ENVIRONMENT: 'host',
|
|
}),
|
|
],
|
|
[Targets.Windows]: [Command('yarn run electron-builder --windows --x64 --ia32 --publish=never', DesktopDir)],
|
|
} |