class Dryrun::Github
Public Class Methods
new(url)
click to toggle source
# File lib/dryrun/github.rb, line 8 def initialize(url) @base_url = sanitize_url(url) @destination = destination end
Public Instance Methods
clone(branch, tag, cleanup)
click to toggle source
CLONE THE REPOSITORY
# File lib/dryrun/github.rb, line 55 def clone(branch, tag, cleanup) cloneable = cloneable_url tmpdir = Dir.tmpdir + "/dryrun/#{@destination}" if cleanup puts 'Wiping the folder: ' + tmpdir.green FileUtils.rm_rf tmpdir # FileUtils.mkdir_p tmpdir end folder_exists = File.directory?(tmpdir) if folder_exists Dir.chdir tmpdir is_git_repo = system('git rev-parse') if !is_git_repo FileUtils.rm_rf(tmpdir) DryrunUtils.execute("git clone --depth 1 #{cloneable} #{tmpdir}") DryrunUtils.execute("git checkout #{branch}") else puts "Found project in #{tmpdir.green}..." DryrunUtils.execute('git reset --hard HEAD') DryrunUtils.execute('git fetch --all') DryrunUtils.execute("git checkout #{branch}") DryrunUtils.execute("git pull origin #{branch}") end else DryrunUtils.execute("git clone --depth 1 #{cloneable} #{tmpdir}") end if tag Dir.chdir tmpdir DryrunUtils.execute('git fetch --depth=10000') DryrunUtils.execute("git checkout #{tag}") end tmpdir end
cloneable_url()
click to toggle source
# File lib/dryrun/github.rb, line 39 def cloneable_url starts_with_git = @base_url.split(//).first(4).join.eql? 'git@' ends_with_git = @base_url.split(//).last(4).join.eql? '.git' # ends with git but doesnt start with git return @base_url if ends_with_git && !starts_with_git # ends with git but doesnt start with git return "#{@base_url}.git" if !ends_with_git && !starts_with_git @base_url end
destination()
click to toggle source
# File lib/dryrun/github.rb, line 19 def destination unless @base_url.include? 'github.com' return Digest::SHA256.hexdigest @base_url end stripped_url = @base_url.gsub('.git', '') stripped_url = stripped_url.gsub('.git', '') stripped_url = stripped_url.gsub('git@github.com:', '') stripped_url = stripped_url.gsub('https://github.com/', '') stripped_url.gsub('http://github.com/', '') end
sanitize_url(url)
click to toggle source
# File lib/dryrun/github.rb, line 13 def sanitize_url(url) url = url.split('?').first url.chop! if url.end_with? '/' url end
valid?()
click to toggle source
# File lib/dryrun/github.rb, line 31 def valid? starts_with_git = @base_url.split(//).first(4).join.eql? 'git@' starts_with_http = @base_url.split(//).first(7).join.eql? 'http://' starts_with_https = @base_url.split(//).first(8).join.eql? 'https://' (starts_with_git || starts_with_https || starts_with_http) end