Skip to content

Commit 74306cd

Browse files
author
David Heinemeier Hansson
committed
Packager should be able to remove packages from importmap itself
1 parent a79c06b commit 74306cd

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

lib/importmap/commands.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,11 @@ def unpin(*packages)
4141
if packager.packaged?(package)
4242
if options[:download]
4343
puts %(Unpinning and removing "#{package}")
44-
packager.remove(package)
4544
else
4645
puts %(Unpinning "#{package}")
4746
end
4847

49-
remove_line_from_file "config/importmap.rb", /pin "#{package}"/
48+
packager.remove(package)
5049
end
5150
end
5251
else

lib/importmap/packager.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ def download(package, url)
5353

5454
def remove(package)
5555
remove_existing_package_file(package)
56+
remove_package_from_importmap(package)
5657
end
5758

5859
private
@@ -94,6 +95,15 @@ def remove_existing_package_file(package)
9495
FileUtils.rm_rf "#{vendored_package_path(package)}.br" # Temp workaround for jspm.io
9596
end
9697

98+
def remove_package_from_importmap(package)
99+
all_lines = File.readlines(@importmap_path)
100+
with_lines_removed = all_lines.select { |line| line !~ /pin "#{package}"/ }
101+
102+
File.open(@importmap_path, "w") do |file|
103+
with_lines_removed.each { |line| file.write(line) }
104+
end
105+
end
106+
97107
def download_package_file(package, url)
98108
if url =~ /jspm.io/
99109
# Temporary workaround jspm.io only sending brotli

0 commit comments

Comments
 (0)