module Ghrepo

Constants

VERSION

Public Instance Methods

add_collaborator(collab, credentials, repo_name) click to toggle source
# File lib/ghrepo.rb, line 111
def add_collaborator(collab, credentials, repo_name)
  `curl -i -u "#{credentials[:username]}:#{credentials[:password]}" -X PUT -d '' https://api.github.com/repos/"#{credentials[:username]}"/"#{repo_name}"/collaborators/"#{collab}"`
  puts "succesfully added collaborator ", collab
end
add_html(repo_name, git_url) click to toggle source
# File lib/ghrepo.rb, line 75
def add_html(repo_name, git_url)
  app_dir = "./#{repo_name}"
  latest_ghrepo_gem = (Dir.entries(ENV["GEM_HOME"] + "/gems")).select {|l| l.start_with?('ghrep')}.last
  html5_file = ENV["GEM_HOME"] += "/gems/" + latest_ghrepo_gem + "/lib/html5-boilerplate.html"
  Dir.chdir(app_dir)
  `cp #{html5_file} ./index.html`
  `git add .`
  `git commit -m "boilerplate html"`
  `git push -u origin master`
end
add_rails(repo_name, git_url) click to toggle source
# File lib/ghrepo.rb, line 91
def add_rails(repo_name, git_url)
  puts "\nbuilding your rails app...."
  `rails new "#{repo_name}"`
  Dir.chdir(repo_name)
  `git init`
  `git remote add origin "#{git_url}"`
end
find_collabs(args, credentials, repo_name) click to toggle source
# File lib/ghrepo.rb, line 105
def find_collabs(args, credentials, repo_name)
  starts_with_c = args.drop_while {|arg| arg.start_with?('-c')}
  collabs_list = starts_with_c.reject {|flags| flags.start_with?('-')}
  collabs_list.each {|collab| add_collaborator(collab, credentials, repo_name)}
end
include_rails(args, repo_name, git_url) click to toggle source
# File lib/ghrepo.rb, line 86
def include_rails(args, repo_name, git_url)
  add_rails(repo_name, git_url)
  push_rails
end
prompt_password() click to toggle source
# File lib/ghrepo.rb, line 49
def prompt_password
  print "password > "
  password = STDIN.noecho(&:gets).chomp
end
prompt_username() click to toggle source
# File lib/ghrepo.rb, line 62
def prompt_username
  print "github username > "
  username = STDIN.gets.chomp
end
push_rails() click to toggle source
# File lib/ghrepo.rb, line 99
def push_rails
  `git add .`
  `git commit -m "boilerplate rails"`
  `git push -u origin master`
end
set_credentials(args) click to toggle source
# File lib/ghrepo.rb, line 71
def set_credentials(args)
  {url: set_url(args), username: set_username, password: set_password}
end
set_password() click to toggle source
# File lib/ghrepo.rb, line 67
def set_password
  ENV['GHREPO_KEY'] || prompt_password
end
set_url(args) click to toggle source
# File lib/ghrepo.rb, line 54
def set_url(args)
  ENV['GHREPO_SSH'] || args.include?('-ssh') ? 'ssh_url' : 'clone_url'
end
set_username() click to toggle source
# File lib/ghrepo.rb, line 58
def set_username
  ENV['GHREPO_USERNAME'] || prompt_username
end
start(args) click to toggle source
# File lib/ghrepo.rb, line 11
  def start(args)
    if args.any?
      repo_name = args.pop
      credentials = set_credentials(args)
      response = `curl -u "#{credentials[:username]}:#{credentials[:password]}" https://api.github.com/user/repos -d '{"name":"'#{repo_name}'"}'`
      git_url = JSON.parse(response)[credentials[:url]]

      args.include?('-rails') ? include_rails(args, repo_name, git_url) : `git clone "#{git_url}"`
      add_html(repo_name, git_url) if args.include?('-html')
      find_collabs(args, credentials, repo_name) if args.include?('-c')

    else
      puts "RTFM dummy!"
      puts <<-eos
        ░░░░░░░░░▄░░░░░░░░░░░░░░▄░░░░
        ░░░░░░░░▌▒█░░░░░░░░░░░▄▀▒▌░░░
        ░░░░░░░░▌▒▒█░░░░░░░░▄▀▒▒▒▐░░░
        ░░░░░░░▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐░░░
        ░░░░░▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐░░░
        ░░░▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌░░░
        ░░▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒▌░░
        ░░▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐░░
        ░▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄▌░
        ░▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒▌░
        ▀▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒▐░
        ▐▒▒▐▀▐▀▒░▄▄▒▄▒▒▒▒▒▒░▒░▒░▒▒▒▒▌
        ▐▒▒▒▀▀▄▄▒▒▒▄▒▒▒▒▒▒▒▒░▒░▒░▒▒▐░
        ░▌▒▒▒▒▒▒▀▀▀▒▒▒▒▒▒░▒░▒░▒░▒▒▒▌░
        ░▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▒▄▒▒▐░░
        ░░▀▄▒▒▒▒▒▒▒▒▒▒▒░▒░▒░▒▄▒▒▒▒▌░░
        ░░░░▀▄▒▒▒▒▒▒▒▒▒▒▄▄▄▀▒▒▒▒▄▀░░░
        ░░░░░░▀▄▄▄▄▄▄▀▀▀▒▒▒▒▒▄▄▀░░░░░
        ░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▀▀░░░░░░░░
      eos
      puts "such moron very dumb"
    end
  end