summaryrefslogtreecommitdiff
path: root/lib/rubygems/source/installed.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/source/installed.rb')
-rw-r--r--lib/rubygems/source/installed.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/rubygems/source/installed.rb b/lib/rubygems/source/installed.rb
new file mode 100644
index 0000000000..f5c96fee51
--- /dev/null
+++ b/lib/rubygems/source/installed.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+##
+# Represents an installed gem. This is used for dependency resolution.
+
+class Gem::Source::Installed < Gem::Source
+ def initialize # :nodoc:
+ @uri = nil
+ end
+
+ ##
+ # Installed sources sort before all other sources
+
+ def <=>(other)
+ case other
+ when Gem::Source::Git,
+ Gem::Source::Lock,
+ Gem::Source::Vendor then
+ -1
+ when Gem::Source::Installed then
+ 0
+ when Gem::Source then
+ 1
+ end
+ end
+
+ ##
+ # We don't need to download an installed gem
+
+ def download(spec, path)
+ nil
+ end
+
+ def pretty_print(q) # :nodoc:
+ q.object_group(self) do
+ q.text "[Installed]"
+ end
+ end
+end