rubion 0.3.4 → 0.3.5

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: ca049f036597e496afc3e38e4aa0005588d7d5ea544242566b8bb3b4b88ae5a1
4
- data.tar.gz: 8f3c8b61f3cd5aee897220695adca2c70c334ec0c9fff8991421fe13df08caa5
3
+ metadata.gz: 2650a4a9cb6749a2d6e7a3c74f2917130aff97b5dc2c47dd8cf221ea5e1f5f23
4
+ data.tar.gz: 3b5f971c826e2e4a7e687fbd7565f78afe4977d0c6cc09e41ec8e0f83fde3069
5
5
  SHA512:
6
- metadata.gz: 4fc7ed3e75f7693842cad49a84f23f485191d85348216f5f4bb8a9194cb8d879a3c1212b83e891f9e4238468dced1303f1c6813bdf5c784679b87025cb21be1a
7
- data.tar.gz: 7770cc5710d9ab0386e1fc17aa7d9ce9e8ec5690d1c8429959caf9bdbcdccb257e129c2d6b6d86e50b5d577eb5ba403504c648757c185345cb9fe99f9d124cb4
6
+ metadata.gz: 13fc340260cd647ed4515419e2befa74e10fa00aa85ffa8c4d8a8c48822ad394b09d03c4ddc33f68f21d63052ed735354e743b2b219dd5c35b67e5d3748606c4
7
+ data.tar.gz: 5d807f967aba90df47307498229ea1f7e6b8d3dcb884cf18e4bd0d485a7cf0d31dc3d24539faed14e883f0b4c6114f384245d386dcb571951b86193078856d0e
@@ -74,16 +74,24 @@ module Rubion
74
74
  return
75
75
  end
76
76
 
77
- # Sort if sort_by is specified
77
+ # Filter to only direct dependencies if flag is set
78
78
  versions = @result.gem_versions.dup
79
+ versions = versions.select { |gem| gem[:direct] } if @exclude_dependencies
80
+
81
+ if versions.empty?
82
+ puts " ✅ No direct dependencies found!\n\n"
83
+ return
84
+ end
85
+
86
+ # Sort if sort_by is specified
79
87
  versions = sort_versions(versions, :gem) if @sort_by
80
88
 
81
89
  table = Terminal::Table.new do |t|
82
90
  t.headings = ['Name', 'Current', 'Date', 'Latest', 'Date', 'Behind By(Time)', 'Behind By(Versions)']
83
91
 
84
92
  versions.each do |gem|
85
- # Add ✅ prefix for direct dependencies
86
- gem_name = gem[:direct] ? "#{gem[:gem]} ✅ " : gem[:gem]
93
+ # Make direct dependencies bold
94
+ gem_name = gem[:direct] ? bold(gem[:gem]) : gem[:gem]
87
95
 
88
96
  t.add_row [
89
97
  gem_name,
@@ -134,16 +142,24 @@ module Rubion
134
142
  return
135
143
  end
136
144
 
137
- # Sort if sort_by is specified
145
+ # Filter to only direct dependencies if flag is set
138
146
  versions = @result.package_versions.dup
147
+ versions = versions.select { |pkg| pkg[:direct] } if @exclude_dependencies
148
+
149
+ if versions.empty?
150
+ puts " ✅ No direct dependencies found!\n\n"
151
+ return
152
+ end
153
+
154
+ # Sort if sort_by is specified
139
155
  versions = sort_versions(versions, :package) if @sort_by
140
156
 
141
157
  table = Terminal::Table.new do |t|
142
158
  t.headings = ['Name', 'Current', 'Date', 'Latest', 'Date', 'Behind By(Time)', 'Behind By(Versions)']
143
159
 
144
160
  versions.each do |pkg|
145
- # Add ✅ prefix for direct dependencies
146
- package_name = pkg[:direct] ? "✅ #{pkg[:package]}" : pkg[:package]
161
+ # Make direct dependencies bold
162
+ package_name = pkg[:direct] ? bold(pkg[:package]) : pkg[:package]
147
163
 
148
164
  t.add_row [
149
165
  package_name,
@@ -212,6 +228,11 @@ module Rubion
212
228
  "#{text[0..(length - 3)]}..."
213
229
  end
214
230
 
231
+ # Make text bold using ANSI escape codes
232
+ def bold(text)
233
+ "\033[1m#{text}\033[0m"
234
+ end
235
+
215
236
  def version_difference(current, latest)
216
237
  # Simple version difference calculation
217
238
  current_parts = current.split('.').map(&:to_i)
@@ -254,9 +275,9 @@ module Rubion
254
275
  sorted = versions.sort_by do |item|
255
276
  case normalized_column
256
277
  when 'name'
257
- # Remove prefix for sorting
278
+ # Remove ANSI codes for sorting
258
279
  name = item[name_key_sym].to_s
259
- name = name.sub(/^✅\s+/, '') if name.start_with?('✅')
280
+ name = name.gsub(/\033\[[0-9;]*m/, '') # Remove ANSI escape codes
260
281
  name.downcase
261
282
  when 'current'
262
283
  parse_version_for_sort(item[:current])
@@ -38,7 +38,8 @@ module Rubion
38
38
  @result
39
39
  end
40
40
 
41
- def scan_incremental(options = { gems: true, packages: true, sort_by: 'Behind By(Time)', sort_desc: true })
41
+ def scan_incremental(options = { gems: true, packages: true, sort_by: 'Behind By(Time)', sort_desc: true,
42
+ exclude_dependencies: false })
42
43
  puts "🔍 Scanning project at: #{@project_path}\n\n"
43
44
 
44
45
  # Scan and display Ruby gems first (if enabled)
@@ -47,7 +48,8 @@ module Rubion
47
48
 
48
49
  # Print gem results immediately
49
50
  puts "\n"
50
- reporter = Reporter.new(@result, sort_by: options[:sort_by], sort_desc: options[:sort_desc])
51
+ reporter = Reporter.new(@result, sort_by: options[:sort_by], sort_desc: options[:sort_desc],
52
+ exclude_dependencies: options[:exclude_dependencies])
51
53
  reporter.print_gem_vulnerabilities
52
54
  reporter.print_gem_versions
53
55
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rubion
4
- VERSION = "0.3.4"
4
+ VERSION = "0.3.5"
5
5
  end
6
6
 
data/lib/rubion.rb CHANGED
@@ -29,7 +29,7 @@ module Rubion
29
29
 
30
30
  def self.parse_scan_options(args)
31
31
  # Default to sorting by "Behind By(Time)" in descending order
32
- options = { gems: true, packages: true, sort_by: "Behind By(Time)", sort_desc: true }
32
+ options = { gems: true, packages: true, sort_by: "Behind By(Time)", sort_desc: true, exclude_dependencies: false }
33
33
 
34
34
  # Check for --gems-only or --packages-only flags
35
35
  if args.include?('--gems-only') || args.include?('-g')
@@ -53,10 +53,13 @@ module Rubion
53
53
  # Parse --asc or --ascending for ascending order (descending is default)
54
54
  options[:sort_desc] = false if args.include?('--asc') || args.include?('--ascending')
55
55
 
56
+ # Parse --exclude-dependencies flag
57
+ options[:exclude_dependencies] = true if args.include?('--exclude-dependencies')
58
+
56
59
  options
57
60
  end
58
61
 
59
- def self.scan(options = { gems: true, packages: true, sort_by: "Behind By(Time)", sort_desc: true })
62
+ def self.scan(options = { gems: true, packages: true, sort_by: "Behind By(Time)", sort_desc: true, exclude_dependencies: false })
60
63
  project_path = Dir.pwd
61
64
 
62
65
  scanner = Scanner.new(project_path: project_path)
@@ -68,7 +71,7 @@ module Rubion
68
71
  # Actually, scan_incremental handles gem printing, but package printing
69
72
  # happens here, so we need a reporter for packages
70
73
  if options[:packages]
71
- reporter = Reporter.new(result, sort_by: options[:sort_by], sort_desc: options[:sort_desc])
74
+ reporter = Reporter.new(result, sort_by: options[:sort_by], sort_desc: options[:sort_desc], exclude_dependencies: options[:exclude_dependencies])
72
75
  reporter.print_package_vulnerabilities
73
76
  reporter.print_package_versions
74
77
  end
@@ -91,6 +94,7 @@ module Rubion
91
94
  --sort-by COLUMN, -s COLUMN Sort results by column (Name, Current, Date, Latest, Behind By(Time), Behind By(Versions))
92
95
  (default: "Behind By(Time)" in descending order)
93
96
  --asc, --ascending Sort in ascending order (use with --sort-by)
97
+ --exclude-dependencies Show only direct dependencies (from Gemfile/package.json)
94
98
 
95
99
  DESCRIPTION:
96
100
  Rubion scans your project for:
@@ -128,6 +132,9 @@ module Rubion
128
132
  # Sort by name in ascending order
129
133
  rubion scan --sort-by Name --asc
130
134
 
135
+ # Show only direct dependencies
136
+ rubion scan --exclude-dependencies
137
+
131
138
  # Get help
132
139
  rubion help
133
140
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - bipashant