module Homesick::Actions::GitActions

Git-related helper methods for Homesick

Constants

MIN_VERSION

Information on the minimum git version required for Homesick

STRING

Public Instance Methods

git_add(file) click to toggle source
# File lib/homesick/actions/git_actions.rb, line 96
def git_add(file)
  say_status 'git add file', '', :green
  system "git add '#{file}'"
end
git_clone(repo, config = {}) click to toggle source

TODO: move this to be more like thor's template, empty_directory, etc

# File lib/homesick/actions/git_actions.rb, line 25
def git_clone(repo, config = {})
  config ||= {}
  destination = config[:destination] || File.basename(repo, '.git')

  destination = Pathname.new(destination) unless destination.is_a?(Pathname)
  FileUtils.mkdir_p destination.dirname

  if destination.directory?
    say_status :exist, destination.expand_path, :blue
  else
    say_status 'git clone',
               "#{repo} to #{destination.expand_path}",
               :green
    system "git clone -q --config push.default=upstream --recursive #{repo} #{destination}"
  end
end
git_commit_all(config = {}) click to toggle source
# File lib/homesick/actions/git_actions.rb, line 87
def git_commit_all(config = {})
  say_status 'git commit all', '', :green
  if config[:message]
    system %(git commit -a -m "#{config[:message]}")
  else
    system 'git commit -v -a'
  end
end
git_diff() click to toggle source
# File lib/homesick/actions/git_actions.rb, line 106
def git_diff
  say_status 'git diff', '', :green
  system 'git diff'
end
git_init(path = '.') click to toggle source
# File lib/homesick/actions/git_actions.rb, line 42
def git_init(path = '.')
  path = Pathname.new(path)

  inside path do
    if path.join('.git').exist?
      say_status 'git init', 'already initialized', :blue
    else
      say_status 'git init', ''
      system 'git init >/dev/null'
    end
  end
end
git_pull() click to toggle source
# File lib/homesick/actions/git_actions.rb, line 77
def git_pull
  say_status 'git pull', '', :green
  system 'git pull --quiet'
end
git_push() click to toggle source
# File lib/homesick/actions/git_actions.rb, line 82
def git_push
  say_status 'git push', '', :green
  system 'git push'
end
git_remote_add(name, url) click to toggle source
# File lib/homesick/actions/git_actions.rb, line 55
def git_remote_add(name, url)
  existing_remote = `git config remote.#{name}.url`.chomp
  existing_remote = nil if existing_remote == ''

  if existing_remote
    say_status 'git remote', "#{name} already exists", :blue
  else
    say_status 'git remote', "add #{name} #{url}"
    system "git remote add #{name} #{url}"
  end
end
git_status() click to toggle source
# File lib/homesick/actions/git_actions.rb, line 101
def git_status
  say_status 'git status', '', :green
  system 'git status'
end
git_submodule_init() click to toggle source
# File lib/homesick/actions/git_actions.rb, line 67
def git_submodule_init
  say_status 'git submodule', 'init', :green
  system 'git submodule --quiet init'
end
git_submodule_update() click to toggle source
# File lib/homesick/actions/git_actions.rb, line 72
def git_submodule_update
  say_status 'git submodule', 'update', :green
  system 'git submodule --quiet update --init --recursive >/dev/null 2>&1'
end
git_version_correct?() click to toggle source
# File lib/homesick/actions/git_actions.rb, line 13
def git_version_correct?
  info = `git --version`.scan(/(\d+)\.(\d+)\.(\d+)/).flatten.map(&:to_i)
  return false unless info.count == 3
  current_version = Hash[[:major, :minor, :patch].zip(info)]
  return true if current_version.eql?(MIN_VERSION)
  return true if current_version[:major] > MIN_VERSION[:major]
  return true if current_version[:major] == MIN_VERSION[:major] && current_version[:minor] > MIN_VERSION[:minor]
  return true if current_version[:major] == MIN_VERSION[:major] && current_version[:minor] == MIN_VERSION[:minor] && current_version[:patch] >= MIN_VERSION[:patch]
  false
end