diff options
Diffstat (limited to 'Rakefile')
-rw-r--r-- | Rakefile | 69 |
1 files changed, 46 insertions, 23 deletions
@@ -55,33 +55,56 @@ namespace :cert do end end +def change_version(&block) + version_file = 'lib/net/ssh/version.rb' + require_relative version_file + pre = Net::SSH::Version::PRE + result = block[pre: pre] + raise "Version change logic should always return a pre", ArgumentError unless result.key?(:pre) + + new_pre = result[:pre] + found = false + File.open("#{version_file}.new", "w") do |f| + File.readlines(version_file).each do |line| + match = /^(\s+PRE\s+=\s+")#{pre}("\s*)$/.match(line) + if match + prefix = match[1] + postfix = match[2] + if new_pre.nil? + prefix.delete_suffix!('"') + postfix.delete_prefix!('"') + end + new_line = "#{prefix}#{new_pre.inspect}#{postfix}" + puts "Changing:\n - #{line} + #{new_line}" + line = new_line + found = true + end + f.write(line) + end + raise ArugmentError, "Cound not find line: PRE = \"#{pre}\" in #{version_file}" unless found + end + + FileUtils.mv version_file, "#{version_file}.old" + FileUtils.mv "#{version_file}.new", version_file +end + namespace :vbump do + desc "Final release" + task :final do + change_version do |pre:| + raise ArgumentError, "Unexpected pre: #{pre}" if pre.nil? + + { pre: nil } + end + end + desc "Increment prerelease" task :pre do - version_file = 'lib/net/ssh/version.rb' - require_relative version_file - pre = Net::SSH::Version::PRE - if pre =~ /^([a-z]+)(\d+)/ - new_pre = "#{$1}#{$2.to_i+1}" - found = false - - File.open("#{version_file}.new", "w") do |f| - File.readlines(version_file).each do |line| - if line =~ /^(\s+PRE\s+=\s+")#{pre}("\s*)$/ - new_line = "#{$1}#{new_pre}#{$2}" - puts "Changing:\n - #{line} + #{new_line}" - line = new_line - found = true - end - f.write(line) - end - raise ArugmentError, 'Cound not find line: PRE = \"#{pre}\" in #{version_file}"' unless found - end + change_version do |pre:| + match = /^([a-z]+)(\d+)/.match(pre) + raise ArgumentError, "Unexpected pre: #{pre}" if match.nil? - FileUtils.mv version_file, "#{version_file}.old" - FileUtils.mv "#{version_file}.new", version_file - else - raise ArgumentError, "Unepexeted pre string: #{pre}" + { pre: "#{match[1]}#{match[2].to_i + 1}" } end end end |