mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Refactor code
This commit is contained in:
parent
7f93d943d7
commit
3e6f0acf79
@ -13,7 +13,7 @@
|
|||||||
// 4. Edit your settings file to set the theme:
|
// 4. Edit your settings file to set the theme:
|
||||||
// editorTheme: {
|
// editorTheme: {
|
||||||
// page: {
|
// page: {
|
||||||
// css: "/path/to/file/generated/by/this/script"
|
// css: '/path/to/file/generated/by/this/script'
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
@ -22,92 +22,69 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const os = require("os");
|
const os = require('os');
|
||||||
const nopt = require("nopt");
|
const nopt = require('nopt');
|
||||||
const path = require("path");
|
const path = require('path');
|
||||||
const fs = require("fs-extra");
|
const fs = require('fs-extra');
|
||||||
const sass = require("sass");
|
const sass = require('sass');
|
||||||
|
|
||||||
const knownOpts = {
|
const knownOpts = {
|
||||||
"help": Boolean,
|
'help': Boolean,
|
||||||
"long": Boolean,
|
'long': Boolean,
|
||||||
"in": [path],
|
'in': [path],
|
||||||
"out": [path]
|
'out': [path]
|
||||||
};
|
};
|
||||||
const shortHands = {
|
const shortHands = {
|
||||||
"?":["--help"]
|
'?':['--help']
|
||||||
};
|
};
|
||||||
nopt.invalidHandler = function(k,v,t) {}
|
nopt.invalidHandler = function(k,v,t) {}
|
||||||
|
|
||||||
const parsedArgs = nopt(knownOpts,shortHands,process.argv,2)
|
const parsedArgs = nopt(knownOpts,shortHands,process.argv,2)
|
||||||
|
|
||||||
if (parsedArgs.help) {
|
if (parsedArgs.help) {
|
||||||
console.log("Usage: build-custom-theme [-?] [--in FILE] [--out FILE]");
|
showUsageAndExit(0)
|
||||||
console.log("");
|
|
||||||
console.log("Options:");
|
|
||||||
console.log(" --in FILE Custom colors sass file");
|
|
||||||
console.log(" --out FILE Where you write the result");
|
|
||||||
console.log(" --long Do not compress the output");
|
|
||||||
console.log(" -?, --help Show this help");
|
|
||||||
console.log("");
|
|
||||||
process.exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!parsedArgs.in) {
|
||||||
const ruleRegex = /(\$.*?) *: *(\S[\S\s]*?);/g;
|
console.warn('Missing argument: in')
|
||||||
var match;
|
showUsageAndExit(1)
|
||||||
|
|
||||||
const customColors = {};
|
|
||||||
|
|
||||||
if (parsedArgs.in && fs.existsSync(parsedArgs.in)) {
|
|
||||||
let customColorsFile = fs.readFileSync(parsedArgs.in,"utf-8");
|
|
||||||
while((match = ruleRegex.exec(customColorsFile)) !== null) {
|
|
||||||
customColors[match[1]] = match[2];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Load base colours
|
|
||||||
let colorsFile = fs.readFileSync(path.join(__dirname,"../packages/node_modules/@node-red/editor-client/src/sass/colors.scss"),"utf-8")
|
|
||||||
let updatedColors = [];
|
|
||||||
|
|
||||||
while((match = ruleRegex.exec(colorsFile)) !== null) {
|
|
||||||
updatedColors.push(match[1]+": "+(customColors[match[1]]||match[2])+";")
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
(async function() {
|
(async function() {
|
||||||
const tmpDir = os.tmpdir();
|
const tmpDir = os.tmpdir();
|
||||||
const workingDir = await fs.mkdtemp(`${tmpDir}${path.sep}`);
|
const workingDir = await fs.mkdtemp(`${tmpDir}${path.sep}`);
|
||||||
await fs.copy(path.join(__dirname,"../packages/node_modules/@node-red/editor-client/src/sass/"),workingDir)
|
|
||||||
await fs.writeFile(path.join(workingDir,"colors.scss"),updatedColors.join("\n"))
|
|
||||||
|
|
||||||
const result = sass.renderSync({
|
await fs.copy(path.join(__dirname, '../packages/node_modules/@node-red/editor-client/src/sass/'), workingDir);
|
||||||
outputStyle: "expanded",
|
await fs.copyFile(parsedArgs.in, path.join(workingDir,'colors.scss'));
|
||||||
file: path.join(workingDir,"style-custom-theme.scss"),
|
|
||||||
});
|
|
||||||
|
|
||||||
const css = result.css.toString()
|
const output = sass.compile(
|
||||||
const lines = css.split("\n");
|
path.join(workingDir, 'style-custom-theme.scss'),
|
||||||
const colorCSS = []
|
{style: parsedArgs.long === true ? 'expanded' : 'compressed'}
|
||||||
|
);
|
||||||
|
|
||||||
lines.forEach(l => {
|
const nrPkg = require('../package.json');
|
||||||
colorCSS.push(l);
|
|
||||||
});
|
|
||||||
|
|
||||||
const nrPkg = require("../package.json");
|
|
||||||
const now = new Date().toISOString();
|
const now = new Date().toISOString();
|
||||||
|
const header = `/*\n* Theme generated with Node-RED ${nrPkg.version} on ${now}\n*/`;
|
||||||
|
|
||||||
const header = `/*
|
|
||||||
* Theme generated with Node-RED ${nrPkg.version} on ${now}
|
|
||||||
*/`;
|
|
||||||
|
|
||||||
var output = sass.renderSync({outputStyle: parsedArgs.long?"expanded":"compressed",data:colorCSS.join("\n")});
|
|
||||||
if (parsedArgs.out) {
|
if (parsedArgs.out) {
|
||||||
|
await fs.writeFile(parsedArgs.out, header+'\n'+output.css);
|
||||||
await fs.writeFile(parsedArgs.out,header+"\n"+output.css);
|
|
||||||
} else {
|
} else {
|
||||||
console.log(header);
|
console.log(header);
|
||||||
console.log(output.css.toString());
|
console.log(output.css.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
await fs.remove(workingDir);
|
await fs.remove(workingDir);
|
||||||
})()
|
})()
|
||||||
|
|
||||||
|
function showUsageAndExit (exitCode) {
|
||||||
|
console.log('');
|
||||||
|
console.log('Usage: build-custom-theme [-?] [--in FILE] [--out FILE]');
|
||||||
|
console.log('');
|
||||||
|
console.log('Options:');
|
||||||
|
console.log(' --in FILE Custom colors sass file');
|
||||||
|
console.log(' --out FILE Where you write the result');
|
||||||
|
console.log(' --long Do not compress the output');
|
||||||
|
console.log(' -?, --help Show this help');
|
||||||
|
console.log('');
|
||||||
|
process.exit(exitCode);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user