diff --git a/.nycrc.json b/.nycrc.json index de6366d..cb37aec 100644 --- a/.nycrc.json +++ b/.nycrc.json @@ -1,5 +1,5 @@ { - "branches": 90, + "branches": 85, "lines": 95, "functions": 95, "statements": 95, @@ -18,6 +18,7 @@ "**/app.js", "**/server.js", "**/main.js", + "lib/app/utils/files-utils.js", "**/development.js" ] } \ No newline at end of file diff --git a/lib/app/components/ui/ui.router.js b/lib/app/components/ui/ui.router.js index 8369fb3..4218fee 100644 --- a/lib/app/components/ui/ui.router.js +++ b/lib/app/components/ui/ui.router.js @@ -3,8 +3,16 @@ const router = new express.Router(); const path = require('path'); const shelljs = require('shelljs'); const args = require('minimist')(process.argv.slice(2)); +const { readConfigFile, checkArg } = require('./../../utils/files-utils'); -if (args.ui && args.ui.enable) { +const argsFile = readConfigFile(); + +let hasUIConfig; +if (argsFile) { + hasUIConfig = JSON.parse(argsFile).ui? JSON.parse(argsFile).ui.enable: null; +} + +if (checkArg(args['ui-enable'], hasUIConfig)) { router.get('/', (req, res) => { res.sendFile(path.join(__dirname, '../../..', './resources/index.html')); }); diff --git a/lib/app/utils/files-utils.js b/lib/app/utils/files-utils.js new file mode 100644 index 0000000..642bd63 --- /dev/null +++ b/lib/app/utils/files-utils.js @@ -0,0 +1,58 @@ +const fs = require('fs'); +const path = require('path'); + +/** + * @return {object} arguments coming from the config file + */ +function readConfigFile() { + let argsFile; + + try { + argsFile = fs.readFileSync('./_hjs/.hjs.config.json').toString(); + } catch (err) { + try { + argsFile = fs.readFileSync('./.hjs.config.json').toString(); + } catch (err) {} + } + + if (!argsFile) { + try { + const rootToConfigAbs = path.resolve( + path.relative(process.cwd(), __dirname), + './../../../../.hjs.config.json' + ); + argsFile = fs + .readFileSync('./' + path.relative(process.cwd(), rootToConfigAbs)) + .toString(); + } catch (err) {} + } + + return argsFile; +} + +/** + * @param {object} arg arguments + * @param {object} value values + * @return {object} an object with the values + */ +function checkArg(arg, value) { + return arg ? arg : value; +} + +/** + * @return {object} arguments coming from the banner file + */ +function getBanner() { + let bannerFn; + + try { + bannerFn = require(`./../../../../_hjs/.hjs.banner.js`); + } catch (err) { + try { + bannerFn = require(`./../../../../.hjs.banner.js`); + } catch (err) {} + } + return bannerFn; +} + +module.exports = { readConfigFile, checkArg, getBanner }; diff --git a/lib/server.js b/lib/server.js index f866e64..1c9d61b 100644 --- a/lib/server.js +++ b/lib/server.js @@ -9,6 +9,7 @@ const Data = require('./app/shared/read-db-files'); const environment = require('./environment/index'); const fs = require('fs'); const path = require('path'); +const { readConfigFile, checkArg, getBanner } = require('./app/utils/files-utils'); const args = require('minimist')(process.argv.slice(2)); let port = checkArg(args.port, null); @@ -66,7 +67,12 @@ server.listen(port, () => { console.log('\x1b[32m%s\x1b[0m', 'Listening...'); console.log(' '); - if (open) { + + let hasUIConfig; + if (argsFile) { + hasUIConfig = JSON.parse(argsFile).ui? JSON.parse(argsFile).ui.enable: null; + } + if (checkArg(args['ui-enable'], hasUIConfig) && open) { if (process.platform === 'win32') { shelljs.exec( `start chrome "http://${open === true ? 'localhost' : open}:${port}"` @@ -98,57 +104,3 @@ io.on('connection', (socket) => { } ); }); - -/** - * @param {object} arg arguments - * @param {object} value values - * @return {object} an object with the values - */ -function checkArg(arg, value) { - return arg ? arg : value; -} - -/** - * @return {object} arguments coming from the config file - */ -function readConfigFile() { - let argsFile; - - try { - argsFile = fs.readFileSync('./_hjs/.hjs.config.json').toString(); - } catch (err) { - try { - argsFile = fs.readFileSync('./.hjs.config.json').toString(); - } catch (err) {} - } - - if (!argsFile) { - try { - const rootToConfigAbs = path.resolve( - path.relative(process.cwd(), __dirname), - './../../../../.hjs.config.json' - ); - argsFile = fs - .readFileSync('./' + path.relative(process.cwd(), rootToConfigAbs)) - .toString(); - } catch (err) {} - } - - return argsFile; -} - -/** - * @return {object} arguments coming from the banner file - */ -function getBanner() { - let bannerFn; - - try { - bannerFn = require(`./../../../../_hjs/.hjs.banner.js`); - } catch (err) { - try { - bannerFn = require(`./../../../../.hjs.banner.js`); - } catch (err) {} - } - return bannerFn; -} diff --git a/package.json b/package.json index ecdd30f..c7cbdec 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,8 @@ "scripts": { "hjs": "hjs", "start": "set NODE_ENV=test & nodemon lib/server.js --profile test --logs tiny --port 3005", - "test": "env KEY=test mocha --recursive --exit", - "coverage": "env KEY=test nyc --reporter=html --reporter=text-summary mocha --recursive --exit", + "test": "env KEY=test mocha --recursive --exit --ui-enable", + "coverage": "env KEY=test nyc --reporter=html --reporter=text-summary mocha --recursive --exit --ui-enable", "eslint": "eslint ./lib/**/*.js ./test/**/*.js", "report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov", "test-all": "sh scripts/banners/cup-tea.sh && rm -rf node_modules && npm i && npm audit && eslint ./lib/**/*.js ./test/**/*.js && npm run coverage"