package-audit 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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