Sha256: 0834687066d46627373ba82ee189a417c730c10bd24cd8a27d0fb8fff414ee60

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

class Github
	TOKEN=ENV['github_token']
	SERVER="https://api.github.com"
	HOME=ENV['HOME']


  def self.list_repos(group_name)
    repos_list = get_repos(group_name)
    puts "-------------------------------------------------------------------\n"
    puts "\tThe following #{repos_list.count} repo(s) were found in the Org #{group_name}.\n\n"
    repos_list.each do |get|
      puts "\t\t#{get["name"]}"
    end
    puts "\n-------------------------------------------------------------------"
  end


def self.clone(web, group_name)
    repos_list = get_repos(group_name)
    repos_dir = "#{HOME}/projects/#{group_name}"

    if File.directory?("#{repos_dir}")
      FileUtils::mkdir_p repos_dir
    end
    
    if web == 1
      repo_location = 'clone_url'
      message = "Web"
    else 
      repo_location = 'ssh_url'
      message = "Ssh"
    end
    puts "-------------------------------------------------------------------\n"
    puts "\t### Starting #{message} Clone Process Of The Org #{group_name} ###\n\n"
    puts "\tDownloading #{repos_list.count} repo(s) into #{repos_dir}\n\n"

    repos_list.each do |get|
      repo_name = get["name"]
      repo = get["#{repo_location}"]
      dir = get["name"]
      repo_dir = "#{repos_dir}/#{dir}"

      if File.directory?("#{repo_dir}")
        puts "\t#{repo_name} directory exists, doing a git pull instead."
        Dir.chdir("#{repo_dir}")
        g = Git.init
        g.pull
      else
        puts "\tCloning #{repo_name}..."
        Git.clone("#{repo}", "#{repo_dir}") 
      end
    end
    puts "-------------------------------------------------------------------\n"
  end

  def self.get_repos(group_name)
    string = HTTParty.get("#{SERVER}/orgs/#{group_name}/repos", :headers => {"Authorization" => "token #{TOKEN}", 'User-Agent' => 'HTTParty'},  :verify => false).to_json
    rep = JSON.parse(string)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gitlab_clone-0.11.0 lib/github.rb