Initial commit
Upload local source code to github
This commit is contained in:
116
build-app.js
Normal file
116
build-app.js
Normal file
@@ -0,0 +1,116 @@
|
||||
const { spawn } = require('child_process');
|
||||
const path = require('path');
|
||||
const fs = require('fs/promises');
|
||||
const process = require('process');
|
||||
const packageJson = require('./package.json');
|
||||
|
||||
// Electron builder:
|
||||
const electronBuilderPath = path.join('node_modules', 'electron-builder', 'cli.js');
|
||||
|
||||
// Parse command-line arguments:
|
||||
const supportedPlatforms = ['win', 'mac', 'linux', 'mwl'];
|
||||
const supportedArchitectures = ['x64', 'armv7l', 'arm64', 'ia32', 'universal'];
|
||||
const args = process.argv.slice(2);
|
||||
const carch = args.includes('--arch') ? args[args.indexOf('--arch') + 1] : null;
|
||||
const cplatform = args.includes('--platform') ? args[args.indexOf('--platform') + 1] : null;
|
||||
const pack = args.includes('--pack') || null;
|
||||
|
||||
let platform, arch, build_args;
|
||||
|
||||
//console.log(supportedPlatforms, supportedArchitectures, cplatform, carch);
|
||||
|
||||
// Platform Name:
|
||||
if (cplatform == null) {
|
||||
switch (process.platform) {
|
||||
case "win32":
|
||||
platform = "win";
|
||||
break;
|
||||
case "darwin":
|
||||
platform = "mac";
|
||||
break;
|
||||
case "linux":
|
||||
platform = "linux";
|
||||
break;
|
||||
default:
|
||||
platform = "mwl"; // Build for all
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (!supportedPlatforms.includes(cplatform)) {
|
||||
console.error(`Invalid platform specified. Supported platforms: ${supportedPlatforms.join(', ')}`);
|
||||
process.exit(1);
|
||||
}
|
||||
platform = cplatform;
|
||||
}
|
||||
|
||||
// Platform Arch:
|
||||
if (carch == null) {
|
||||
arch = process.arch === "arm" ? "armv7l" : process.arch;
|
||||
} else {
|
||||
arch = carch;
|
||||
if (!supportedArchitectures.includes(arch)) {
|
||||
console.error(`Invalid arch specified. Supported architectures: ${supportedArchitectures.join(', ')}`);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Generate artifact name:
|
||||
const artifactname = `${packageJson.build.productName}-${packageJson.version}-${platform}-${arch}`;
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
// Additional build arguments: (started wiht --eb-nmehere)
|
||||
const additionalArgs = args.filter((arg, index) => arg.startsWith('--eb-') && index % 2 !== 0);
|
||||
|
||||
// CLI Args:
|
||||
build_args = [
|
||||
electronBuilderPath,
|
||||
`--${platform}`,
|
||||
`--${arch}`,
|
||||
`-c.artifactName="${artifactname}.\${ext}"`,
|
||||
];
|
||||
|
||||
// If additional args are present:
|
||||
if (additionalArgs.length > 0) {
|
||||
build_args.push(...additionalArgs);
|
||||
}
|
||||
|
||||
// If pack is true:
|
||||
if (pack) {
|
||||
build_args.push(`--dir`);
|
||||
}
|
||||
|
||||
// Make CLI:
|
||||
const cli = `node ${build_args.join(' ')}`;
|
||||
|
||||
console.info(`CLI: ${cli}`);
|
||||
console.info(`Building ${artifactname}`);
|
||||
const process = spawn(cli, { shell: true });
|
||||
|
||||
// Log stdout as it comes
|
||||
process.stdout.on('data', (data) => {
|
||||
console.log(data.toString().trim());
|
||||
});
|
||||
|
||||
// Log stderr as it comes
|
||||
process.stderr.on('data', (data) => {
|
||||
console.error(data.toString().trim());
|
||||
});
|
||||
|
||||
// Handle process exit
|
||||
process.on('close', (code) => {
|
||||
if (code === 0) {
|
||||
console.info(`Build completed successfully!`);
|
||||
} else {
|
||||
console.error(`Process exited with code ${code}`);
|
||||
}
|
||||
});
|
||||
|
||||
process.on('error', (error) => {
|
||||
console.error(`Failed to start process: ${error.message}`);
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('An error occurred:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
Reference in New Issue
Block a user