12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /* Magic Mirror
- *
- * Check the configuration file for errors
- *
- * By Rodrigo Ramírez Norambuena https://rodrigoramirez.com
- * MIT Licensed.
- */
- const Linter = require("eslint").Linter;
- const linter = new Linter();
-
- const path = require("path");
- const fs = require("fs");
-
- const rootPath = path.resolve(`${__dirname}/../`);
- const Log = require(`${rootPath}/js/logger.js`);
- const Utils = require(`${rootPath}/js/utils.js`);
-
- /**
- * Returns a string with path of configuration file.
- * Check if set by environment variable MM_CONFIG_FILE
- *
- * @returns {string} path and filename of the config file
- */
- function getConfigFile() {
- // FIXME: This function should be in core. Do you want refactor me ;) ?, be good!
- return path.resolve(process.env.MM_CONFIG_FILE || `${rootPath}/config/config.js`);
- }
-
- /**
- * Checks the config file using eslint.
- */
- function checkConfigFile() {
- const configFileName = getConfigFile();
-
- // Check if file is present
- if (fs.existsSync(configFileName) === false) {
- Log.error(Utils.colors.error("File not found: "), configFileName);
- throw new Error("No config file present!");
- }
-
- // Check permission
- try {
- fs.accessSync(configFileName, fs.F_OK);
- } catch (e) {
- Log.error(Utils.colors.error(e));
- throw new Error("No permission to access config file!");
- }
-
- // Validate syntax of the configuration file.
- Log.info(Utils.colors.info("Checking file... "), configFileName);
-
- // I'm not sure if all ever is utf-8
- const configFile = fs.readFileSync(configFileName, "utf-8");
-
- // Explicitly tell linter that he might encounter es6 syntax ("let config = {...}")
- const errors = linter.verify(configFile, {
- env: {
- es6: true
- }
- });
-
- if (errors.length === 0) {
- Log.info(Utils.colors.pass("Your configuration file doesn't contain syntax errors :)"));
- } else {
- Log.error(Utils.colors.error("Your configuration file contains syntax errors :("));
-
- for (const error of errors) {
- Log.error(`Line ${error.line} column ${error.column}: ${error.message}`);
- }
- }
- }
-
- checkConfigFile();
|