Module: R10K::Git
- Extended by:
- Logging, Settings::Mixin::ClassMethods
- Defined in:
- lib/r10k/git.rb,
lib/r10k/git/errors.rb,
lib/r10k/git/rugged.rb,
lib/r10k/git/shellgit.rb
Defined Under Namespace
Modules: Rugged, ShellGit Classes: Alternates, Cache, GitError, StatefulRepository, UnresolvableRefError
Constant Summary collapse
- NULL_PROVIDER =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Mark the current provider as invalid.
If a provider is set to an invalid provider, we need to make sure that the provider doesn’t fall back to the default value, thereby ignoring the explicit value and silently continuing. If the current provider is assigned to this value, no provider will be used until the provider is either reset or assigned a valid provider.
Object.new
- UNSET_PROVIDER =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Mark the current provider as unset.
If the provider has never been set we need to indicate that there is no current value but the default value can be used. If the current provider is assigned to this value and the provider is looked up, the default provider will be looked up and used.
Object.new
Constants included from Logging
Logging::LOG_LEVELS, Logging::SYSLOG_LEVELS_MAP
Class Method Summary collapse
- .bare_repository ⇒ Object
- .cache ⇒ Object
-
.default_name ⇒ String
Return the first available Git provider.
- .get_proxy_for_remote(remote) ⇒ Object
- .get_repo_settings(remote) ⇒ Object
- .log_proxy_for_remote(proxy, remote) ⇒ Object
-
.provider ⇒ Module
The namespace of the first available Git implementation.
-
.provider=(name) ⇒ void
Manually set the Git provider by name.
-
.reset! ⇒ Object
private
Clear the currently set provider.
- .thin_repository ⇒ Object
-
.with_proxy(new_proxy) ⇒ Object
Execute block with given proxy configured in ENV.
Methods included from Logging
add_outputters, debug_formatter, default_formatter, default_outputter, logger, logger_name, parse_level
Methods included from Settings::Mixin::ClassMethods
def_setting_attr, defaults, inherited, settings
Class Method Details
.bare_repository ⇒ Object
117 118 119 |
# File 'lib/r10k/git.rb', line 117 def self. provider::BareRepository end |
.cache ⇒ Object
113 114 115 |
# File 'lib/r10k/git.rb', line 113 def self.cache provider::Cache end |
.default_name ⇒ String
Return the first available Git provider.
65 66 67 68 69 70 71 |
# File 'lib/r10k/git.rb', line 65 def self.default_name name, _ = @providers.find { |(_, hash)| R10K::Features.available?(hash[:feature]) } if name.nil? raise R10K::Error, _("No Git providers are functional.") end name end |
.get_proxy_for_remote(remote) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/r10k/git.rb', line 149 def self.get_proxy_for_remote(remote) # We only support proxy for HTTP(S) transport return nil unless remote =~ /^http(s)?/i repo_settings = self.get_repo_settings(remote) if repo_settings && repo_settings.has_key?(:proxy) proxy = repo_settings[:proxy] unless repo_settings[:proxy].nil? || repo_settings[:proxy].empty? else proxy = self.settings[:proxy] end R10K::Git.log_proxy_for_remote(proxy, remote) if proxy proxy end |
.get_repo_settings(remote) ⇒ Object
145 146 147 |
# File 'lib/r10k/git.rb', line 145 def self.get_repo_settings(remote) self.settings[:repositories].find {|r| r[:remote] == remote } end |
.log_proxy_for_remote(proxy, remote) ⇒ Object
166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/r10k/git.rb', line 166 def self.log_proxy_for_remote(proxy, remote) # Sanitize passwords out of the proxy URI for loggging. proxy_uri = URI.parse(proxy) proxy_str = "#{proxy_uri.scheme}://" proxy_str << "#{proxy_uri.userinfo.gsub(/:(.*)$/, ':<FILTERED>')}@" if proxy_uri.userinfo proxy_str << "#{proxy_uri.host}:#{proxy_uri.port}" logger.debug { "Using HTTP proxy '#{proxy_str}' for '#{remote}'." } nil end |
.provider ⇒ Module
Returns The namespace of the first available Git implementation. Implementation classes should be looked up against this returned Module.
101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/r10k/git.rb', line 101 def self.provider case @provider when NULL_PROVIDER raise R10K::Error, _("No Git provider set.") when UNSET_PROVIDER self.provider = default_name logger.debug1 { _("Setting Git provider to default provider %{name}") % {name: default_name} } end @provider end |
.provider=(name) ⇒ void
This method returns an undefined value.
Manually set the Git provider by name.
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/r10k/git.rb', line 81 def self.provider=(name) _, attrs = @providers.find { |(providername, _)| name == providername } if attrs.nil? @provider = NULL_PROVIDER raise R10K::Error, _("No Git provider named '%{name}'.") % {name: name} end if !R10K::Features.available?(attrs[:feature]) @provider = NULL_PROVIDER raise R10K::Error, _("Git provider '%{name}' is not functional.") % {name: name} end if attrs[:on_set] attrs[:on_set].call end @provider = attrs[:module] logger.debug1 { _("Setting Git provider to %{provider}") % {provider: @provider.name} } end |
.reset! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Clear the currently set provider.
128 129 130 |
# File 'lib/r10k/git.rb', line 128 def self.reset! @provider = UNSET_PROVIDER end |
.thin_repository ⇒ Object
121 122 123 |
# File 'lib/r10k/git.rb', line 121 def self.thin_repository provider::ThinRepository end |
.with_proxy(new_proxy) ⇒ Object
Execute block with given proxy configured in ENV
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/r10k/git.rb', line 179 def self.with_proxy(new_proxy) unless new_proxy.nil? old_proxy = Hash[ ['HTTPS_PROXY', 'HTTP_PROXY', 'https_proxy', 'http_proxy'].collect do |var| old_value = ENV[var] ENV[var] = new_proxy [var, old_value] end ] end begin yield ensure ENV.update(old_proxy) if old_proxy end nil end |