Class: Gempilot::VersionTag

Inherits:
Object
  • Object
show all
Includes:
StrictShell
Defined in:
lib/gempilot/version_tag.rb

Overview

Manages git operations for version releases.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version) ⇒ VersionTag

Returns a new instance of VersionTag.



10
11
12
# File 'lib/gempilot/version_tag.rb', line 10

def initialize(version)
  @version = version
end

Instance Attribute Details

#versionObject (readonly)

Returns the value of attribute version.



8
9
10
# File 'lib/gempilot/version_tag.rb', line 8

def version
  @version
end

Instance Method Details

#createObject



14
15
16
17
18
19
20
# File 'lib/gempilot/version_tag.rb', line 14

def create
  _, _, status = Open3.capture3("git", "diff", "--staged", "--quiet")
  raise "Cannot proceed, staging area must be clean" unless status.success?

  sh "git", "add", version.path.to_s
  sh "git", "commit", "-m", "Bump version to #{version.value}"
end

#resetObject



32
33
34
35
36
# File 'lib/gempilot/version_tag.rb', line 32

def reset
  assert_last_commit_is_bump!
  sh "git", "reset", "--quiet", "--mixed", "HEAD~1"
  sh "git", "restore", version.path.to_s
end

#revertObject



38
39
40
41
# File 'lib/gempilot/version_tag.rb', line 38

def revert
  assert_last_commit_is_bump!
  sh "git", "revert", "HEAD", "--no-edit"
end

#tagObject



22
23
24
25
# File 'lib/gempilot/version_tag.rb', line 22

def tag
  assert_last_commit_is_bump!
  sh "git", "tag", version.tag
end

#untagObject



27
28
29
30
# File 'lib/gempilot/version_tag.rb', line 27

def untag
  assert_last_commit_is_bump!
  sh "git", "tag", "--delete", version.tag
end