🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

sails-generate-eslintrc

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sails-generate-eslintrc - npm Package Compare versions

Comparing version
1.1.1
to
1.1.2
+82
index.js
#!/usr/bin/env node
/**
* Module dependencies.
*/
var generate = require('./lib/generate');
var configure = require('./lib/configure');
var _ = require('underscore');
var program = require('commander');
function list(val) {
return val.split(',');
}
program
.version('1.1.2')
.option('-m, --mode <string>',
'Set mode for .eslintrc-sails: append, override.' +
'Default: Add default globals')
.option('-g, --globals <items>',
'Input globals list, like: sails, mysql', list)
.option('-f, --folders <items>',
'Input global folders list, like: api/controllers, config', list)
.option('-c, --config <path>', 'Set eslint config file name')
.option('-p, --preset <string>', 'Set preset coding style, like: google')
.option('-s, --show [value]', 'Show result')
.parse(process.argv);
// var _ = require('underscore');
var globals = {};
// var eslintrcSails = {};
var globalsList = ['sails'];
// var prefixPath = './';
var globalFoldersList = ['api/controllers', 'api/models', 'api/services'];
var eslintConfigFileName = '.eslintrc';
var sailsConfigFileName = '.eslintrc-sails';
var preset = 'google';
if (program.config) {
eslintConfigFileName = program.config;
}
if (program.preset) {
preset = program.preset;
}
if (program.mode) {
switch (program.mode.trim()) {
case 'append': case 'a':
globalsList = program.globals ? program.globals : [];
globalFoldersList = program.folders ? program.folders : [];
globals = generate.addGlobals(globalsList, globalFoldersList);
generate.appendConfigFile(globals, sailsConfigFileName);
break;
case 'override': case 'o':
globalsList = program.globals ? program.globals : [];
globalFoldersList = program.folders ? program.folders : [];
globals = generate.addGlobals(globalsList, globalFoldersList);
generate.overrideConfigFile(globals, sailsConfigFileName);
break;
default:
globalsList = program.globals ?
_.uniq(globalsList.concat(program.globals)) : globalsList;
globalFoldersList = program.folders ?
_.uniq(globalFoldersList.concat(program.folders)) : globalFoldersList;
globals = generate.addGlobals(globalsList, globalFoldersList);
generate.overrideConfigFile(globals, sailsConfigFileName);
}
} else {
globalsList = program.globals ?
_.uniq(globalsList.concat(program.globals)) : globalsList;
globalFoldersList = program.folders ?
_.uniq(globalFoldersList.concat(program.folders)) : globalFoldersList;
globals = generate.addGlobals(globalsList, globalFoldersList);
generate.overrideConfigFile(globals, sailsConfigFileName);
}
if (program.show) {
console.log('Added globals: ' + globals);
}
configure.configureEslintrc(eslintConfigFileName, sailsConfigFileName, preset);
var fs = require('fs');
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var eslintConfigFileName;
var sailsConfigFileName;
// preset code style
var preset;
var updateEslintrc = function(err, data) {
if (err) {
console.log('readFile return error:');
console.log(err);
} else {
// console.log(data);
var config = JSON.parse(data);
// config.globals = _.extend(config.globals, globals);
if (config.extends.indexOf(sailsConfigFileName) > 0) {
console.log('add ' + sailsConfigFileName);
return;
}
config.extends = config.extends.concat(sailsConfigFileName);
// console.log(config);
fs.writeFileSync(eslintConfigFileName, JSON.stringify(config, null, '\t'));
console.log('add ' + sailsConfigFileName +
' and modify ' + eslintConfigFileName);
}
};
var establishEslintrc = function(answer) {
switch (answer.trim()) {
case 'yes': case 'y': case 'Y':
fs.open(eslintConfigFileName, 'w', function(err) {
if (err) {
console.log(err);
process.exit(0);
}
// console.log(fd);
console.log(eslintConfigFileName + ' and ' +
sailsConfigFileName + ' are established');
fs.writeFileSync(eslintConfigFileName,
JSON.stringify({
extends: [preset, sailsConfigFileName]
}, null, '\t'));
});
break;
case 'no': case 'n': case 'N':
console.log('Please establish ' + eslintConfigFileName + ' first!');
break;
default:
console.log('Please establish ' + eslintConfigFileName + ' first!');
break;
}
rl.close();
};
exports.configureEslintrc = function(eFileName, sFileName, presetCodeStyle) {
eslintConfigFileName = eFileName;
sailsConfigFileName = sFileName;
preset = presetCodeStyle;
fs.exists(eslintConfigFileName, function(exists) {
if (exists) {
fs.readFile(eslintConfigFileName, 'utf-8', updateEslintrc);
rl.close();
} else {
console.log(eslintConfigFileName + ' is not exists!');
rl.question('Do you want to establish config file named ' +
eslintConfigFileName +
' and set google as default coding style(yes/no): ',
establishEslintrc);
}
});
};
var _ = require('underscore');
var fs = require('fs');
// add globals default
exports.addGlobals = function(globalsList, globalFoldersList) {
var i;
var globals = {};
var globalFilesList = [];
// add all file names
for (i = 0; i < globalFoldersList.length; i++) {
globalFilesList = globalFilesList.concat(
fs.readdirSync(globalFoldersList[i])
);
}
// choose js file to add in globals
for (i = 0; i < globalFilesList.length; i++) {
var fileName = globalFilesList[i];
var suffix = fileName.substring(fileName.length - 3, fileName.length);
if (suffix === '.js' || suffix === '.JS') {
globalsList.push(fileName.substring(0, fileName.length - 3));
}
}
// keep each globals uniq
globalsList = _.uniq(globalsList);
for (i = 0; i < globalsList.length; i++) {
globals[globalsList[i]] = true;
}
return globals;
};
exports.appendConfigFile = function(globals, sailsConfigFileName) {
var eslintrcSails = {};
fs.exists(sailsConfigFileName, function(exists) {
if (exists) {
var data = fs.readFileSync(sailsConfigFileName, 'utf-8');
if (data) {
eslintrcSails.globals = _.extend(globals, JSON.parse(data).globals);
// return eslintrcSails.globals;
} else {
console.log('read ' + sailsConfigFileName + ' occurs error!');
process.exit(0);
}
} else {
console.log(sailsConfigFileName +
'is not exists, it will be created');
fs.open(sailsConfigFileName, 'w', function(err) {
if (err) {
console.log('error:' + err);
process.exit(0);
}
console.log(sailsConfigFileName + 'is created!');
});
eslintrcSails.globals = globals;
}
fs.writeFileSync(sailsConfigFileName,
JSON.stringify(eslintrcSails, null, '\t'));
});
};
exports.overrideConfigFile = function(globals, sailsConfigFileName) {
var eslintrcSails = {};
eslintrcSails.globals = globals;
fs.exists(sailsConfigFileName, function(exists) {
if (exists) {
console.log(sailsConfigFileName + ' is overrided!');
} else {
fs.open(sailsConfigFileName, 'w', function(err) {
if (err) {
console.log('error:' + err);
process.exit(0);
} else {
console.log(sailsConfigFileName + ' is created!');
}
});
}
fs.writeFileSync(sailsConfigFileName,
JSON.stringify(eslintrcSails, null, '\t'));
});
};
+3
-3
{
"name": "sails-generate-eslintrc",
"version": "1.1.1",
"version": "1.1.2",
"description": "generate eslint config file which contains sails's globals",
"main": "generate.js",
"bin": "./generate.js",
"main": "index.js",
"bin": "./index.js",
"scripts": {

@@ -8,0 +8,0 @@ "test": "echo \"Error: no test specified\" && exit 1"

@@ -5,5 +5,17 @@ # sails-generate-eslintrc

Generate eslint config file which contains sails's globals.<br/>
It will generate .eslintrc-sails and .eslintrc (if it exists, it will be updated).
It will generate .eslintrc-sails(sails globals file ) and .eslintrc (eslint config file. If it exists, it will be updated).
## Example
## Parameter
- -m --mode
+ *Default* : Add 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)
+ override: Override sails globals file by other parameter(-g, -f). If no other parameters, an empty sails globals file(.eslintrc-sails) will be created.
- -g --globals : Give globals array. Example: -g sails,test1,test2.
- -f --folders : Give folders array containing globals. Example: -f api/models,api/controllers.
- -c --config : Set eslint config file name.
- -p --preset : Set preset code style when creates a new eslint config file.
- -s --show : Show globals added.
## Files Example
- .eslintrc-sails

@@ -50,3 +62,3 @@ ```

## Usage
- global install
- global install(Recommend)
+ Install:

@@ -53,0 +65,0 @@ ```

#!/usr/bin/env node
/**
* Module dependencies.
*/
var _ = require('underscore');
var program = require('commander');
function list(val) {
return val.split(',');
}
program
.version('1.1.1')
.option('-m, --mode <string>',
'Set mode for .eslintrc-sails: update, override.' +
'Default: Add default globals')
.option('-c, --config <path>', 'Set eslint config file name')
.option('-p, --preset <string>', 'Set preset coding style, like: google')
.option('-g, --globals <items>',
'Input globals list, like: sails, mysql', list)
.option('-f, --folders <items>',
'Input global folders list, like: api/controllers, config', list)
.parse(process.argv);
var fs = require('fs');
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// var _ = require('underscore');
var globals = {};
var eslintrcSails = {};
var globalsList = ['sails'];
var prefixPath = './';
var globalFoldersList = ['api/controllers', 'api/models', 'api/services'];
var eslintConfigFileName = '.eslintrc';
var sailsConfigFileName = '.eslintrc-sails';
if (program.config) {
// console.log(program.config);
eslintConfigFileName = program.config;
}
if (program.globals) {
globalsList = globalsList.concat(program.globals);
}
if (program.folders) {
globalFoldersList = program.folders;
}
// console.log(program.folders);
// add globals default
var addGlobals = function() {
var i;
for (i = 0; i < globalsList.length; i++) {
globals[globalsList[i]] = true;
}
// add all file names
for (i = 0; i < globalFoldersList.length; i++) {
globalsList = globalsList.concat(
fs.readdirSync(prefixPath + globalFoldersList[i])
);
}
// console.log(globalsList);
// choose globas names by .js
for (i = 0; i < globalsList.length; i++) {
var fileName = globalsList[i];
var suffix = fileName.substring(fileName.length - 3, fileName.length);
if (suffix === '.js' || suffix === '.JS') {
globals[fileName.substring(0, fileName.length - 3)] = true;
}
}
};
addGlobals();
// console.log(globals);
if (program.mode) {
switch (program.mode.trim()) {
case 'update':
fs.exists(sailsConfigFileName, function(exists) {
if (exists) {
var data = fs.readFileSync(sailsConfigFileName, 'utf-8');
if (data) {
eslintrcSails = JSON.parse(data);
if (eslintrcSails.globals) {
console.log(eslintrcSails.globals);
eslintrcSails.globals = _.extend(eslintrcSails.globals, globals);
} else {
eslintrcSails.globals = globals;
}
console.log('ol');
} else {
console.log('read file error!');
}
fs.writeFileSync(sailsConfigFileName,
JSON.stringify(eslintrcSails, null, '\t'));
} else {
console.log(sailsConfigFileName +
'is not exists, it will be created');
eslintrcSails.globals = globals;
fs.open(sailsConfigFileName, 'w', function(err) {
if (err) {
console.log('error:' + err);
process.exit(0);
}
console.log(sailsConfigFileName + 'is created!');
fs.writeFileSync(sailsConfigFileName,
JSON.stringify(eslintrcSails, null, '\t'));
});
}
});
break;
default:
// console.log('default');
eslintrcSails.globals = globals;
fs.writeFileSync(sailsConfigFileName,
JSON.stringify(eslintrcSails, null, '\t'));
}
} else {
// console.log('default2');
eslintrcSails.globals = globals;
fs.writeFileSync(sailsConfigFileName,
JSON.stringify(eslintrcSails, null, '\t'));
}
// write globals to .eslintrc-sails
// eslintrcSails.globals = globals;
// console.log(eslintrcSails);
var updateGlobals = function(err, data) {
if (err) {
console.log('readFile return error:');
console.log(err);
} else {
// console.log(data);
var config = JSON.parse(data);
// config.globals = _.extend(config.globals, globals);
if (config.extends.indexOf(sailsConfigFileName) > 0) {
console.log('add ' + sailsConfigFileName);
return;
}
config.extends = config.extends.concat(sailsConfigFileName);
// console.log(config);
fs.writeFileSync(eslintConfigFileName, JSON.stringify(config, null, '\t'));
console.log('add ' + sailsConfigFileName +
' and modify ' + eslintConfigFileName);
}
};
var establishEslintrc = function(answer) {
switch (answer.trim()) {
case 'yes': case 'y': case 'Y':
fs.open(eslintConfigFileName, 'w', function(err) {
if (err) {
console.log(err);
process.exit(0);
}
// console.log(fd);
console.log(eslintConfigFileName + ' and ' +
sailsConfigFileName + ' are established');
fs.writeFileSync(eslintConfigFileName,
JSON.stringify({
extends: ['google', sailsConfigFileName]
}, null, '\t'));
});
rl.close();
break;
case 'no': case 'n': case 'N':
console.log('Please establish ' + eslintConfigFileName + ' first!');
rl.close();
break;
default:
console.log('Please establish ' + eslintConfigFileName + ' first!');
rl.close();
break;
}
};
var checkFileExists = function(exists) {
if (exists) {
fs.readFile(eslintConfigFileName, 'utf-8', updateGlobals);
rl.close();
} else {
console.log(eslintConfigFileName + ' is not exists!');
rl.question('Do you want to establish config file named ' +
eslintConfigFileName +
' and set google as default coding style(yes/no): ',
establishEslintrc);
}
};
fs.exists(eslintConfigFileName, checkFileExists);
// rl.close();