From d8215365720fa77c5e82f361f082e942f7223f10 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Sat, 6 Aug 2022 15:08:19 +0200 Subject: Add utility scripts --- bundle/scripts/build.js | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'bundle/scripts/build.js') diff --git a/bundle/scripts/build.js b/bundle/scripts/build.js index f73fb11a..8a1b3c83 100644 --- a/bundle/scripts/build.js +++ b/bundle/scripts/build.js @@ -2,39 +2,32 @@ const { execSync } = require("child_process"); const path = require("path"); const fs = require("fs"); const { getSystemErrorMap } = require("util"); -const { argv } = require("process"); +const { argv, stdout, exit } = require("process"); +const {copyRecursiveSync,execIn} = require('./utils'); -var steps = 2, i = 0; +if(argv.includes("help")) { + console.log(`Fosscord build script help: + +Arguments: + clean Cleans up previous builds + copyonly Only copy source files, don't build (useful for updating assets) + verbose Enable verbose logging + logerrors Log build errors to console + pretty-errors Pretty-print build errors`); + exit(0); +} + +let steps = 3, i = 0; if (argv.includes("clean")) steps++; if (argv.includes("copyonly")) steps--; const dirs = ["api", "util", "cdn", "gateway", "bundle"]; const verbose = argv.includes("verbose") || argv.includes("v"); -var copyRecursiveSync = function(src, dest) { - if(verbose) console.log(`cpsync: ${src} -> ${dest}`); - var exists = fs.existsSync(src); - if(!exists){ - console.log(src + " doesn't exist, not copying!"); - return; - } - var stats = exists && fs.statSync(src); - var isDirectory = exists && stats.isDirectory(); - if (isDirectory) { - fs.mkdirSync(dest, {recursive: true}); - fs.readdirSync(src).forEach(function(childItemName) { - copyRecursiveSync(path.join(src, childItemName), - path.join(dest, childItemName)); - }); - } else { - fs.copyFileSync(src, dest); - } - }; - if (argv.includes("clean")) { console.log(`[${++i}/${steps}] Cleaning...`); dirs.forEach((a) => { - var d = "../" + a + "/dist"; + let d = "../" + a + "/dist"; if (fs.existsSync(d)) { fs.rmSync(d, { recursive: true }); if (verbose) console.log(`Deleted ${d}!`); @@ -42,6 +35,11 @@ if (argv.includes("clean")) { }); } +console.log(`[${++i}/${steps}] Checking if dependencies were installed correctly...`); +//exif-be-gone v1.3.0 doesnt build js, known bug +if(!fs.existsSync(path.join(__dirname, "..", "node_modules", "exif-be-gone", "index.js"))) + execIn("npm run build", path.join(__dirname, "..", "node_modules", "exif-be-gone")); + console.log(`[${++i}/${steps}] Copying src files...`); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "assets"), path.join(__dirname, "..", "dist", "api", "assets")); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "client_test"), path.join(__dirname, "..", "dist", "api", "client_test")); -- cgit 1.5.1 From fca4480c97124cfbd2352d47f14c27d1f3767cc9 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Sat, 6 Aug 2022 15:24:12 +0200 Subject: Add silent mode --- bundle/scripts/build.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'bundle/scripts/build.js') diff --git a/bundle/scripts/build.js b/bundle/scripts/build.js index 8a1b3c83..99454be6 100644 --- a/bundle/scripts/build.js +++ b/bundle/scripts/build.js @@ -3,7 +3,7 @@ const path = require("path"); const fs = require("fs"); const { getSystemErrorMap } = require("util"); const { argv, stdout, exit } = require("process"); -const {copyRecursiveSync,execIn} = require('./utils'); +const { copyRecursiveSync, execIn, parts} = require('./utils'); if(argv.includes("help")) { console.log(`Fosscord build script help: @@ -13,20 +13,23 @@ Arguments: copyonly Only copy source files, don't build (useful for updating assets) verbose Enable verbose logging logerrors Log build errors to console - pretty-errors Pretty-print build errors`); + pretty-errors Pretty-print build errors + silent No output, no build log`); exit(0); } let steps = 3, i = 0; if (argv.includes("clean")) steps++; if (argv.includes("copyonly")) steps--; -const dirs = ["api", "util", "cdn", "gateway", "bundle"]; const verbose = argv.includes("verbose") || argv.includes("v"); +const silent = argv.includes("silent"); + +if(silent) console.log = function() {} if (argv.includes("clean")) { console.log(`[${++i}/${steps}] Cleaning...`); - dirs.forEach((a) => { + parts.forEach((a) => { let d = "../" + a + "/dist"; if (fs.existsSync(d)) { fs.rmSync(d, { recursive: true }); @@ -44,7 +47,7 @@ console.log(`[${++i}/${steps}] Copying src files...`); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "assets"), path.join(__dirname, "..", "dist", "api", "assets")); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "client_test"), path.join(__dirname, "..", "dist", "api", "client_test")); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "locales"), path.join(__dirname, "..", "dist", "api", "locales")); -dirs.forEach((a) => { +parts.forEach((a) => { copyRecursiveSync("../" + a + "/src", "dist/" + a + "/src"); if (verbose) console.log(`Copied ${"../" + a + "/dist"} -> ${"dist/" + a + "/src"}!`); }); -- cgit 1.5.1 From 11227bb2b3810432f77ea94c9eac26b4875397f2 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Sat, 6 Aug 2022 15:32:28 +0200 Subject: Update gitignore, push correct version of build script --- .gitignore | 3 +++ bundle/scripts/build.js | 42 +++++++++++++++++++++++++++++++----------- 2 files changed, 34 insertions(+), 11 deletions(-) (limited to 'bundle/scripts/build.js') diff --git a/.gitignore b/.gitignore index 607b4f5a..0f1d9332 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ api/assets/plugins/*.js .idea/ *.code-workspace + +*.log +*.log.ansi \ No newline at end of file diff --git a/bundle/scripts/build.js b/bundle/scripts/build.js index 99454be6..1a12ae73 100644 --- a/bundle/scripts/build.js +++ b/bundle/scripts/build.js @@ -3,33 +3,35 @@ const path = require("path"); const fs = require("fs"); const { getSystemErrorMap } = require("util"); const { argv, stdout, exit } = require("process"); -const { copyRecursiveSync, execIn, parts} = require('./utils'); +const {copyRecursiveSync,execIn} = require('./utils'); if(argv.includes("help")) { console.log(`Fosscord build script help: - Arguments: clean Cleans up previous builds copyonly Only copy source files, don't build (useful for updating assets) verbose Enable verbose logging logerrors Log build errors to console pretty-errors Pretty-print build errors - silent No output, no build log`); + silent No output to console or files.`); exit(0); } let steps = 3, i = 0; if (argv.includes("clean")) steps++; if (argv.includes("copyonly")) steps--; +const dirs = ["api", "util", "cdn", "gateway", "bundle"]; const verbose = argv.includes("verbose") || argv.includes("v"); +const logerr = argv.includes("logerrors"); +const pretty = argv.includes("pretty-errors"); const silent = argv.includes("silent"); -if(silent) console.log = function() {} +if(silent) console.error = console.log = function(){} if (argv.includes("clean")) { console.log(`[${++i}/${steps}] Cleaning...`); - parts.forEach((a) => { + dirs.forEach((a) => { let d = "../" + a + "/dist"; if (fs.existsSync(d)) { fs.rmSync(d, { recursive: true }); @@ -47,7 +49,7 @@ console.log(`[${++i}/${steps}] Copying src files...`); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "assets"), path.join(__dirname, "..", "dist", "api", "assets")); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "client_test"), path.join(__dirname, "..", "dist", "api", "client_test")); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "locales"), path.join(__dirname, "..", "dist", "api", "locales")); -parts.forEach((a) => { +dirs.forEach((a) => { copyRecursiveSync("../" + a + "/src", "dist/" + a + "/src"); if (verbose) console.log(`Copied ${"../" + a + "/dist"} -> ${"dist/" + a + "/src"}!`); }); @@ -55,13 +57,16 @@ parts.forEach((a) => { if (!argv.includes("copyonly")) { console.log(`[${++i}/${steps}] Compiling src files ...`); - console.log( + let buildFlags = '' + if(pretty) buildFlags += '--pretty ' + + try { execSync( 'node "' + path.join(__dirname, "..", "node_modules", "typescript", "lib", "tsc.js") + '" -p "' + path.join(__dirname, "..") + - '"', + '" ' + buildFlags, { cwd: path.join(__dirname, ".."), shell: true, @@ -69,6 +74,21 @@ if (!argv.includes("copyonly")) { encoding: "utf8" } ) - ); -} - + } catch (error) { + if(verbose || logerr) { + error.stdout.split(/\r?\n/).forEach((line) => { + let _line = line.replace('dist/','',1); + if(!pretty && _line.includes('.ts(')) { + //reformat file path for easy jumping + _line = _line.replace('(',':',1).replace(',',':',1).replace(')','',1) + } + console.error(_line); + }) + } + console.error(`Build failed! Please check build.log for info!`); + if(!silent){ + if(pretty) fs.writeFileSync("build.log.ansi", error.stdout); + fs.writeFileSync("build.log", error.stdout.replaceAll(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '')); + } + } +} \ No newline at end of file -- cgit 1.5.1 From 8691dbfbaea96f645df190c9cc25d1ece5f2e694 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Sat, 6 Aug 2022 15:34:05 +0200 Subject: Make build script use parts, defined in utils.js --- bundle/scripts/build.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'bundle/scripts/build.js') diff --git a/bundle/scripts/build.js b/bundle/scripts/build.js index 1a12ae73..f53a2223 100644 --- a/bundle/scripts/build.js +++ b/bundle/scripts/build.js @@ -3,7 +3,7 @@ const path = require("path"); const fs = require("fs"); const { getSystemErrorMap } = require("util"); const { argv, stdout, exit } = require("process"); -const {copyRecursiveSync,execIn} = require('./utils'); +const { copyRecursiveSync, execIn, parts } = require('./utils'); if(argv.includes("help")) { console.log(`Fosscord build script help: @@ -20,7 +20,6 @@ Arguments: let steps = 3, i = 0; if (argv.includes("clean")) steps++; if (argv.includes("copyonly")) steps--; -const dirs = ["api", "util", "cdn", "gateway", "bundle"]; const verbose = argv.includes("verbose") || argv.includes("v"); const logerr = argv.includes("logerrors"); @@ -31,7 +30,7 @@ if(silent) console.error = console.log = function(){} if (argv.includes("clean")) { console.log(`[${++i}/${steps}] Cleaning...`); - dirs.forEach((a) => { + parts.forEach((a) => { let d = "../" + a + "/dist"; if (fs.existsSync(d)) { fs.rmSync(d, { recursive: true }); @@ -49,7 +48,7 @@ console.log(`[${++i}/${steps}] Copying src files...`); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "assets"), path.join(__dirname, "..", "dist", "api", "assets")); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "client_test"), path.join(__dirname, "..", "dist", "api", "client_test")); copyRecursiveSync(path.join(__dirname, "..", "..", "api", "locales"), path.join(__dirname, "..", "dist", "api", "locales")); -dirs.forEach((a) => { +parts.forEach((a) => { copyRecursiveSync("../" + a + "/src", "dist/" + a + "/src"); if (verbose) console.log(`Copied ${"../" + a + "/dist"} -> ${"dist/" + a + "/src"}!`); }); -- cgit 1.5.1