sails-generate-eslintrc
Advanced tools
Comparing version
22
index.js
@@ -10,2 +10,3 @@ #!/usr/bin/env node | ||
var program = require('commander'); | ||
var findFile = require('fs-finder'); | ||
@@ -20,3 +21,3 @@ function list(val) { | ||
'Set mode for .eslintrc-sails: append, override.' + | ||
'Default: Add default globals') | ||
'Default: Add default globals') | ||
.option('-g, --globals <items>', | ||
@@ -37,3 +38,3 @@ 'Input globals list, like: sails, mysql', list) | ||
var globalFoldersList = ['api/controllers', 'api/models', 'api/services']; | ||
var eslintConfigFileName = '.eslintrc'; | ||
var eslintConfigFileName; | ||
var sailsConfigFileName = '.eslintrc-sails'; | ||
@@ -44,3 +45,14 @@ var preset = null; | ||
eslintConfigFileName = program.config; | ||
} else { | ||
eslintConfigFileName = findFile.in(process.cwd()).showSystemFiles().findFiles('.eslintrc<(.json|.js|)$>') | ||
.sort((a, b) => a.length > b.length)[0]; | ||
} | ||
if (!eslintConfigFileName) { | ||
console.warn('Can\'t found the eslintrc file.'); | ||
process.exit(); | ||
} else { | ||
console.info('Use ' + eslintConfigFileName + ' as eslintrc file.') | ||
} | ||
if (program.preset) { | ||
@@ -52,3 +64,4 @@ preset = program.preset; | ||
switch (program.mode.trim()) { | ||
case 'append': case 'a': | ||
case 'append': | ||
case 'a': | ||
globalsList = program.globals ? program.globals : []; | ||
@@ -59,3 +72,4 @@ globalFoldersList = program.folders ? program.folders : []; | ||
break; | ||
case 'override': case 'o': | ||
case 'override': | ||
case 'o': | ||
globalsList = program.globals ? program.globals : []; | ||
@@ -62,0 +76,0 @@ globalFoldersList = program.folders ? program.folders : []; |
var fs = require('fs'); | ||
var path = require('path'); | ||
var readline = require('readline'); | ||
@@ -12,3 +13,43 @@ var rl = readline.createInterface({ | ||
var updateEslintrc = function(err, data) { | ||
var readFile = function(fileName, cb) { | ||
console.log('./' + fileName) | ||
switch (path.extname(fileName)) { | ||
case '': | ||
try { | ||
var config = JSON.parse(fs.readFileSync(fileName, 'utf-8')); | ||
cb(null, config); | ||
} catch (err) { | ||
cb(err); | ||
} | ||
break; | ||
case '.js': | ||
case '.json': | ||
try { | ||
var eslintConfig = require('/' + process.cwd() + '/' + fileName); | ||
cb(null, eslintConfig); | ||
} catch (err) { | ||
console.trace(err); | ||
cb(err); | ||
} | ||
break; | ||
default: | ||
console.error('readFile: Can\'t found the eslintrc file.'); | ||
} | ||
}; | ||
var writeFile = function(fileName, data) { | ||
switch (path.extname(fileName)) { | ||
case '': | ||
case '.json': | ||
fs.writeFileSync(eslintConfigFileName, data); | ||
break; | ||
case '.js': | ||
fs.writeFileSync(eslintConfigFileName, 'module.exports = ' + data); | ||
break; | ||
default: | ||
console.error('writeFile: Can\'t found the eslintrc file.'); | ||
} | ||
}; | ||
var updateEslintrc = function(err, config) { | ||
if (err) { | ||
@@ -19,3 +60,2 @@ console.log('readFile return error:'); | ||
// console.log(data); | ||
var config = JSON.parse(data); | ||
// config.globals = _.extend(config.globals, globals); | ||
@@ -26,2 +66,7 @@ if (config.extends.indexOf(sailsConfigFileName) >= 0) { | ||
} | ||
// If config.extends is not Array, change it to Array. | ||
if (!Array.isArray(config.extends)) | ||
config.extends = [config.extends]; | ||
if (preset && config.extends.indexOf(preset) < 0) { | ||
@@ -32,3 +77,3 @@ config.extends = config.extends.concat(preset); | ||
// console.log(config); | ||
fs.writeFileSync(eslintConfigFileName, JSON.stringify(config, null, '\t')); | ||
writeFile(eslintConfigFileName, JSON.stringify(config, null, '\t')); | ||
console.log('add ' + sailsConfigFileName + | ||
@@ -41,3 +86,5 @@ ' and modify ' + eslintConfigFileName); | ||
switch (answer.trim()) { | ||
case 'yes': case 'y': case 'Y': | ||
case 'yes': | ||
case 'y': | ||
case 'Y': | ||
fs.open(eslintConfigFileName, 'w', function(err) { | ||
@@ -57,3 +104,5 @@ if (err) { | ||
break; | ||
case 'no': case 'n': case 'N': | ||
case 'no': | ||
case 'n': | ||
case 'N': | ||
console.log('Please establish ' + eslintConfigFileName + ' first!'); | ||
@@ -74,3 +123,3 @@ break; | ||
if (exists) { | ||
fs.readFile(eslintConfigFileName, 'utf-8', updateEslintrc); | ||
readFile(eslintConfigFileName, updateEslintrc); | ||
rl.close(); | ||
@@ -77,0 +126,0 @@ } else { |
@@ -46,3 +46,3 @@ var _ = require('underscore'); | ||
console.log(sailsConfigFileName + | ||
'is not exists, it will be created'); | ||
' is not exists, it will be created'); | ||
fs.open(sailsConfigFileName, 'w', function(err) { | ||
@@ -53,3 +53,3 @@ if (err) { | ||
} | ||
console.log(sailsConfigFileName + 'is created!'); | ||
console.log(sailsConfigFileName + ' is created!'); | ||
}); | ||
@@ -56,0 +56,0 @@ eslintrcSails.globals = globals; |
{ | ||
"name": "sails-generate-eslintrc", | ||
"version": "1.3.2", | ||
"version": "1.4.0", | ||
"description": "generate eslint config file which contains sails's globals", | ||
@@ -30,4 +30,5 @@ "main": "index.js", | ||
"eslint-config-google": "^0.3.0", | ||
"fs-finder": "^1.8.1", | ||
"underscore": "^1.8.3" | ||
} | ||
} |
@@ -7,8 +7,5 @@ # sails-generate-eslintrc | ||
##TODO | ||
- change default mode to "append". If no globals added, the file is not changed. | ||
## Parameter | ||
- -m --mode | ||
+ *Default* : Add default globals which contains [sails] and object under ['api/controllers', 'api/models', 'api/services'] | ||
+ *Default* : Append default globals which contains [sails] and object under ['api/controllers', 'api/models', 'api/services'] | ||
+ append: Add other globals given by other parameters(-g, -f), which are appended in sails globals file(.eslintrc-sails) | ||
@@ -22,3 +19,2 @@ + override: Override sails globals file by other parameter(-g, -f). If no other parameters, an empty sails globals file(.eslintrc-sails) will be created. | ||
## Files Example | ||
@@ -25,0 +21,0 @@ - .eslintrc-sails |
Sorry, the diff of this file is not supported yet
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
14738
11.26%282
25.33%5
25%102
-3.77%4
100%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added