class Releasetool::Release
Public Class Methods
new(version, previous:)
click to toggle source
# File lib/releasetool/release.rb, line 7 def initialize(version, previous:) raise "Version must be a Releasetool::Version" unless version.is_a?(Releasetool::Version) if previous raise "Previous must be nil or a Releasetool::Version" unless version.is_a?(Releasetool::Version) end @version = version @previous = previous end
Public Instance Methods
prepare(edit: false)
click to toggle source
# File lib/releasetool/release.rb, line 16 def prepare(edit: false) puts headers commits = `git log #{@previous}..HEAD --pretty=format:"- %B"` notes = commits.gsub("\n\n", "\n") notes_file = "#{DIR}/#{@version}.md" if File.exists?(notes_file) puts "-"*80 puts " File '#{notes_file}' already exists (appending)" puts "-"*80 File.open(notes_file, 'a') do |f| f.puts("\n\nAPPENDED:\n\n") f.puts(notes) end else ensure_dir File.open(notes_file, 'w') do |f| f.puts(headers) f.puts(notes) end puts "written to #{notes_file}" if edit system("open #{notes_file}") end end if File.exists?(VERSION_FILE) from_version = @previous.to_s_without_v to_version = @version.to_s_without_v guarded_system("cat #{VERSION_FILE} | sed s/#{from_version}/#{to_version.gsub('.', '\.')}/ > #{VERSION_FILE}.tmp") guarded_system("mv #{VERSION_FILE}.tmp #{VERSION_FILE}") end end
Private Instance Methods
create_template_file(template_file)
click to toggle source
# File lib/releasetool/release.rb, line 69 def create_template_file(template_file) File.open(template_file, "w") do |f| f.write <<~FILEEND $VERSION Release Notes *Changes since $PREVIOUS* FILEEND end end
ensure_dir()
click to toggle source
# File lib/releasetool/release.rb, line 50 def ensure_dir Dir.mkdir(DIR) unless File.exists?(DIR) end
ensured_template_file()
click to toggle source
# File lib/releasetool/release.rb, line 62 def ensured_template_file ensure_dir template_file = "#{DIR}/#{TEMPLATE_FILE}" create_template_file(template_file) unless File.exists?(template_file) template_file end
headers()
click to toggle source
# File lib/releasetool/release.rb, line 54 def headers @headers ||= template.gsub("$VERSION", @version.to_s).gsub("$PREVIOUS", @previous.to_s) end
template()
click to toggle source
# File lib/releasetool/release.rb, line 58 def template File.read(ensured_template_file) end