Class: Bundler::SourceList

Inherits:
Object
  • Object
show all
Defined in:
lib/bundler/source_list.rb

Direct Known Subclasses

Plugin::SourceList

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSourceList

Returns a new instance of SourceList.



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/bundler/source_list.rb', line 15

def initialize
  @path_sources           = []
  @git_sources            = []
  @plugin_sources         = []
  @global_rubygems_source = nil
  @global_path_source     = nil
  @rubygems_sources       = []
  @metadata_source        = Source::Metadata.new

  @merged_gem_lockfile_sections = false
  @local_mode = true
end

Instance Attribute Details

#git_sourcesObject (readonly)

Returns the value of attribute git_sources.



5
6
7
# File 'lib/bundler/source_list.rb', line 5

def git_sources
  @git_sources
end

#global_path_sourceObject (readonly)

Returns the value of attribute global_path_source.



5
6
7
# File 'lib/bundler/source_list.rb', line 5

def global_path_source
  @global_path_source
end

#metadata_sourceObject (readonly)

Returns the value of attribute metadata_source.



5
6
7
# File 'lib/bundler/source_list.rb', line 5

def 
  @metadata_source
end

#path_sourcesObject (readonly)

Returns the value of attribute path_sources.



5
6
7
# File 'lib/bundler/source_list.rb', line 5

def path_sources
  @path_sources
end

#plugin_sourcesObject (readonly)

Returns the value of attribute plugin_sources.



5
6
7
# File 'lib/bundler/source_list.rb', line 5

def plugin_sources
  @plugin_sources
end

Instance Method Details

#add_git_source(options = {}) ⇒ Object



55
56
57
58
59
# File 'lib/bundler/source_list.rb', line 55

def add_git_source(options = {})
  add_source_to_list(Source::Git.new(options), git_sources).tap do |source|
    warn_on_git_protocol(source)
  end
end

#add_global_rubygems_remote(uri) ⇒ Object



72
73
74
75
# File 'lib/bundler/source_list.rb', line 72

def add_global_rubygems_remote(uri)
  global_rubygems_source.add_remote(uri)
  global_rubygems_source
end

#add_path_source(options = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
# File 'lib/bundler/source_list.rb', line 45

def add_path_source(options = {})
  if options["gemspec"]
    add_source_to_list Source::Gemspec.new(options), path_sources
  else
    path_source = add_source_to_list Source::Path.new(options), path_sources
    @global_path_source ||= path_source if options["global"]
    path_source
  end
end

#add_plugin_source(source, options = {}) ⇒ Object



68
69
70
# File 'lib/bundler/source_list.rb', line 68

def add_plugin_source(source, options = {})
  add_source_to_list Plugin.source(source).new(options), @plugin_sources
end

#add_rubygems_source(options = {}) ⇒ Object



61
62
63
64
65
66
# File 'lib/bundler/source_list.rb', line 61

def add_rubygems_source(options = {})
  new_source = Source::Rubygems.new(options)
  return @global_rubygems_source if @global_rubygems_source == new_source

  add_source_to_list new_source, @rubygems_sources
end

#aggregate_global_source?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/bundler/source_list.rb', line 37

def aggregate_global_source?
  global_rubygems_source.multiple_remotes?
end

#all_sourcesObject



97
98
99
# File 'lib/bundler/source_list.rb', line 97

def all_sources
  path_sources + git_sources + plugin_sources + rubygems_sources + []
end

#cached!Object



152
153
154
# File 'lib/bundler/source_list.rb', line 152

def cached!
  all_sources.each(&:cached!)
end

#default_sourceObject



81
82
83
# File 'lib/bundler/source_list.rb', line 81

def default_source
  global_path_source || global_rubygems_source
end

#expired_sources?(replacement_sources) ⇒ Boolean

Returns true if there are changes

Returns:

  • (Boolean)


136
137
138
139
140
141
142
# File 'lib/bundler/source_list.rb', line 136

def expired_sources?(replacement_sources)
  return false if replacement_sources.empty?

  lock_sources = dup_with_replaced_sources(replacement_sources).lock_sources

  different_sources?(lock_sources, replacement_sources)
end

#get(source) ⇒ Object



105
106
107
# File 'lib/bundler/source_list.rb', line 105

def get(source)
  source_list_for(source).find {|s| equivalent_source?(source, s) }
end

#global_rubygems_sourceObject



11
12
13
# File 'lib/bundler/source_list.rb', line 11

def global_rubygems_source
  @global_rubygems_source ||= rubygems_aggregate_class.new("allow_local" => true)
end

#implicit_global_source?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/bundler/source_list.rb', line 41

def implicit_global_source?
  global_rubygems_source.no_remotes?
end

#local!Object



148
149
150
# File 'lib/bundler/source_list.rb', line 148

def local!
  all_sources.each(&:local!)
end

#local_mode?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/bundler/source_list.rb', line 77

def local_mode?
  @local_mode
end

#local_only!Object



144
145
146
# File 'lib/bundler/source_list.rb', line 144

def local_only!
  all_sources.each(&:local_only!)
end

#lock_other_sourcesObject



113
114
115
# File 'lib/bundler/source_list.rb', line 113

def lock_other_sources
  (path_sources + git_sources + plugin_sources).sort_by(&:identifier)
end

#lock_rubygems_sourcesObject



117
118
119
120
121
122
123
# File 'lib/bundler/source_list.rb', line 117

def lock_rubygems_sources
  if merged_gem_lockfile_sections?
    [combine_rubygems_sources]
  else
    rubygems_sources.sort_by(&:identifier)
  end
end

#lock_sourcesObject



109
110
111
# File 'lib/bundler/source_list.rb', line 109

def lock_sources
  lock_other_sources + lock_rubygems_sources
end

#merged_gem_lockfile_sections!(replacement_source) ⇒ Object



32
33
34
35
# File 'lib/bundler/source_list.rb', line 32

def merged_gem_lockfile_sections!(replacement_source)
  @merged_gem_lockfile_sections = true
  @global_rubygems_source = replacement_source
end

#merged_gem_lockfile_sections?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/bundler/source_list.rb', line 28

def merged_gem_lockfile_sections?
  @merged_gem_lockfile_sections
end

#non_default_explicit_sourcesObject



101
102
103
# File 'lib/bundler/source_list.rb', line 101

def non_default_explicit_sources
  all_sources - [default_source, ]
end

#non_global_rubygems_sourcesObject



89
90
91
# File 'lib/bundler/source_list.rb', line 89

def non_global_rubygems_sources
  @rubygems_sources
end

#remote!Object



156
157
158
159
160
# File 'lib/bundler/source_list.rb', line 156

def remote!
  @local_mode = false

  all_sources.each(&:remote!)
end

#replace_sources!(replacement_sources) ⇒ Object

Returns true if there are changes



126
127
128
129
130
131
132
133
# File 'lib/bundler/source_list.rb', line 126

def replace_sources!(replacement_sources)
  return false if replacement_sources.empty?

  @rubygems_sources, @path_sources, @git_sources, @plugin_sources = map_sources(replacement_sources)
  @global_rubygems_source = global_replacement_source(replacement_sources)

  different_sources?(lock_sources, replacement_sources)
end

#rubygems_remotesObject



93
94
95
# File 'lib/bundler/source_list.rb', line 93

def rubygems_remotes
  rubygems_sources.flat_map(&:remotes).uniq
end

#rubygems_sourcesObject



85
86
87
# File 'lib/bundler/source_list.rb', line 85

def rubygems_sources
  non_global_rubygems_sources + [global_rubygems_source]
end