/
generate-index.js
69 lines (59 loc) · 1.89 KB
/
generate-index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
* @author Toru Nagashima
* @copyright 2015 Toru Nagashima. All rights reserved.
* See LICENSE file in root directory for full license.
*/
"use strict"
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const path = require("path")
/* eslint-env shelljs */
require("shelljs/global")
//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
/**
* @param {string} name - A file name to convert.
* @returns {string} The base name of the file name.
*/
function toBasename(name) {
return path.basename(name, ".js")
}
/**
* @param {string} name - A rule name to convert.
* @returns {string} The definition code of the rule creator.
*/
function toRuleDefinition(name) {
return ` "${name}": require("./lib/rules/${name}"),`
}
/**
* @param {string} name - A rule name to convert.
* @returns {string} The definition code of the default rule level.
*/
function toRuleLevel(name) {
return ` "${name}": "off",`
}
//------------------------------------------------------------------------------
// Main
//------------------------------------------------------------------------------
const ruleNames = ls("lib/rules").map(toBasename);
[
"/**",
" * @author Toru Nagashima",
" * @copyright 2015 Toru Nagashima. All rights reserved.",
" * See LICENSE file in root directory for full license.",
" */",
"\"use strict\"",
"",
"module.exports = {",
" rules: {",
ruleNames.map(toRuleDefinition).join("\n"),
" },",
" rulesConfig: {",
ruleNames.map(toRuleLevel).join("\n"),
" },",
" configs: {recommended: require(\"./conf/recommended.json\")},",
"}",
"",
].join("\n").to("index.js")