Sha256: d6431f5cb611da1d33c6dd4bc637679755d870563685d511e18b73b58289f90b

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

require 'git'
require 'clenver/logging'

class Repository
  include Logging
  attr_accessor :repo_uri, :config, :repo, :dst, :remotes
  #TODO: think about better way to handle dst from URI
  def initialize(uri, config = nil)
    @repo_uri = uri
    @dst = get_dst(config)
    @remotes = get_remotes(config)
    @abs_path = nil
    @repo = nil
  end

  def get_remotes(config)
    unless config.nil?
      if config.has_key?('remotes')
        config['remotes']
      end
    end
  end

  def get_dst(config)
    unless config.nil?
      if config.has_key?('dst')
        return config['dst'][0].gsub(/\$\w+/) {|m| ENV[m[1..-1]]}
      end
    end
    logger.debug("dst:#{Dir::pwd + "/" + File.basename(repo_uri, '.git')}")
    Dir::pwd + "/" + File.basename(repo_uri, '.git')
  end

  def clone
    repo = Git.clone(repo_uri, dst)
    logger.debug("clone:#{repo}")
  end

  def get_abs_path
    @abs_path
  end

  def add_remotes
    logger.debug("self.inspect:#{self.inspect}")
    unless remotes.nil?
      for name, uri in remotes do
        Git.open(dst).add_remote(name, uri)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
clenver-0.1.15 lib/clenver/repository.rb