Sha256: 0cde27e17ecbd0ee5aa5be683fbdd4a733e782f5f831ad4361991b7c6b62f411

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

require "pathname"
require "scmd"

module GGem; end
class GGem::GitRepo
  NotFoundError = Class.new(ArgumentError)
  CmdError      = Class.new(RuntimeError)

  attr_reader :path

  def initialize(repo_path)
    @path = Pathname.new(File.expand_path(repo_path))
  end

  def run_init_cmd
    run_cmd("git init").tap do
      run_cmd("git add --all && git add -f *.keep")
    end
  end

  def run_validate_clean_cmd
    run_cmd("git diff --exit-code")
  end

  def run_validate_committed_cmd
    run_cmd("git diff-index --quiet --cached HEAD")
  end

  def run_push_cmd
    run_cmd("git push").tap do
      run_cmd("git push --tags")
    end
  end

  def run_add_version_tag_cmd(version, tag)
    run_cmd("git tag -a -m \"Version #{version}\" #{tag}")
  end

  def run_rm_tag_cmd(tag)
    run_cmd("git tag -d #{tag}")
  end

  private

  def run_cmd(cmd_string)
    cmd_string = "cd #{@path} && #{cmd_string}"
    cmd = Scmd.new(cmd_string)
    cmd.run
    if !cmd.success?
      raise CmdError, "#{cmd_string}\n" \
                      "#{cmd.stderr.empty? ? cmd.stdout : cmd.stderr}"
    end
    [cmd_string, cmd.exitstatus, cmd.stdout]
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ggem-1.9.3 lib/ggem/git_repo.rb
ggem-1.9.2 lib/ggem/git_repo.rb