diff --git a/lib/config-path.js b/lib/config-path.js index 6ddfa2dbc..30c518ee3 100644 --- a/lib/config-path.js +++ b/lib/config-path.js @@ -3,9 +3,10 @@ const fs = require('fs'); const Path = require('path'); const logger = require('./logger'); - +const CONFIG_FILE = 'config.yaml'; +const pkgJson = require('../package.json'); /** - * + * Find and get the first config file that match. * @return {String} the config file path */ function find_config_file() { @@ -19,6 +20,10 @@ function find_config_file() { return paths[0].path; } +/** + * Create a default config file in your system. + * @param {String} config_path + */ function create_config_file(config_path) { require('mkdirp').sync(Path.dirname(config_path.path)); logger.logger.info({file: config_path.path}, 'Creating default config file in @{file}'); @@ -26,69 +31,80 @@ function create_config_file(config_path) { let created_config = fs.readFileSync(require.resolve('../conf/default.yaml'), 'utf8'); if (config_path.type === 'xdg') { - let data_dir = process.env.XDG_DATA_HOME - || Path.join(process.env.HOME, '.local', 'share'); + // $XDG_DATA_HOME defines the base directory relative to which user specific data files should be stored, + // If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used. + let data_dir = process.env.XDG_DATA_HOME|| Path.join(process.env.HOME, '.local', 'share'); if (folder_exists(data_dir)) { - data_dir = Path.resolve(Path.join(data_dir, 'verdaccio', 'storage')); - created_config = created_config.replace(/^storage: .\/storage$/m, 'storage: ' + data_dir); + data_dir = Path.resolve(Path.join(data_dir, pkgJson.name, 'storage')); + created_config = created_config.replace(/^storage: .\/storage$/m, `storage: ${data_dir}`); } } fs.writeFileSync(config_path.path, created_config); } +/** + * Retrieve a list of possible config file locations. + * @return {Array} + */ function get_paths() { let try_paths = []; let xdg_config = process.env.XDG_CONFIG_HOME || process.env.HOME && Path.join(process.env.HOME, '.config'); if (xdg_config && folder_exists(xdg_config)) { try_paths.push({ - path: Path.join(xdg_config, 'verdaccio', 'config.yaml'), + path: Path.join(xdg_config, pkgJson.name, CONFIG_FILE), type: 'xdg', }); } - if (process.platform === 'win32' - && process.env.APPDATA - && folder_exists(process.env.APPDATA)) { + if (process.platform === 'win32' && process.env.APPDATA && folder_exists(process.env.APPDATA)) { try_paths.push({ - path: Path.resolve(Path.join(process.env.APPDATA, 'verdaccio', 'config.yaml')), + path: Path.resolve(Path.join(process.env.APPDATA, pkgJson.name, CONFIG_FILE)), type: 'win', }); } try_paths.push({ - path: Path.resolve(Path.join('.', 'verdaccio', 'config.yaml')), + path: Path.resolve(Path.join('.', pkgJson.name, CONFIG_FILE)), type: 'def', }); // backward compatibility try_paths.push({ - path: Path.resolve(Path.join('.', 'config.yaml')), + path: Path.resolve(Path.join('.', CONFIG_FILE)), type: 'old', }); return try_paths; } +/** + * Check whether the path already exist. + * @param {String} path + * @return {Boolean} + */ function folder_exists(path) { try { - var stat = fs.statSync(path); + const stat = fs.statSync(path); + return stat.isDirectory(); } catch(_) { return false; } - - return stat.isDirectory(); } +/** + * Check whether the file already exist. + * @param {String} path + * @return {Boolean} + */ function file_exists(path) { try { - var stat = fs.statSync(path); + const stat = fs.statSync(path); + return stat.isFile(); } catch(_) { return false; } - - return stat.isFile(); } module.exports = find_config_file; diff --git a/lib/plugins/htpasswd/crypt3.js b/lib/plugins/htpasswd/crypt3.js index 8c0e7a34d..79a2a5380 100644 --- a/lib/plugins/htpasswd/crypt3.js +++ b/lib/plugins/htpasswd/crypt3.js @@ -1,3 +1,5 @@ +/* eslint require-jsdoc: off */ + 'use strict'; /** Node.js Crypt(3) Library @@ -12,8 +14,8 @@ */ -let crypt = require('unix-crypt-td-js'), - crypto = require('crypto'); +const crypt = require('unix-crypt-td-js'); +const crypto = require('crypto'); function createSalt(type) { type = type || 'sha512'; diff --git a/lib/plugins/htpasswd/index.js b/lib/plugins/htpasswd/index.js index dc34266b2..8b6c9ca1e 100644 --- a/lib/plugins/htpasswd/index.js +++ b/lib/plugins/htpasswd/index.js @@ -1,3 +1,5 @@ +/* eslint require-jsdoc: off */ + 'use strict'; let fs = require('fs'); diff --git a/lib/plugins/htpasswd/utils.js b/lib/plugins/htpasswd/utils.js index 5a5f30013..ba69db1ec 100644 --- a/lib/plugins/htpasswd/utils.js +++ b/lib/plugins/htpasswd/utils.js @@ -1,3 +1,5 @@ +/* eslint require-jsdoc: off */ + 'use strict'; let crypto = require('crypto');