Skip to content

Commit

Permalink
Added "make" node.js script
Browse files Browse the repository at this point in the history
  • Loading branch information
JezerM committed Nov 17, 2021
1 parent 043211e commit ed648f4
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 53 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ git clone https://github.com/JezerM/nody-greeter.git
cd nody-greeter
npm install
npm run rebuild
npm run build
node install.js
node make build
sudo node make install
```

This will rebuild **electron** along with **node-gtk** and then build the package root directory inside `build/unpacked`. Later, install it with `node install.js`.
Expand Down
58 changes: 14 additions & 44 deletions build.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@ const fs = require("fs-extra");
const path = require("path");
const child_process = require("child_process");
const progress = require("cli-progress");
const { makeCopy, iterateCopy, getFileSize } = require("./build/utils.js");
const {
makeCopy,
iterateCopy,
getFileSize,
makeCopyFromTo,
} = require("./build/utils.js");
const yargs = require("yargs");

let DEST_DIR = "/";
Expand Down Expand Up @@ -70,27 +75,7 @@ async function create_build() {
fs.mkdirSync(ASAR_ROOT, { recursive: true });
fs.mkdirSync(INSTALL_ROOT, { recursive: true });

let source_size = copies.reduce((prev, curr) => {
let size = getFileSize(curr.from);
//console.log(curr.from, size);
return prev + size;
}, 0);
//console.log(source_size);

let copy_bar = new progress.Bar({
stopOnComplete: true,
clearOnComplete: true,
});
copy_bar.start(source_size, 0);

let bytesCopied = 0;

for (let i = 0; i < copies.length; i++) {
let source = copies[i].from;
let dest = copies[i].to;
bytesCopied = await iterateCopy(source, dest, copy_bar, bytesCopied);
}
copy_bar.stop();
await makeCopyFromTo(copies);

console.log("Resources copied");

Expand Down Expand Up @@ -202,27 +187,7 @@ let copies_prepare = [
async function prepare_install() {
create_install_root();

let source_size = copies_prepare.reduce((prev, curr) => {
let size = getFileSize(curr.from);
//console.log(curr.from, size);
return prev + size;
}, 0);
//console.log(source_size);

let copy_bar = new progress.Bar({
stopOnComplete: true,
clearOnComplete: true,
});
copy_bar.start(source_size, 0);

let bytesCopied = 0;

for (let i = 0; i < copies_prepare.length; i++) {
let source = copies_prepare[i].from;
let dest = copies_prepare[i].to;
bytesCopied = await iterateCopy(source, dest, copy_bar, bytesCopied);
}
copy_bar.stop();
await makeCopyFromTo(copies_prepare);

fs.removeSync(path.join(nody_path, "resources"));
fs.renameSync(
Expand All @@ -248,11 +213,16 @@ async function build_asar() {
}

async function build() {
console.log("Building with prefix:", PREFIX);
await create_build();
await copy_electron_binding();
await prepare_install();
await build_asar();
console.log("\x1b[92mSUCCESS!\x1b[0m");
}

build();
if (require.main == module) {
build();
}

module.exports = { build };
59 changes: 53 additions & 6 deletions build/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ async function do_copy(source_file, dest_file, copy_bar, bytes) {
mode: file_stat.mode,
});

let filename = path.basename(source_file);

readStream.on("data", (buff) => {
//console.log({
//source_file,
Expand All @@ -39,7 +41,7 @@ async function do_copy(source_file, dest_file, copy_bar, bytes) {

bytesCopied += buff.length;

copy_bar.update(bytesCopied);
copy_bar.update(bytesCopied, { filename });
writeStream.write(buff);
});

Expand Down Expand Up @@ -107,13 +109,58 @@ async function makeCopy(source, dest) {
throw new Error("Source does not exists: " + source);
let source_size = getFileSize(source);

let copy_bar = new progress.Bar({
stopOnComplete: true,
clearOnComplete: true,
let copy_bar = new progress.Bar(
{
format:
"Progress |" +
"\x1b[96m{bar}\x1b[0m" +
"| {percentage}% || {value}/{total} || {filename}",
stopOnComplete: true,
clearOnComplete: true,
hideCursor: true,
},
progress.Presets.shades_classic
);
copy_bar.start(source_size, 0, {
filename: "N/A",
});
copy_bar.start(source_size, 0);

await iterateCopy(source, dest, copy_bar, 0);
}

module.exports = { iterateCopy, makeCopy, getFileSize };
async function makeCopyFromTo(array) {
let source_size = array.reduce((prev, curr) => {
let size = getFileSize(curr.from);
//console.log(curr.from, size);
return prev + size;
}, 0);
//console.log(source_size);

let copy_bar = new progress.Bar(
{
format:
"Progress |" +
"\x1b[96m{bar}\x1b[0m" +
"| {percentage}% || {value}/{total} || {filename}",
stopOnComplete: true,
clearOnComplete: true,
hideCursor: true,
},
progress.Presets.shades_classic
);

copy_bar.start(source_size, 0, {
filename: "N/A",
});

let bytesCopied = 0;

for (let i = 0; i < array.length; i++) {
let source = array[i].from;
let dest = array[i].to;
bytesCopied = await iterateCopy(source, dest, copy_bar, bytesCopied);
}
copy_bar.stop();
}

module.exports = { iterateCopy, makeCopy, makeCopyFromTo, getFileSize };
7 changes: 6 additions & 1 deletion install.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const fs = require("fs-extra");
const path = require("path");
const yargs = require("yargs");
const { makeCopy } = require("./build/utils.js");
const { build } = require("./build.js");

let DEST_DIR = "/";
let PREFIX = "/usr";
Expand Down Expand Up @@ -46,4 +47,8 @@ async function install() {
console.log("\x1b[92mSUCCESS!!\x1b[0m");
}

install();
if (require.main == module) {
install();
}

module.exports = { install };
65 changes: 65 additions & 0 deletions make.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
const fs = require("fs-extra");
const path = require("path");
const yargs = require("yargs");

let DEST_DIR = "/";
let PREFIX = "/usr";
let INSTALL_ROOT = path.resolve(__dirname, "./build/unpacked/");

yargs.parserConfiguration({
"short-option-groups": true,
"camel-case-expansion": false,
"dot-notation": true,
"parse-numbers": true,
"parse-positional-numbers": true,
"boolean-negation": true,
"deep-merge-config": false,
});

let argv = yargs
.scriptName("make")
.usage("$0 [args]")
.command("install", "Install nody-greeter")
.command("build", "Build nody-greeter")
.option("DEST_DIR", {
type: "string",
describe: "Where to install nody-greeter",
default: DEST_DIR,
})
.option("PREFIX", {
type: "string",
describe: "Prefix to install at",
default: PREFIX,
})
.help("h")
.alias("h", "help")
.version(false).argv;

PREFIX = argv.PREFIX;
DEST_DIR = argv.DEST_DIR;

async function do_install() {
const { build } = require("./build.js");
const { install } = require("./install.js");

if (!fs.pathExistsSync("./build/unpacked")) {
console.log("nody-greeter is not built");
await build();
}
await install();
}

async function do_build() {
const { build } = require("./build.js");

build();
}

if (argv._[0] == "install") {
do_install();
} else if (argv._[0] == "build") {
do_build();
} else {
yargs.showHelp();
process.exit(1);
}

0 comments on commit ed648f4

Please sign in to comment.