Class: Release

Inherits:
Thor
  • Object
show all
Includes:
Releasetool::Util
Defined in:
lib/tasks/release_thor.rb

Constant Summary collapse

DEFAULT_COMMIT_MESSAGE =
'preparing for release [CI SKIP]'

Constants included from Releasetool::Util

Releasetool::Util::DIR, Releasetool::Util::RELEASE_MARKER_FILE, Releasetool::Util::TEMPLATE_FILE, Releasetool::Util::VERSION_FILE

Instance Method Summary collapse

Methods included from Releasetool::Util

#guarded_system, #remove_stored_version, #stored_version

Instance Method Details

#abortObject



99
100
101
# File 'lib/tasks/release_thor.rb', line 99

def abort
  remove_stored_version
end

#commit(version = nil) ⇒ Object



66
67
68
69
70
71
# File 'lib/tasks/release_thor.rb', line 66

def commit(version=nil)
  version ||= stored_version
  guarded_system("git add #{DIR}")
  guarded_system("git add #{VERSION_FILE}") if File.exists?(VERSION_FILE)
  guarded_system("git commit #{DIR} #{File.exists?(VERSION_FILE) ? VERSION_FILE : ''} -e -m\"#{DEFAULT_COMMIT_MESSAGE}\"")
end

#latestObject



23
24
25
# File 'lib/tasks/release_thor.rb', line 23

def latest
  puts previous_version
end

#listObject



13
14
15
# File 'lib/tasks/release_thor.rb', line 13

def list
  system("git for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags")
end

#log(*args) ⇒ Object



33
34
35
36
# File 'lib/tasks/release_thor.rb', line 33

def log(*args)
  extra = " #{args.join(" ")}" if args.length > 0
  guarded_system("git log #{previous_version}..#{extra}")
end

#push(version = nil) ⇒ Object



88
89
90
91
92
93
# File 'lib/tasks/release_thor.rb', line 88

def push(version=nil)
  version ||= stored_version
  guarded_system("git push")
  guarded_system("git push origin #{version}")
  remove_stored_version
end

#start(specified_version = nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/tasks/release_thor.rb', line 49

def start(specified_version=nil)
  if File.exists?(RELEASE_MARKER_FILE)
    raise Thor::Error.new("Can't start when already started on a version. release abort or release finish")
  end
  version = next_version(specified_version)
  File.open(RELEASE_MARKER_FILE, 'w') do |f|
    f.write(version)
  end
  Releasetool::Release.new(version, previous: previous_version).prepare(edit: options[:edit])
end

#tag(version = nil) ⇒ Object



78
79
80
81
# File 'lib/tasks/release_thor.rb', line 78

def tag(version=nil)
  version ||= stored_version
  guarded_system("git tag -a #{version}")
end