rubion 0.3.4 → 0.3.6

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: b0f29bc1b7cefe4b6e3373a74d9dddcaccf3f7ba0f2a49dc2562d18794bafc81
4
+ data.tar.gz: 78d89a5554c4a0b46eb4cae2ea3d5a33427cfc207a9d86c7c9f95893acc9890b
5
5
  SHA512:
6
- metadata.gz: 4fc7ed3e75f7693842cad49a84f23f485191d85348216f5f4bb8a9194cb8d879a3c1212b83e891f9e4238468dced1303f1c6813bdf5c784679b87025cb21be1a
7
- data.tar.gz: 7770cc5710d9ab0386e1fc17aa7d9ce9e8ec5690d1c8429959caf9bdbcdccb257e129c2d6b6d86e50b5d577eb5ba403504c648757c185345cb9fe99f9d124cb4
6
+ metadata.gz: df1205450315340e9d7f9361576ebe12a609a0e73a554155dfbc142e786b5f4dbd194ef5beffc8ca97f0bf622460b99a9c0a1470010c54f0bf122ca4934e35be
7
+ data.tar.gz: d860c50c98a819d75a54ae1a1d4bd8ed813bfa6968d900c90f915ae88321c7f4a09df7a5a0f937653193b6fdc20d2b7ba313d2c9669a591c5271cbeca6399e42
@@ -4,10 +4,11 @@ require 'terminal-table'
4
4
 
5
5
  module Rubion
6
6
  class Reporter
7
- def initialize(scan_result, sort_by: 'Behind By(Time)', sort_desc: true)
7
+ def initialize(scan_result, sort_by: 'Behind By(Time)', sort_desc: true, exclude_dependencies: false)
8
8
  @result = scan_result
9
9
  @sort_by = sort_by
10
10
  @sort_desc = sort_desc
11
+ @exclude_dependencies = exclude_dependencies
11
12
  end
12
13
 
13
14
  def report
@@ -74,16 +75,24 @@ module Rubion
74
75
  return
75
76
  end
76
77
 
77
- # Sort if sort_by is specified
78
+ # Filter to only direct dependencies if flag is set
78
79
  versions = @result.gem_versions.dup
80
+ versions = versions.select { |gem| gem[:direct] } if @exclude_dependencies
81
+
82
+ if versions.empty?
83
+ puts " ✅ No direct dependencies found!\n\n"
84
+ return
85
+ end
86
+
87
+ # Sort if sort_by is specified
79
88
  versions = sort_versions(versions, :gem) if @sort_by
80
89
 
81
90
  table = Terminal::Table.new do |t|
82
91
  t.headings = ['Name', 'Current', 'Date', 'Latest', 'Date', 'Behind By(Time)', 'Behind By(Versions)']
83
92
 
84
93
  versions.each do |gem|
85
- # Add ✅ prefix for direct dependencies
86
- gem_name = gem[:direct] ? "#{gem[:gem]} ✅ " : gem[:gem]
94
+ # Make direct dependencies bold
95
+ gem_name = gem[:direct] ? bold(gem[:gem]) : gem[:gem]
87
96
 
88
97
  t.add_row [
89
98
  gem_name,
@@ -134,16 +143,24 @@ module Rubion
134
143
  return
135
144
  end
136
145
 
137
- # Sort if sort_by is specified
146
+ # Filter to only direct dependencies if flag is set
138
147
  versions = @result.package_versions.dup
148
+ versions = versions.select { |pkg| pkg[:direct] } if @exclude_dependencies
149
+
150
+ if versions.empty?
151
+ puts " ✅ No direct dependencies found!\n\n"
152
+ return
153
+ end
154
+
155
+ # Sort if sort_by is specified
139
156
  versions = sort_versions(versions, :package) if @sort_by
140
157
 
141
158
  table = Terminal::Table.new do |t|
142
159
  t.headings = ['Name', 'Current', 'Date', 'Latest', 'Date', 'Behind By(Time)', 'Behind By(Versions)']
143
160
 
144
161
  versions.each do |pkg|
145
- # Add ✅ prefix for direct dependencies
146
- package_name = pkg[:direct] ? "✅ #{pkg[:package]}" : pkg[:package]
162
+ # Make direct dependencies bold
163
+ package_name = pkg[:direct] ? bold(pkg[:package]) : pkg[:package]
147
164
 
148
165
  t.add_row [
149
166
  package_name,
@@ -212,6 +229,11 @@ module Rubion
212
229
  "#{text[0..(length - 3)]}..."
213
230
  end
214
231
 
232
+ # Make text bold using ANSI escape codes
233
+ def bold(text)
234
+ "\033[1m#{text}\033[0m"
235
+ end
236
+
215
237
  def version_difference(current, latest)
216
238
  # Simple version difference calculation
217
239
  current_parts = current.split('.').map(&:to_i)
@@ -254,9 +276,9 @@ module Rubion
254
276
  sorted = versions.sort_by do |item|
255
277
  case normalized_column
256
278
  when 'name'
257
- # Remove prefix for sorting
279
+ # Remove ANSI codes for sorting
258
280
  name = item[name_key_sym].to_s
259
- name = name.sub(/^✅\s+/, '') if name.start_with?('✅')
281
+ name = name.gsub(/\033\[[0-9;]*m/, '') # Remove ANSI escape codes
260
282
  name.downcase
261
283
  when 'current'
262
284
  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.6"
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.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - bipashant