Sha256: 6fa22afebe77275d507a8911268a43c70e5c7413fada65015bf7c129371caf62

Contents?: true

Size: 1.2 KB

Versions: 4

Compression:

Stored size: 1.2 KB

Contents

require 'pathname'
require 'scmd'

module GGem

  class GitRepo

    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 *.gitkeep")
      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

    NotFoundError = Class.new(ArgumentError)
    CmdError      = Class.new(RuntimeError)

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ggem-1.8.4 lib/ggem/git_repo.rb
ggem-1.8.3 lib/ggem/git_repo.rb
ggem-1.8.1 lib/ggem/git_repo.rb
ggem-1.8.0 lib/ggem/git_repo.rb