Sha256: 2b7d993e239266beddfc5f407f9e4058aa64a4ae85da92694679b687657ebf4e

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

require 'tmpdir'
require 'fileutils'
require 'uri'
require_relative 'dryrun_utils'

module DryRun

  class Github
    def initialize(url)
      @base_url = url
      @destination = get_destination
    end

    def get_destination
      destiny = @base_url.gsub('.git','')
      destiny = destiny.split('/')
      destiny = destiny.last(2).join('/')
      destiny = destiny.gsub('git@github.com:','')
      destiny
    end

    def is_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://"

      return (starts_with_git or starts_with_https or starts_with_http)
    end

    def clonable_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
      if ends_with_git and !starts_with_git
        return @base_url
      end

      # ends with git but doesnt start with git
      if !ends_with_git and !starts_with_git
        return "#{@base_url}.git"
      end

      @base_url

      # end
    end

    ##
    ## CLONE THE REPOSITORY
    ##
    def clone
      clonable = self.clonable_url

      tmpdir = Dir.tmpdir+"/dryrun/#{@destination}"
      FileUtils.rm_rf(tmpdir)

      DryrunUtils.execute("git clone #{clonable} #{tmpdir}")

      tmpdir
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dryrun-0.5.2 lib/dryrun/github.rb