Class: Gemkeeper::GemSyncer
- Inherits:
-
Object
- Object
- Gemkeeper::GemSyncer
- Defined in:
- lib/gemkeeper/gem_syncer.rb
Overview
Syncs a single gem: resolves version, checks cache, clones/pulls, builds, uploads.
Constant Summary collapse
- AUTH_ERROR_PATTERNS =
[ /authentication failed/i, /could not read from remote repository/i, /permission denied \(publickey\)/i, /repository not found/i, /fatal: credential/i ].freeze
Instance Method Summary collapse
-
#initialize(config, uploader) ⇒ GemSyncer
constructor
A new instance of GemSyncer.
- #sync(gem_def) ⇒ Object
Constructor Details
#initialize(config, uploader) ⇒ GemSyncer
Returns a new instance of GemSyncer.
14 15 16 17 |
# File 'lib/gemkeeper/gem_syncer.rb', line 14 def initialize(config, uploader) @config = config @uploader = uploader end |
Instance Method Details
#sync(gem_def) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/gemkeeper/gem_syncer.rb', line 19 def sync(gem_def) version = resolve_version(gem_def) name = gem_def.name gems_path = @config.gems_path return :skipped if !gem_def.latest? && cached?(name, version, gems_path) puts "Syncing #{name} @ #{version}..." local_path = File.join(@config.repos_path, name) repo = fetch_repo(gem_def.repo, local_path) Output.step("Checking out #{version}...") repo.checkout_version(version) if gem_def.latest? version = latest_version!(repo, name, gems_path, gem_def.repo) return :skipped unless version end build_and_upload(local_path, gems_path) :synced end |