mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-21 02:05:16 +03:00
109 lines
3.2 KiB
Diff
109 lines
3.2 KiB
Diff
--- a/index.js
|
|
+++ b/index.js
|
|
@@ -1,17 +1,11 @@
|
|
const semver = require('semver');
|
|
const engines = require('./package.json').engines;
|
|
-const fs = require('fs');
|
|
-const os = require('os');
|
|
const path = require('path');
|
|
-const {exec} = require('child_process');
|
|
-const rimraf = require('rimraf');
|
|
require('source-map-support').install();
|
|
|
|
let controller;
|
|
let stopping = false;
|
|
|
|
-const hashFile = path.join(__dirname, 'dist', '.hash');
|
|
-
|
|
async function restart() {
|
|
await stop(true);
|
|
await start();
|
|
@@ -23,64 +17,7 @@
|
|
}
|
|
}
|
|
|
|
-async function currentHash() {
|
|
- const git = require('git-last-commit');
|
|
- return new Promise((resolve) => {
|
|
- git.getLastCommit((err, commit) => {
|
|
- if (err) resolve('unknown');
|
|
- else resolve(commit.shortHash);
|
|
- });
|
|
- });
|
|
-}
|
|
-
|
|
-async function writeHash() {
|
|
- const hash = await currentHash();
|
|
- fs.writeFileSync(hashFile, hash);
|
|
-}
|
|
-
|
|
-async function build(reason) {
|
|
- return new Promise((resolve, reject) => {
|
|
- process.stdout.write(`Building Zigbee2MQTT... (${reason})`);
|
|
- rimraf.sync('dist');
|
|
- const env = {...process.env};
|
|
- const _600mb = 629145600;
|
|
- if (_600mb > os.totalmem() && !env.NODE_OPTIONS) {
|
|
- // Prevent OOM on tsc compile for system with low memory
|
|
- // https://github.com/Koenkk/zigbee2mqtt/issues/12034
|
|
- env.NODE_OPTIONS = '--max_old_space_size=256';
|
|
- }
|
|
-
|
|
- exec('npm run build', {env, cwd: __dirname}, async (err, stdout, stderr) => {
|
|
- if (err) {
|
|
- process.stdout.write(', failed\n');
|
|
- if (err.code === 134) {
|
|
- process.stderr.write(
|
|
- '\n\nBuild failed; ran out-of-memory, free some memory (RAM) and start again\n\n');
|
|
- }
|
|
- reject(err);
|
|
- } else {
|
|
- process.stdout.write(', finished\n');
|
|
- resolve();
|
|
- }
|
|
- });
|
|
- });
|
|
-}
|
|
-
|
|
-async function checkDist() {
|
|
- if (!fs.existsSync(hashFile)) {
|
|
- await build('initial build');
|
|
- }
|
|
-
|
|
- const distHash = fs.readFileSync(hashFile, 'utf-8');
|
|
- const hash = await currentHash();
|
|
- if (hash !== 'unknown' && distHash !== hash) {
|
|
- await build('hash changed');
|
|
- }
|
|
-}
|
|
-
|
|
async function start() {
|
|
- await checkDist();
|
|
-
|
|
const version = engines.node;
|
|
if (!semver.satisfies(process.version, version)) {
|
|
console.log(`\t\tZigbee2MQTT requires node version ${version}, you are running ${process.version}!\n`); // eslint-disable-line
|
|
@@ -119,13 +56,9 @@
|
|
}
|
|
|
|
if (require.main === module || require.main.filename.endsWith(path.sep + 'cli.js')) {
|
|
- if (process.argv.length === 3 && process.argv[2] === 'writehash') {
|
|
- writeHash();
|
|
- } else {
|
|
- process.on('SIGINT', handleQuit);
|
|
- process.on('SIGTERM', handleQuit);
|
|
- start();
|
|
- }
|
|
+ process.on('SIGINT', handleQuit);
|
|
+ process.on('SIGTERM', handleQuit);
|
|
+ start();
|
|
} else {
|
|
process.on('SIGINT', handleQuit);
|
|
process.on('SIGTERM', handleQuit);
|
|
--- a/package.json
|
|
+++ b/package.json
|
|
@@ -22,3 +22,3 @@
|
|
"scripts": {
|
|
- "build": "tsc && node index.js writehash",
|
|
+ "build": "tsc",
|
|
"build-watch": "tsc --watch",
|