11
11
12
12
const fs = require ( 'fs' ) ;
13
13
const path = require ( 'path' ) ;
14
- const PLUGIN_NAME = require ( '../package' ) . name . replace ( / ^ e s l i n t - p l u g i n - / , '' ) ;
14
+ const packageMetadata = require ( '../package' ) ;
15
+ const PLUGIN_NAME = packageMetadata . name . replace ( / ^ e s l i n t - p l u g i n - / , '' ) ;
16
+ const PLUGIN_VERSION = packageMetadata . version ;
15
17
16
18
const configFilters = {
17
19
all : ( ) => true ,
@@ -26,13 +28,26 @@ const configFilters = {
26
28
// Plugin Definition
27
29
// ------------------------------------------------------------------------------
28
30
31
+ /**
32
+ * Loads a given rule from the filesystem and generates its documentation URL
33
+ * @param {string } ruleName The name of the rule
34
+ * @returns {Rule } The ESLint rule to export
35
+ */
36
+ function loadRule ( ruleName ) {
37
+ const rule = require ( path . join ( __dirname , 'rules' , ruleName ) ) ;
38
+
39
+ rule . meta . docs . url =
40
+ `https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/v${ PLUGIN_VERSION } /docs/rules/${ ruleName } .md` ;
41
+
42
+ return rule ;
43
+ }
29
44
30
45
// import all rules in lib/rules
31
46
const allRules = fs
32
47
. readdirSync ( `${ __dirname } /rules` )
33
48
. filter ( fileName => fileName . endsWith ( '.js' ) && / ^ [ ^ . _ ] / . test ( fileName ) )
34
49
. map ( fileName => fileName . replace ( / \. j s $ / , '' ) )
35
- . reduce ( ( rules , ruleName ) => Object . assign ( rules , { [ ruleName ] : require ( path . join ( __dirname , 'rules' , ruleName ) ) } ) , { } ) ;
50
+ . reduce ( ( rules , ruleName ) => Object . assign ( rules , { [ ruleName ] : loadRule ( ruleName ) } ) , { } ) ;
36
51
37
52
module . exports . rules = allRules ;
38
53
0 commit comments