package-audit 0.3.0 → 0.4.0

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/package/audit/cli.rb +32 -32
  3. data/lib/package/audit/const/fields.rb +4 -4
  4. data/lib/package/audit/const/file.rb +1 -0
  5. data/lib/package/audit/const/yaml.rb +13 -0
  6. data/lib/package/audit/enum/option.rb +13 -0
  7. data/lib/package/audit/enum/report.rb +12 -0
  8. data/lib/package/audit/enum/technology.rb +14 -0
  9. data/lib/package/audit/formatter/risk.rb +1 -1
  10. data/lib/package/audit/formatter/version.rb +1 -1
  11. data/lib/package/audit/formatter/version_date.rb +1 -1
  12. data/lib/package/audit/formatter/vulnerability.rb +1 -1
  13. data/lib/package/audit/{package.rb → models/package.rb} +7 -6
  14. data/lib/package/audit/npm/node_collection.rb +21 -10
  15. data/lib/package/audit/npm/vulnerability_finder.rb +1 -1
  16. data/lib/package/audit/npm/yarn_lock_parser.rb +1 -1
  17. data/lib/package/audit/ruby/bundler_specs.rb +1 -1
  18. data/lib/package/audit/ruby/gem_collection.rb +23 -6
  19. data/lib/package/audit/ruby/gem_meta_data.rb +1 -1
  20. data/lib/package/audit/ruby/vulnerability_finder.rb +1 -1
  21. data/lib/package/audit/services/command_parser.rb +103 -0
  22. data/lib/package/audit/services/package_filter.rb +39 -0
  23. data/lib/package/audit/services/package_finder.rb +58 -0
  24. data/lib/package/audit/{printer.rb → services/package_printer.rb} +12 -11
  25. data/lib/package/audit/{risk_calculator.rb → services/risk_calculator.rb} +8 -4
  26. data/lib/package/audit/technology/detector.rb +40 -0
  27. data/lib/package/audit/technology/validator.rb +56 -0
  28. data/lib/package/audit/util/summary_printer.rb +20 -9
  29. data/lib/package/audit/version.rb +1 -1
  30. data/sig/package/audit/cli.rbs +2 -0
  31. data/sig/package/audit/const/fields.rbs +2 -1
  32. data/sig/package/audit/const/file.rbs +1 -0
  33. data/sig/package/audit/const/yaml.rbs +13 -0
  34. data/sig/package/audit/enum/option.rbs +13 -0
  35. data/sig/package/audit/enum/report.rbs +12 -0
  36. data/sig/package/audit/enum/technology.rbs +12 -0
  37. data/sig/package/audit/{package.rbs → models/package.rbs} +3 -1
  38. data/sig/package/audit/{risk.rbs → models/risk.rbs} +1 -1
  39. data/sig/package/audit/npm/node_collection.rbs +4 -5
  40. data/sig/package/audit/npm/vulnerability_finder.rbs +1 -1
  41. data/sig/package/audit/ruby/gem_collection.rbs +4 -1
  42. data/sig/package/audit/services/command_parser.rbs +31 -0
  43. data/sig/package/audit/services/package_filter.rbs +19 -0
  44. data/sig/package/audit/services/package_finder.rbs +23 -0
  45. data/sig/package/audit/{printer.rbs → services/package_printer.rbs} +3 -3
  46. data/sig/package/audit/technology/detector.rbs +19 -0
  47. data/sig/package/audit/technology/validator.rbs +19 -0
  48. data/sig/package/audit/util/summary_printer.rbs +5 -5
  49. metadata +30 -14
  50. data/lib/package/audit/command_service.rb +0 -187
  51. data/sig/package/audit/command_service.rbs +0 -29
  52. /data/lib/package/audit/{risk.rb → models/risk.rb} +0 -0
  53. /data/lib/package/audit/{duplicate_package_merger.rb → services/duplicate_package_merger.rb} +0 -0
  54. /data/sig/package/audit/{duplicate_package_merger.rbs → services/duplicate_package_merger.rbs} +0 -0
  55. /data/sig/package/audit/{risk_calculator.rbs → services/risk_calculator.rbs} +0 -0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: package-audit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vadim Kononov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-05 00:00:00.000000000 Z
11
+ date: 2023-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler-audit
@@ -49,64 +49,80 @@ extra_rdoc_files: []
49
49
  files:
50
50
  - exe/package-audit
51
51
  - lib/package/audit/cli.rb
52
- - lib/package/audit/command_service.rb
53
52
  - lib/package/audit/const/cmd.rb
54
53
  - lib/package/audit/const/fields.rb
55
54
  - lib/package/audit/const/file.rb
56
55
  - lib/package/audit/const/time.rb
57
- - lib/package/audit/duplicate_package_merger.rb
56
+ - lib/package/audit/const/yaml.rb
58
57
  - lib/package/audit/enum/environment.rb
58
+ - lib/package/audit/enum/option.rb
59
+ - lib/package/audit/enum/report.rb
59
60
  - lib/package/audit/enum/risk_explanation.rb
60
61
  - lib/package/audit/enum/risk_type.rb
62
+ - lib/package/audit/enum/technology.rb
61
63
  - lib/package/audit/enum/vulnerability_type.rb
62
64
  - lib/package/audit/formatter/base.rb
63
65
  - lib/package/audit/formatter/risk.rb
64
66
  - lib/package/audit/formatter/version.rb
65
67
  - lib/package/audit/formatter/version_date.rb
66
68
  - lib/package/audit/formatter/vulnerability.rb
69
+ - lib/package/audit/models/package.rb
70
+ - lib/package/audit/models/risk.rb
67
71
  - lib/package/audit/npm/node_collection.rb
68
72
  - lib/package/audit/npm/npm_meta_data.rb
69
73
  - lib/package/audit/npm/vulnerability_finder.rb
70
74
  - lib/package/audit/npm/yarn_lock_parser.rb
71
- - lib/package/audit/package.rb
72
- - lib/package/audit/printer.rb
73
- - lib/package/audit/risk.rb
74
- - lib/package/audit/risk_calculator.rb
75
75
  - lib/package/audit/ruby/bundler_specs.rb
76
76
  - lib/package/audit/ruby/gem_collection.rb
77
77
  - lib/package/audit/ruby/gem_meta_data.rb
78
78
  - lib/package/audit/ruby/vulnerability_finder.rb
79
+ - lib/package/audit/services/command_parser.rb
80
+ - lib/package/audit/services/duplicate_package_merger.rb
81
+ - lib/package/audit/services/package_filter.rb
82
+ - lib/package/audit/services/package_finder.rb
83
+ - lib/package/audit/services/package_printer.rb
84
+ - lib/package/audit/services/risk_calculator.rb
85
+ - lib/package/audit/technology/detector.rb
86
+ - lib/package/audit/technology/validator.rb
79
87
  - lib/package/audit/util/bash_color.rb
80
88
  - lib/package/audit/util/summary_printer.rb
81
89
  - lib/package/audit/version.rb
82
90
  - sig/package/audit/cli.rbs
83
- - sig/package/audit/command_service.rbs
84
91
  - sig/package/audit/const/cmd.rbs
85
92
  - sig/package/audit/const/fields.rbs
86
93
  - sig/package/audit/const/file.rbs
87
94
  - sig/package/audit/const/time.rbs
88
- - sig/package/audit/duplicate_package_merger.rbs
95
+ - sig/package/audit/const/yaml.rbs
89
96
  - sig/package/audit/enum/environment.rbs
97
+ - sig/package/audit/enum/option.rbs
98
+ - sig/package/audit/enum/report.rbs
90
99
  - sig/package/audit/enum/risk_explanation.rbs
91
100
  - sig/package/audit/enum/risk_type.rbs
101
+ - sig/package/audit/enum/technology.rbs
92
102
  - sig/package/audit/enum/vulnerability_type.rbs
93
103
  - sig/package/audit/formatter/base.rbs
94
104
  - sig/package/audit/formatter/risk_printer.rbs
95
105
  - sig/package/audit/formatter/version_date.rbs
96
106
  - sig/package/audit/formatter/version_printer.rbs
97
107
  - sig/package/audit/formatter/vulnerability.rbs
108
+ - sig/package/audit/models/package.rbs
109
+ - sig/package/audit/models/risk.rbs
98
110
  - sig/package/audit/npm/node_collection.rbs
99
111
  - sig/package/audit/npm/npm_meta_data.rbs
100
112
  - sig/package/audit/npm/vulnerability_finder.rbs
101
113
  - sig/package/audit/npm/yarn_lock_parser.rbs
102
- - sig/package/audit/package.rbs
103
- - sig/package/audit/printer.rbs
104
- - sig/package/audit/risk.rbs
105
- - sig/package/audit/risk_calculator.rbs
106
114
  - sig/package/audit/ruby/bundler_specs.rbs
107
115
  - sig/package/audit/ruby/gem_collection.rbs
108
116
  - sig/package/audit/ruby/gem_meta_data.rbs
109
117
  - sig/package/audit/ruby/vulnerability_finder.rbs
118
+ - sig/package/audit/services/command_parser.rbs
119
+ - sig/package/audit/services/duplicate_package_merger.rbs
120
+ - sig/package/audit/services/package_filter.rbs
121
+ - sig/package/audit/services/package_finder.rbs
122
+ - sig/package/audit/services/package_printer.rbs
123
+ - sig/package/audit/services/risk_calculator.rbs
124
+ - sig/package/audit/technology/detector.rbs
125
+ - sig/package/audit/technology/validator.rbs
110
126
  - sig/package/audit/util/bash_color.rbs
111
127
  - sig/package/audit/util/summary_printer.rbs
112
128
  - sig/package/audit/version.rbs
@@ -1,187 +0,0 @@
1
- require_relative 'const/cmd'
2
- require_relative 'const/file'
3
-
4
- module Package
5
- module Audit
6
- class CommandService # rubocop:disable Metrics/ClassLength
7
- RUBY_GEM = 'ruby gem'
8
- NODE_MODULE = 'node module'
9
-
10
- def initialize(dir, options)
11
- @dir = dir
12
- @options = options
13
- end
14
-
15
- def all # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
16
- pkgs = []
17
-
18
- if ruby?
19
- gems = Ruby::GemCollection.new(@dir).all
20
- pkgs += gems
21
- Printer.new(gems, @options).print(Const::Fields::REPORT)
22
-
23
- unless @options[:csv]
24
- if gems.any?
25
- Util::SummaryPrinter.statistics(RUBY_GEM, gems)
26
- Util::SummaryPrinter.vulnerable(RUBY_GEM, Const::Cmd::BUNDLE_AUDIT)
27
- else
28
- print_success_message "There are no deprecated, outdated or vulnerable #{RUBY_GEM}s!"
29
- end
30
- end
31
- end
32
-
33
- if node?
34
- npms = Npm::NodeCollection.new(@dir).all
35
- pkgs += npms
36
- Printer.new(npms, @options).print(Const::Fields::REPORT)
37
-
38
- unless @options[:csv]
39
- if npms.any?
40
- Util::SummaryPrinter.statistics(NODE_MODULE, npms)
41
- Util::SummaryPrinter.vulnerable(NODE_MODULE, Const::Cmd::YARN_AUDIT)
42
- else
43
- print_success_message "There are no deprecated, outdated or vulnerable #{NODE_MODULE}s!"
44
- end
45
- end
46
- end
47
-
48
- pkgs.any?
49
- end
50
-
51
- def vulnerable # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
52
- pkgs = []
53
-
54
- if ruby?
55
- gems = Ruby::GemCollection.new(@dir).vulnerable
56
- pkgs += gems
57
- Printer.new(gems, @options).print(Const::Fields::VULNERABLE)
58
-
59
- unless @options[:csv]
60
- if gems.any?
61
- Util::SummaryPrinter.total(RUBY_GEM, gems)
62
- Util::SummaryPrinter.vulnerable(RUBY_GEM, Const::Cmd::BUNDLE_AUDIT)
63
- else
64
- print_success_message "There are no #{RUBY_GEM} vulnerabilities!"
65
- end
66
- end
67
- end
68
-
69
- if node?
70
- npms = Npm::NodeCollection.new(@dir).vulnerable
71
- pkgs += npms
72
- Printer.new(npms, @options).print(Const::Fields::VULNERABLE)
73
-
74
- unless @options[:csv]
75
- if npms.any?
76
- Util::SummaryPrinter.total(NODE_MODULE, npms)
77
- Util::SummaryPrinter.vulnerable(NODE_MODULE, Const::Cmd::YARN_AUDIT)
78
- else
79
- print_success_message "There are no #{NODE_MODULE} vulnerabilities!"
80
- end
81
- end
82
- end
83
-
84
- pkgs.any?
85
- end
86
-
87
- def outdated # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
88
- pkgs = []
89
-
90
- if ruby?
91
- gems = Ruby::GemCollection.new(@dir).outdated
92
- pkgs += gems
93
- Printer.new(gems, @options).print(Const::Fields::OUTDATED)
94
-
95
- unless @options[:csv]
96
- if gems.any?
97
- Util::SummaryPrinter.total(RUBY_GEM, gems)
98
- else
99
- print_success_message "There are no outdated #{RUBY_GEM}s!"
100
- end
101
- end
102
- end
103
-
104
- if node?
105
- npms = Npm::NodeCollection.new(@dir).outdated
106
- pkgs += npms
107
- Printer.new(npms, @options).print(Const::Fields::OUTDATED)
108
-
109
- unless @options[:csv]
110
- if npms.any?
111
- Util::SummaryPrinter.total(NODE_MODULE, npms)
112
- else
113
- print_success_message "There are no outdated #{NODE_MODULE}s!"
114
- end
115
- end
116
- end
117
-
118
- pkgs.any?
119
- end
120
-
121
- def deprecated # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
122
- pkgs = []
123
-
124
- if ruby?
125
- gems = Ruby::GemCollection.new(@dir).deprecated
126
- pkgs += gems
127
- Printer.new(gems, @options).print(Const::Fields::OUTDATED)
128
-
129
- unless @options[:csv]
130
- if gems.any?
131
- Util::SummaryPrinter.total(RUBY_GEM, gems)
132
- Util::SummaryPrinter.deprecated
133
- else
134
- print_success_message "There are no potentially deprecated #{RUBY_GEM}s!"
135
- end
136
- end
137
- end
138
-
139
- if node?
140
- npms = Npm::NodeCollection.new(@dir).deprecated
141
- pkgs += npms
142
- Printer.new(npms, @options).print(Const::Fields::OUTDATED)
143
-
144
- unless @options[:csv]
145
- if npms.any?
146
- Util::SummaryPrinter.total(NODE_MODULE, npms)
147
- Util::SummaryPrinter.deprecated
148
- else
149
- print_success_message "There are no potentially deprecated #{NODE_MODULE}s!"
150
- end
151
- end
152
- end
153
-
154
- pkgs.any?
155
- end
156
-
157
- private
158
-
159
- def ruby?
160
- gemfile_present = File.exist?("#{@dir}/#{Const::File::GEMFILE}")
161
- gemfile_lock_present = File.exist?("#{@dir}/#{Const::File::GEMFILE_LOCK}")
162
-
163
- if gemfile_present && gemfile_lock_present
164
- true
165
- elsif gemfile_present
166
- raise "#{Const::File::GEMFILE_LOCK} was not found in #{@dir}/"
167
- end
168
- end
169
-
170
- def node?
171
- package_json_present = File.exist?("#{@dir}/#{Const::File::PACKAGE_JSON}")
172
- package_lock_json_present = File.exist?("#{@dir}/#{Const::File::PACKAGE_LOCK_JSON}")
173
- yarn_lock_present = File.exist?("#{@dir}/#{Const::File::YARN_LOCK}")
174
-
175
- if package_json_present && (package_lock_json_present || yarn_lock_present)
176
- true
177
- elsif package_json_present
178
- raise "#{Const::File::PACKAGE_LOCK_JSON} or #{Const::File::YARN_LOCK} was not found in #{@dir}/"
179
- end
180
- end
181
-
182
- def print_success_message(msg)
183
- puts Util::BashColor.green msg
184
- end
185
- end
186
- end
187
- end
@@ -1,29 +0,0 @@
1
- module Package
2
- module Audit
3
- class CommandService
4
- NODE_MODULE: String
5
- RUBY_GEM: String
6
-
7
- @dir: String
8
- @options: Hash[Symbol, untyped]
9
-
10
- def initialize: (String, Hash[Symbol, untyped]) -> void
11
-
12
- def all: -> bool
13
-
14
- def deprecated: -> bool
15
-
16
- def outdated: -> bool
17
-
18
- def vulnerable: -> bool
19
-
20
- private
21
-
22
- def node?: -> bool?
23
-
24
- def print_success_message: (String) -> void
25
-
26
- def ruby?: -> bool?
27
- end
28
- end
29
- end
File without changes