mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 19:53:36 +00:00
In the latest versions of ESLint, more and more formatting rules were removed or declared deprecated. These rules have been integrated into the new Stylistic package (https://eslint.style/guide/why) and expanded. Stylistic acts as a better formatter for JavaScript as Prettier. With this PR there are many changes that make the code more uniform, but it may be difficult to review due to the large amount. Even if I have no worries about the changes, perhaps this would be something for the release after next. Let me know what you think.
73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
/* MagicMirror²
|
|
*
|
|
* Check the configuration file for errors
|
|
*
|
|
* By Rodrigo Ramírez Norambuena https://rodrigoramirez.com
|
|
* MIT Licensed.
|
|
*/
|
|
const path = require("path");
|
|
const fs = require("fs");
|
|
const { Linter } = require("eslint");
|
|
|
|
const linter = new Linter();
|
|
|
|
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();
|