class GitCloner::Core

GitCloner Core

Constants

GIT_CLONER_FILE
GIT_CLONER_TEMPLATE

Public Instance Methods

clone() click to toggle source

clone git repositories

# File lib/git_cloner_core.rb, line 43
def clone
  settings = read_settings
  base_dir = Dir.pwd
  default_output = settings.default_output
  repos = settings.repos
  clone_repositories(default_output, repos, base_dir)
end
init() click to toggle source

generate Gitclonerfile to current directory.

# File lib/git_cloner_core.rb, line 38
def init
  File.open(GIT_CLONER_FILE, 'w') { |f|f.puts(GIT_CLONER_TEMPLATE) }
end

Private Instance Methods

back_to_base_dir(base_dir) click to toggle source
# File lib/git_cloner_core.rb, line 119
def back_to_base_dir(base_dir)
  Dir.chdir(base_dir)
end
check_repos(repos) click to toggle source
# File lib/git_cloner_core.rb, line 69
def check_repos(repos)
  return if repos.is_a? Array
  fail ArgumentError, 'invalid repos. repos must be Array.'
end
check_repos_hash(repo) click to toggle source
# File lib/git_cloner_core.rb, line 85
def check_repos_hash(repo)
  return if repo.is_a?(Hash)
  fail ArgumentError, 'invalid repos. repos-Array must have Hash'
end
check_repos_hash_key(repo) click to toggle source
# File lib/git_cloner_core.rb, line 90
def check_repos_hash_key(repo)
  return if repo.key?(:place)
  fail ArgumentError, 'invalid key. Hash must contain :place key'
end
clone_repositories(default_output, repos, base_dir) click to toggle source
# File lib/git_cloner_core.rb, line 64
def clone_repositories(default_output, repos, base_dir)
  check_repos(repos)
  repos.each { |repo|clone_repository(default_output, repo, base_dir) }
end
clone_repository(default_output, repo, base_dir) click to toggle source
# File lib/git_cloner_core.rb, line 74
def clone_repository(default_output, repo, base_dir)
  check_repos_hash(repo)
  check_repos_hash_key(repo)
  output_dir = get_output_dir(repo[:output], default_output)
  make_output_dir(output_dir)
  move_to_output_dir(output_dir)
  execute_git_clone(repo[:place])
  back_to_base_dir(base_dir)
  Copier.copy(repo[:copies])
end
execute_git_clone(url) click to toggle source
# File lib/git_cloner_core.rb, line 112
def execute_git_clone(url)
  result = system("git clone #{url} --depth=1")
  repo_name = get_repo_name(url)
  remove_dot_git_directory repo_name
  show_result_message(result, repo_name)
end
get_output_dir(output, default_output) click to toggle source
# File lib/git_cloner_core.rb, line 100
def get_output_dir(output, default_output)
  output.nil? ? default_output : output
end
get_repo_name(place) click to toggle source
# File lib/git_cloner_core.rb, line 95
def get_repo_name(place)
  uri = URI(place)
  uri.path.gsub(/.*\//, '').gsub('.git', '')
end
make_output_dir(output_dir) click to toggle source
# File lib/git_cloner_core.rb, line 104
def make_output_dir(output_dir)
  FileUtils.mkdir_p(output_dir) unless Dir.exist?(output_dir)
end
move_to_output_dir(output_dir) click to toggle source
# File lib/git_cloner_core.rb, line 108
def move_to_output_dir(output_dir)
  Dir.chdir(output_dir)
end
read_dsl() click to toggle source
# File lib/git_cloner_core.rb, line 60
def read_dsl
  File.open(GIT_CLONER_FILE) { |f|f.read }
end
read_settings() click to toggle source
# File lib/git_cloner_core.rb, line 53
def read_settings
  src = read_dsl
  dsl = GitCloner::Dsl.new
  dsl.instance_eval src
  dsl.git_cloner
end
remove_dot_git_directory(repo_name) click to toggle source
# File lib/git_cloner_core.rb, line 123
def remove_dot_git_directory(repo_name)
  Dir.chdir("./#{repo_name}")
  FileUtils.rm_rf('.git') if Dir.exist?('.git')
end
show_result_message(result, repo_name) click to toggle source
# File lib/git_cloner_core.rb, line 128
def show_result_message(result, repo_name)
  result_msg = result ? 'complete' : 'fail'
  puts("clone #{Dir.pwd}/#{repo_name} #{result_msg}")
end