js_dependency 0.3.13 → 0.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9b9f351689b4d75a421eda510b534970d54309e031496ed3b1e01e25b0ff0a2
4
- data.tar.gz: bc0d1e40069754c33aa375b14dbc4d7e29a4d3ae09125dc330a03d4daf0dc4ab
3
+ metadata.gz: 249f9142ce332c3874696fb62d0478365ed719caea8088c75b4059ade79931cb
4
+ data.tar.gz: cf44ea94425033c0905d29f496c65d0bbf32c45d7fc8d3681ad1d5a66e9762d0
5
5
  SHA512:
6
- metadata.gz: 43af3b1752058c11f4d549275a2cb0bc969fc00cf57c00c72ad5af857fc4af321e918e7858fc79677c8822a5a73c9c3d43995239574be5975603fa03f60a9da8
7
- data.tar.gz: 931e374285441b95d3a00de41318532e62ce40933969e30a937c8cc175bd1615eb29f5f2e2464db24966bd59ff3ee86f13e103e8f8b61ffe45ee5f0ad8f40938
6
+ metadata.gz: a4427662cc2db7567b4bb041416aea5b7b5d60f16a7c112e215670de211c20b4457265f95d087647bc934d96a3f5fa1052e7078c610f056fb0dbf0525c6cc0d9
7
+ data.tar.gz: 2ee5a1db44106a777b7b583204db51fcc37315635101a995bf79110cc99a3e05c0fb1434c2e9a6c4becbd7615237facd0e9ed9b53ca1522d98a85c07bd490302
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
- # `rubocop --auto-gen-config --exclude-limit 1`
3
- # on 2022-08-14 11:04:22 UTC using RuboCop version 1.35.0.
2
+ # `rubocop --auto-gen-config`
3
+ # on 2022-08-21 04:15:24 UTC using RuboCop version 1.35.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -9,19 +9,24 @@
9
9
  # Offense count: 2
10
10
  # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, CountRepeatedAttributes.
11
11
  Metrics/AbcSize:
12
- Max: 29
12
+ Max: 31
13
+
14
+ # Offense count: 1
15
+ # Configuration parameters: CountComments, CountAsOne.
16
+ Metrics/ClassLength:
17
+ Max: 118
13
18
 
14
19
  # Offense count: 2
15
20
  # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
16
21
  Metrics/CyclomaticComplexity:
17
22
  Max: 15
18
23
 
19
- # Offense count: 7
24
+ # Offense count: 10
20
25
  # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
21
26
  Metrics/MethodLength:
22
27
  Max: 19
23
28
 
24
- # Offense count: 3
29
+ # Offense count: 4
25
30
  # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
26
31
  Metrics/ParameterLists:
27
32
  Max: 9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.14] - 2022-08-14
4
+
5
+ - Add export_markdown_report cli. This will export the markdown report to a file for GitHub comment.
6
+
3
7
  ## [0.3.13] - 2022-08-14
4
8
 
5
9
  - Add rspec test.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- js_dependency (0.3.13)
4
+ js_dependency (0.3.14)
5
5
  pathname
6
6
  thor
7
7
  yaml
data/README.md CHANGED
@@ -88,6 +88,70 @@ js_dependency -s ./src -t ./src/App.vue ./src/components/Sub.vue -o ./mermaid.tx
88
88
  js_dependency -s ./src -t ./src/App.vue -o ./mermaid.txt -c 2 -p 2 -n 1 -e excludeWord1 excludeWord2 -a @:./pages
89
89
  ```
90
90
 
91
+ #### Export Markdown report
92
+
93
+ ```shell
94
+ js_dependency export_markdown_report -s ./src -t ./src/App.vue -c 2 -p 2 -n 1 -a @:./pages --identifier your_uniq_identifier_for_upsert_report
95
+ ```
96
+
97
+ Like this:
98
+
99
+ ```
100
+ ## JsDependency Reports
101
+
102
+ ### Orphan modules
103
+
104
+ 3 orphaned modules.
105
+
106
+ * ``components/sub/Exclude.vue``
107
+ * ``pages/app.js``
108
+ * ``utils/calculation.js``
109
+
110
+ ### Module dependency
111
+
112
+ \```mermaid
113
+ flowchart LR
114
+ components_Button["components/Button"] --> components_sub_Title.vue["sub/Title.vue"]
115
+ components_Button["components/Button"] --> fixtures_index_creator_self_call_src_components_sub_Exclude["sub/Exclude"]
116
+ components_New.vue["components/New.vue"] --> components_Button["components/Button"]
117
+ components_New.vue["components/New.vue"] --> components_modal.js["components/modal.js"]
118
+ pages_app.js["pages/app.js"] --> components_New.vue["components/New.vue"]
119
+ utils_calculation.js["utils/calculation.js"] --> external_lib["external/lib"]
120
+ style components_New.vue stroke:#f9f,stroke-width:4px
121
+ style utils_calculation.js stroke:#f9f,stroke-width:4px
122
+ \```
123
+
124
+ <!-- identifier -->
125
+
126
+ ```
127
+
128
+ ## JsDependency Reports
129
+
130
+ ### Orphan modules
131
+
132
+ 3 orphaned modules.
133
+
134
+ * ``components/sub/Exclude.vue``
135
+ * ``pages/app.js``
136
+ * ``utils/calculation.js``
137
+
138
+ ### Module dependency
139
+
140
+ ```mermaid
141
+ flowchart LR
142
+ components_Button["components/Button"] --> components_sub_Title.vue["sub/Title.vue"]
143
+ components_Button["components/Button"] --> fixtures_index_creator_self_call_src_components_sub_Exclude["sub/Exclude"]
144
+ components_New.vue["components/New.vue"] --> components_Button["components/Button"]
145
+ components_New.vue["components/New.vue"] --> components_modal.js["components/modal.js"]
146
+ pages_app.js["pages/app.js"] --> components_New.vue["components/New.vue"]
147
+ utils_calculation.js["utils/calculation.js"] --> external_lib["external/lib"]
148
+ style components_New.vue stroke:#f9f,stroke-width:4px
149
+ style utils_calculation.js stroke:#f9f,stroke-width:4px
150
+ ```
151
+
152
+ <!-- identifier -->
153
+
154
+
91
155
  #### Export parents components list
92
156
 
93
157
  ```shell
@@ -109,5 +109,32 @@ module JsDependency
109
109
  def version
110
110
  puts JsDependency::VERSION
111
111
  end
112
+
113
+ desc "export_markdown_report", "Output markdown formatted report."
114
+ method_option :src_path, type: :string, aliases: "-s", desc: "Root folder."
115
+ method_option :target_paths, type: :array, aliases: "-t", desc: "Target file that you want to analyze."
116
+ method_option :output_path, type: :string, aliases: "-o", desc: "Output file path"
117
+ method_option :child_analyze_level, type: :numeric, aliases: "-c", desc: "Output level of child dependency"
118
+ method_option :parent_analyze_level, type: :numeric, aliases: "-p", desc: "Output level of parent dependency"
119
+ method_option :name_level, type: :numeric, aliases: "-n", desc: "Output name level"
120
+ method_option :excludes, type: :array, aliases: "-e", desc: "Exclude the word that is included in the path"
121
+ method_option :alias_paths, type: :hash, aliases: "-a", desc: "Alias paths by hash format."
122
+ method_option :file_config, type: :string, aliases: "-f", desc: "Configuration file path."
123
+ method_option :identifier, type: :string, desc: "Embed id in markdown."
124
+
125
+ def export_markdown_report
126
+ args = JsDependency::CliUtils::Yaml.new(path: options[:file_config]).args
127
+ config = JsDependency::CliUtils::Config.new(options, args)
128
+ puts JsDependency.export_markdown_report(
129
+ config.src_path,
130
+ config.target_paths,
131
+ child_analyze_level: config.child_analyze_level,
132
+ parent_analyze_level: config.parent_analyze_level,
133
+ alias_paths: config.alias_paths,
134
+ name_level: config.name_level,
135
+ excludes: config.excludes,
136
+ identifier: config.identifier
137
+ )
138
+ end
112
139
  end
113
140
  end
@@ -4,7 +4,7 @@ module JsDependency
4
4
  module CliUtils
5
5
  class Config
6
6
  attr_reader :src_path, :target_paths, :target_path, :child_analyze_level, :parent_analyze_level, :output_path,
7
- :alias_paths, :name_level, :excludes
7
+ :alias_paths, :name_level, :excludes, :identifier
8
8
 
9
9
  # @param [Hash] options
10
10
  # @param [Hash] args
@@ -20,6 +20,7 @@ module JsDependency
20
20
  @alias_paths = options[:alias_paths] || args[:alias_paths] || {}
21
21
  @name_level = options[:name_level] || args[:name_level] || 1
22
22
  @excludes = calc_excludes(options[:excludes], args[:excludes])
23
+ @identifier = options[:identifier] || nil
23
24
  end
24
25
 
25
26
  private
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JsDependency
4
+ module Report
5
+ class Markdown
6
+ attr_reader :orphan_list, :mermaid_markdown, :identifier
7
+
8
+ # @param [Array] orphan_list
9
+ # @param [String] mermaid_markdown
10
+ # @param [nil, String] identifier
11
+ def initialize(orphan_list, mermaid_markdown, identifier: nil)
12
+ @orphan_list = orphan_list || []
13
+ @mermaid_markdown = mermaid_markdown || ""
14
+ @identifier = identifier || "js_dependency_report_identifier"
15
+ end
16
+
17
+ # @return [String]
18
+ def export
19
+ markdown = <<~"MAKRDOWNTEXT"
20
+ ## JsDependency Reports
21
+
22
+ ### Orphan modules
23
+
24
+ MAKRDOWNTEXT
25
+
26
+ if @orphan_list.empty?
27
+ markdown += "No orphaned module !\n\n"
28
+ else
29
+ markdown += "#{@orphan_list.size} orphaned modules.\n\n"
30
+ markdown += "#{@orphan_list.map { |str| "* ``#{str}``" }.join("\n")}\n\n"
31
+ end
32
+
33
+ markdown += <<~"MAKRDOWNTEXT"
34
+ ### Module dependency
35
+
36
+ ```mermaid
37
+ MAKRDOWNTEXT
38
+ markdown += @mermaid_markdown.to_s
39
+
40
+ markdown += <<~"MAKRDOWNTEXT"
41
+ ```
42
+
43
+ MAKRDOWNTEXT
44
+
45
+ markdown += "<!-- #{@identifier} -->"
46
+ markdown
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsDependency
4
- VERSION = "0.3.13"
4
+ VERSION = "0.3.14"
5
5
  end
data/lib/js_dependency.rb CHANGED
@@ -9,6 +9,7 @@ require_relative "js_dependency/mermaid/target_pathname"
9
9
  require_relative "js_dependency/source_analysis/leave"
10
10
  require_relative "js_dependency/source_analysis/orphan"
11
11
  require_relative "js_dependency/pathname_utility"
12
+ require_relative "js_dependency/report/markdown"
12
13
  require_relative "js_dependency/cli_utils/yaml"
13
14
  require_relative "js_dependency/cli_utils/config"
14
15
  require "pathname"
@@ -123,4 +124,33 @@ module JsDependency
123
124
  output_pathname&.write(output.sort.join("\n"))
124
125
  output
125
126
  end
127
+
128
+ # @param [String] src_path
129
+ # @param [Array<String>] target_paths
130
+ # @param [String] orientation
131
+ # @param [Hash, nil] alias_paths
132
+ # @param [Integer] child_analyze_level
133
+ # @param [Integer] parent_analyze_level
134
+ # @param [Integer] name_level
135
+ # @param [String, nil] output_path
136
+ # @param [Array, nil] excludes
137
+ # @param [String, nil] identifier
138
+ # @return [String]
139
+ def self.export_markdown_report(src_path, target_paths, orientation: "LR", alias_paths: nil, child_analyze_level: 1,
140
+ parent_analyze_level: 1, name_level: 1, excludes: nil, identifier: nil)
141
+ mermaid_markdown = JsDependency.export_mermaid(
142
+ src_path,
143
+ target_paths,
144
+ orientation: orientation,
145
+ alias_paths: alias_paths,
146
+ child_analyze_level: child_analyze_level,
147
+ parent_analyze_level: parent_analyze_level,
148
+ name_level: name_level,
149
+ excludes: excludes
150
+ )
151
+
152
+ orphan_list = JsDependency.orphan(src_path, alias_paths: alias_paths)
153
+
154
+ JsDependency::Report::Markdown.new(orphan_list, mermaid_markdown, identifier: identifier).export
155
+ end
126
156
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: js_dependency
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.13
4
+ version: 0.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - junara
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-14 00:00:00.000000000 Z
11
+ date: 2022-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pathname
@@ -170,6 +170,7 @@ files:
170
170
  - lib/js_dependency/mermaid/target_pathname.rb
171
171
  - lib/js_dependency/pathname_utility.rb
172
172
  - lib/js_dependency/replace_path_alias.rb
173
+ - lib/js_dependency/report/markdown.rb
173
174
  - lib/js_dependency/source_analysis/leave.rb
174
175
  - lib/js_dependency/source_analysis/orphan.rb
175
176
  - lib/js_dependency/target_pathname.rb