@@ -16,81 +16,68 @@ const path = require("path")
16
16
// Main
17
17
//------------------------------------------------------------------------------
18
18
19
- const ROOT = path . resolve ( __dirname , "../lib/rules" )
20
- const README = path . resolve ( __dirname , "../README.md" )
21
- const RULES_JS = path . resolve ( __dirname , "../lib/rules.js" )
22
- const RECOMMENDED_JSON = path . resolve ( __dirname , "../lib/recommended.json" )
19
+ const root = path . resolve ( __dirname , "../lib/rules" )
20
+ const readmeFile = path . resolve ( __dirname , "../README.md" )
21
+ const recommendedRulesFile = path . resolve ( __dirname , "../lib/recommended-rules.js" )
22
+ const categories = [ "Possible Errors" , "Best Practices" , "Stylistic Issues" ]
23
+ const tablePlaceholder = / < ! - - R U L E S _ T A B L E _ S T A R T - - > [ \s \S ] * < ! - - R U L E S _ T A B L E _ E N D - - > /
24
+ const readmeContent = fs . readFileSync ( readmeFile , "utf8" )
25
+
23
26
const STAR = "⭐️"
24
27
const PEN = "✒️"
25
- const CATEGORIES = [ "Possible Errors" , "Best Practices" , "Stylistic Issues" ]
26
- const TABLE_PLACE_HOLDER = / < ! - - R U L E S _ T A B L E _ S T A R T - - > [ \s \S ] * < ! - - R U L E S _ T A B L E _ E N D - - > /
27
-
28
- const ruleNames = fs . readdirSync ( ROOT )
29
- . filter ( file => path . extname ( file ) === ".js" )
30
- . map ( file => path . basename ( file , ".js" ) )
31
28
32
- const rules = new Map (
33
- ruleNames . map ( name => [
34
- name ,
35
- require ( path . join ( ROOT , name ) ) ,
36
- ] )
37
- )
29
+ const rules = fs . readdirSync ( root )
30
+ . filter ( file => path . extname ( file ) === ".js" )
31
+ . map ( file => path . basename ( file , ".js" ) )
32
+ . map ( fileName => [
33
+ fileName ,
34
+ require ( path . join ( root , fileName ) ) ,
35
+ ] )
38
36
39
- const RULE_TABLE = CATEGORIES . map ( category => `### ${ category }
37
+ const rulesTableContent = categories . map ( category => `
38
+ ### ${ category }
40
39
41
- | | Rule ID | Description |
42
- |:---|:--------|:------------|
43
- ${
44
- Array . from ( rules . entries ( ) )
45
- . filter ( entry => entry [ 1 ] . meta . docs . category === category )
46
- . map ( entry => {
47
- const name = entry [ 0 ]
48
- const meta = entry [ 1 ] . meta
49
- const mark = `${ meta . docs . recommended ? STAR : "" } ${ meta . fixable ? PEN : "" } `
50
- const link = `[${ name } ](./docs/rules/${ name } .md)`
51
- const description = meta . docs . description || "(no description)"
52
- return `| ${ mark } | ${ link } | ${ description } |`
53
- } )
54
- . join ( "\n" )
55
- }
40
+ | | Rule ID | Description |
41
+ |:---|:--------|:------------|
42
+ ${
43
+ rules
44
+ . filter ( entry => entry [ 1 ] . meta . docs . category === category )
45
+ . map ( entry => {
46
+ const name = entry [ 0 ]
47
+ const meta = entry [ 1 ] . meta
48
+ const mark = `${ meta . docs . recommended ? STAR : "" } ${ meta . fixable ? PEN : "" } `
49
+ const link = `[${ name } ](./docs/rules/${ name } .md)`
50
+ const description = meta . docs . description || "(no description)"
51
+ return `| ${ mark } | ${ link } | ${ description } |`
52
+ } )
53
+ . join ( "\n" )
54
+ }
56
55
` ) . join ( "\n" )
57
56
58
- const RULES_JS_CONTENT = `/**
59
- * @author Toru Nagashima
60
- * @copyright 2017 Toru Nagashima. All rights reserved.
61
- * See LICENSE file in root directory for full license.
62
- */
63
- "use strict"
64
-
65
- module.exports = {
66
- ${ ruleNames . map ( name => ` "${ name } ": require("./rules/${ name } "),` ) . join ( "\n" ) }
67
- }
68
- `
57
+ const recommendedRules = rules . reduce ( ( obj , entry ) => {
58
+ const name = entry [ 0 ]
59
+ const recommended = entry [ 1 ] . meta . docs . recommended
60
+ const status = recommended ? 'error' : 'off'
61
+ obj [ name ] = status ;
62
+ return obj ;
63
+ } , { } ) ;
69
64
70
- const recommendedConf = {
71
- parser : "vue-eslint-parser" ,
72
- env : { es6 : true } ,
73
- rules : Array . from ( rules . entries ( ) )
74
- . reduce ( ( obj , entry ) => {
75
- const name = entry [ 0 ]
76
- const recommended = entry [ 1 ] . meta . docs . recommended
77
- obj [ `vue/${ name } ` ] = recommended ? "error" : "off"
78
- return obj
79
- } , { } ) ,
80
- }
65
+ const recommendedRulesContent = `/*
66
+ * IMPORTANT!
67
+ * This file has been automatically generated,
68
+ * in order to update it's content execute "npm run update"
69
+ */
70
+ module.exports = ${ JSON . stringify ( recommendedRules , null , 2 ) } `
81
71
82
72
fs . writeFileSync (
83
- README ,
84
- fs . readFileSync ( README , "utf8" ) . replace (
85
- TABLE_PLACE_HOLDER ,
86
- `<!--RULES_TABLE_START-->\n${ RULE_TABLE } \n<!--RULES_TABLE_END-->`
87
- )
88
- )
89
- fs . writeFileSync (
90
- RULES_JS ,
91
- RULES_JS_CONTENT
73
+ readmeFile ,
74
+ readmeContent . replace (
75
+ tablePlaceholder ,
76
+ `<!--RULES_TABLE_START-->\n${ rulesTableContent } \n<!--RULES_TABLE_END-->`
77
+ )
92
78
)
79
+
93
80
fs . writeFileSync (
94
- RECOMMENDED_JSON ,
95
- JSON . stringify ( recommendedConf , null , 4 )
81
+ recommendedRulesFile ,
82
+ recommendedRulesContent
96
83
)
0 commit comments