Skip to content

Commit c7b9e13

Browse files
authored
Add a packages command to get package info (#178)
1 parent bbb5493 commit c7b9e13

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

lib/importmap/commands.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class Importmap::Commands < Thor
88
def self.exit_on_failure?
99
false
1010
end
11-
11+
1212
desc "pin [*PACKAGES]", "Pin new packages"
1313
option :env, type: :string, aliases: :e, default: "production"
1414
option :from, type: :string, aliases: :f, default: "jspm"
@@ -103,6 +103,11 @@ def outdated
103103
end
104104
end
105105

106+
desc "packages", "Print out packages with version numbers"
107+
def packages
108+
puts npm.packages_with_versions.map { |x| x.join(' ') }
109+
end
110+
106111
private
107112
def packager
108113
@packager ||= Importmap::Packager.new

lib/importmap/npm.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,19 @@ def vulnerable_packages
4444
end.sort_by { |p| [p.name, p.severity] }
4545
end
4646

47+
def packages_with_versions
48+
# We cannot use the name after "pin" because some dependencies are loaded from inside packages
49+
# Eg. pin "buffer", to: "https://ga.jspm.io/npm:@jspm/core@2.0.0-beta.19/nodelibs/browser/buffer.js"
50+
51+
importmap.scan(/^pin .*(?<=npm:|npm\/|skypack\.dev\/|unpkg\.com\/)(.*)(?=@\d+\.\d+\.\d+)@(\d+\.\d+\.\d+(?:[^\/\s"]*)).*$/) |
52+
importmap.scan(/^pin "([^"]*)".* #.*@(\d+\.\d+\.\d+(?:[^\s]*)).*$/)
53+
end
54+
4755
private
4856
OutdatedPackage = Struct.new(:name, :current_version, :latest_version, :error, keyword_init: true)
4957
VulnerablePackage = Struct.new(:name, :severity, :vulnerable_versions, :vulnerability, keyword_init: true)
5058

51-
def packages_with_versions
52-
# We cannot use the name after "pin" because some dependencies are loaded from inside packages
53-
# Eg. pin "buffer", to: "https://ga.jspm.io/npm:@jspm/core@2.0.0-beta.19/nodelibs/browser/buffer.js"
5459

55-
importmap.scan(/^pin .*(?<=npm:|npm\/|skypack\.dev\/|unpkg\.com\/)(.*)(?=@\d+\.\d+\.\d+)@(\d+\.\d+\.\d+(?:[^\/\s"]*)).*$/) |
56-
importmap.scan(/^pin "([^"]*)".* #.*@(\d+\.\d+\.\d+(?:[^\s]*)).*$/)
57-
end
5860

5961
def importmap
6062
@importmap ||= File.read(@importmap_path)

0 commit comments

Comments
 (0)