From 3241888b839f31e22ee0bec992bf9989974e794f Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Fri, 9 Aug 2013 11:41:00 -0400 Subject: [PATCH 01/13] Add changelog. --- CHANGELOG.md | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b5fec5e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,73 @@ +## v0.1.2 + - Bumping version to v0.1.2 + - add fstab module and specs + - add service.restart, return 'self' in service methods + - use custom runtime error subclass for command failures + +## v0.1.1 + - Bumping version to 0.1.1 + - add special distro types (generic/test) + - parse numeric partition sizes from parted output + - tidy up new features, round out specs testing them + - features to round out set + - add system representation + - add logical volume skeleton + - add disk/partition representations & specs + - start adding specs for services + - add service representation + - add distro representation + - Improved test coverage of common + - Add proxy support to subscribe, refactor proxy details into a method. + - Add register command with proxy and satellite options and tests. + - Create an array from the options instead of a hash. + - Requiring all of active_support core_extensions + - ActiveSupport v4 drops support for ruby 1.9.2 + +## v0.1.0 + - Building v0.1.0 + - Made sanitize a private method + - Fixed default options to expect positive case. + - Cleanup of commands + - Refactored sanitizing + - Added active_support for blank? method + - Allow common methods to be called without namespacing. + - Extending Yum to get the latest available version for package(s) + - Add more options to Subscription Manager registration + - Add a common method to sanitize user input for the command line. + - Add common write command for use in writing config files. + - Add parsing of Yum repo files with tests and sample data. + - Add gem to parse files with ini type contents + - Adding Hash store_path + - Extend Yum.update to allow an optional list of packages as arguments. + - Add test and support for using yum's repotrack tool. + - Add test and support for using yum's createrepo tool. + - Added tests and support for RPM. + - Adding dependency for other core extensions. + - Fix issue related to command output filling up the IO pipe. + - Removing JRuby, Rubinius and MRI 1.8 because of Kernel.spawn support. + - Fix misnamed .travis.yml file + - Adding Version Badge + +## v0.0.1 + - Adding Gemnasium support + - Adding Coveralls support + - Adding CodeClimate support + - Adding travis-ci support + - Adding example for Red Hat Subscription Manager hosted + - '.registered?' should return false rather than raise if not available. + - Adding support and tests for SubscriptionManager + - Extending Common.run with option ':return_output' + - Added support to mock command output sourced from a data file for tests + - Adding tests for Yum commands + - Adding tests for linux_admin + - Updating Yum methods to leverage changes in Common module + - Extending common and adding tests + - Cleaner way to get the exitstatus of the shell process. + - Yum commands should return true-false or raise an exception + - Adding high level method to check system registration status + - Adding tests for RHN functionality. + - Adding support for RHN and method to check registeration status + - Adding support for Yum (check and apply updates) + - Adding a module for shared methods. + - Adding rspec for testing. + - Gem Framework added. From 835d579e131ab5218892864500cafd6e2f88fbd1 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Fri, 9 Aug 2013 12:13:40 -0400 Subject: [PATCH 02/13] Added update_changelog rake task as a prerequisite to 'rake release.' The normal workflow should be: 1) Make your linux_admin code changes. 2) Test and commit these changes. 3) When ready for a new tag... 4) Run rake release 5) This will invoke the update_changelog rake task, it will ask you to: 6) Update LinuxAdmin::VERSION. 7) Verify that the script correctly added the commits since the last tag to the beginning of the CHANGELOG.md. 8) Add the correct version information before these commits. 9) Commit these changes 10) Hit enter and rake release will be run to create the tag, and push the version to rubygems.org. --- Rakefile | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 1f38e51..9ec4788 100644 --- a/Rakefile +++ b/Rakefile @@ -3,4 +3,35 @@ require "bundler/gem_tasks" require 'rspec/core/rake_task' RSpec::Core::RakeTask.new('spec') task :test => :spec -task :default => :spec \ No newline at end of file +task :default => :spec + +Rake::Task[:release].enhance [:update_changelog] + +task :update_changelog do + change = "CHANGELOG.md" + `git diff --quiet #{change}` + if $?.exitstatus == 1 + warn "There are already changes to #{change}." + exit 1 + end + existing = File.read(change) + + require 'linux_admin/version' + version = LinuxAdmin::VERSION + + new_text = `git log --no-merges --format=" - %s" v#{version}...HEAD` + File.write(change, new_text + "\n" + existing) + + msg = <<-MSG +Updated #{change} with commits since v#{version}. +Now: +1) Update LinuxAdmin::VERSION. +2) Verify the commits added to #{change} since the last tag. +3) Update #{change} with the version for these commits. +4) Commit these changes. +5) Hit enter to continue. +MSG + puts msg + + STDIN.gets +end From 3e70004bd9ae92ae0d6331c8317b8be8567c0971 Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 00:37:38 -0400 Subject: [PATCH 03/13] Move logic into our own rake file --- Rakefile | 31 ++----------------------------- tasks/release.rake | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 29 deletions(-) create mode 100644 tasks/release.rake diff --git a/Rakefile b/Rakefile index 9ec4788..2290f61 100644 --- a/Rakefile +++ b/Rakefile @@ -5,33 +5,6 @@ RSpec::Core::RakeTask.new('spec') task :test => :spec task :default => :spec -Rake::Task[:release].enhance [:update_changelog] - -task :update_changelog do - change = "CHANGELOG.md" - `git diff --quiet #{change}` - if $?.exitstatus == 1 - warn "There are already changes to #{change}." - exit 1 - end - existing = File.read(change) - - require 'linux_admin/version' - version = LinuxAdmin::VERSION +Dir[File.join(File.dirname(__FILE__),'tasks/*.rake')].each { |f| load f } - new_text = `git log --no-merges --format=" - %s" v#{version}...HEAD` - File.write(change, new_text + "\n" + existing) - - msg = <<-MSG -Updated #{change} with commits since v#{version}. -Now: -1) Update LinuxAdmin::VERSION. -2) Verify the commits added to #{change} since the last tag. -3) Update #{change} with the version for these commits. -4) Commit these changes. -5) Hit enter to continue. -MSG - puts msg - - STDIN.gets -end +Rake::Task[:release].enhance [:update_changelog] diff --git a/tasks/release.rake b/tasks/release.rake new file mode 100644 index 0000000..383df0a --- /dev/null +++ b/tasks/release.rake @@ -0,0 +1,28 @@ +task :update_changelog do + change = "CHANGELOG.md" + `git diff --quiet #{change}` + if $?.exitstatus == 1 + warn "There are already changes to #{change}." + exit 1 + end + existing = File.read(change) + + require 'linux_admin/version' + version = LinuxAdmin::VERSION + + new_text = `git log --no-merges --format=" - %s" v#{version}...HEAD` + File.write(change, new_text + "\n" + existing) + + msg = <<-MSG +Updated #{change} with commits since v#{version}. +Now: +1) Update LinuxAdmin::VERSION. +2) Verify the commits added to #{change} since the last tag. +3) Update #{change} with the version for these commits. +4) Commit these changes. +5) Hit enter to continue. +MSG + puts msg + + STDIN.gets +end \ No newline at end of file From ed622219c54ecaa80dcd29919ee6d5d75273b3ab Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 00:56:36 -0400 Subject: [PATCH 04/13] Dynamically gather all information needed in the rake file --- tasks/release.rake | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/tasks/release.rake b/tasks/release.rake index 383df0a..18dbd65 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -1,28 +1,37 @@ +require 'active_support/core_ext' + +CHANGELOG_FILE = "CHANGELOG.md".freeze +GEM_DIRECTORY = File.dirname(__FILE__).split("/")[-2].freeze +GEM_CONSTANT = GEM_DIRECTORY.classify.constantize + task :update_changelog do - change = "CHANGELOG.md" - `git diff --quiet #{change}` + `git diff --quiet #{CHANGELOG_FILE}` if $?.exitstatus == 1 - warn "There are already changes to #{change}." + warn "There are already changes to #{CHANGELOG_FILE}." exit 1 end - existing = File.read(change) - - require 'linux_admin/version' - version = LinuxAdmin::VERSION + existing = File.read(CHANGELOG_FILE) - new_text = `git log --no-merges --format=" - %s" v#{version}...HEAD` - File.write(change, new_text + "\n" + existing) + new_text = `git log --no-merges --format=" - %s" v#{latest_gem_version}...HEAD` + File.write(CHANGELOG_FILE, new_text + "\n" + existing) msg = <<-MSG -Updated #{change} with commits since v#{version}. +Updated #{CHANGELOG_FILE} with commits since v#{latest_gem_version}. Now: -1) Update LinuxAdmin::VERSION. -2) Verify the commits added to #{change} since the last tag. -3) Update #{change} with the version for these commits. -4) Commit these changes. +1) Update VERSION file. +2) Verify the commits added to #{CHANGELOG_FILE} since the last tag. +3) Update #{CHANGELOG_FILE} with the version for these commits. +4) Commit these CHANGELOG_FILEs. 5) Hit enter to continue. MSG puts msg STDIN.gets +end + +def latest_gem_version + @latest_gem_version ||= begin + require "#{GEM_DIRECTORY}/version" + GEM_CONSTANT::VERSION + end end \ No newline at end of file From c73efdc5475c23f6b0b45772c50a6c6b0d0c20cd Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 00:57:31 -0400 Subject: [PATCH 05/13] Split functions from workflow --- tasks/release.rake | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/tasks/release.rake b/tasks/release.rake index 18dbd65..b1b9ce7 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -5,17 +5,14 @@ GEM_DIRECTORY = File.dirname(__FILE__).split("/")[-2].freeze GEM_CONSTANT = GEM_DIRECTORY.classify.constantize task :update_changelog do - `git diff --quiet #{CHANGELOG_FILE}` - if $?.exitstatus == 1 + if changelog_modified? warn "There are already changes to #{CHANGELOG_FILE}." exit 1 end - existing = File.read(CHANGELOG_FILE) - new_text = `git log --no-merges --format=" - %s" v#{latest_gem_version}...HEAD` - File.write(CHANGELOG_FILE, new_text + "\n" + existing) + prepend_to_changelog - msg = <<-MSG + puts <<-MSG Updated #{CHANGELOG_FILE} with commits since v#{latest_gem_version}. Now: 1) Update VERSION file. @@ -24,14 +21,27 @@ Now: 4) Commit these CHANGELOG_FILEs. 5) Hit enter to continue. MSG - puts msg STDIN.gets end + +def changelog_modified? + `git diff --quiet #{CHANGELOG_FILE}` + $?.exitstatus == 1 ? true : false +end + +def commits_since_last_release + `git log --no-merges --format=" - %s" v#{latest_gem_version}...HEAD` +end + def latest_gem_version @latest_gem_version ||= begin require "#{GEM_DIRECTORY}/version" GEM_CONSTANT::VERSION end +end + +def prepend_to_changelog + File.write(CHANGELOG_FILE, commits_since_last_release + "\n" + File.read(CHANGELOG_FILE)) end \ No newline at end of file From 39bd1ab10be9abb35ca987956ba0855950d6cbcb Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 00:59:15 -0400 Subject: [PATCH 06/13] Use a more appropriate name for the rake task --- Rakefile | 2 +- tasks/release.rake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index 2290f61..bef74da 100644 --- a/Rakefile +++ b/Rakefile @@ -7,4 +7,4 @@ task :default => :spec Dir[File.join(File.dirname(__FILE__),'tasks/*.rake')].each { |f| load f } -Rake::Task[:release].enhance [:update_changelog] +Rake::Task[:release].enhance [:prepare_for_release] diff --git a/tasks/release.rake b/tasks/release.rake index b1b9ce7..fc8d59b 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -4,7 +4,7 @@ CHANGELOG_FILE = "CHANGELOG.md".freeze GEM_DIRECTORY = File.dirname(__FILE__).split("/")[-2].freeze GEM_CONSTANT = GEM_DIRECTORY.classify.constantize -task :update_changelog do +task :prepare_for_release do if changelog_modified? warn "There are already changes to #{CHANGELOG_FILE}." exit 1 From f62ec6c86b5c4a12a0d1fb5a4499d0cd7b45da22 Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 02:09:16 -0400 Subject: [PATCH 07/13] Automate updating the version file --- tasks/release.rake | 53 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/tasks/release.rake b/tasks/release.rake index fc8d59b..8ac8d68 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -1,10 +1,15 @@ require 'active_support/core_ext' -CHANGELOG_FILE = "CHANGELOG.md".freeze -GEM_DIRECTORY = File.dirname(__FILE__).split("/")[-2].freeze -GEM_CONSTANT = GEM_DIRECTORY.classify.constantize +CHANGELOG_FILE = "CHANGELOG.md".freeze +GEM_DIRECTORY = File.dirname(__FILE__).split("/")[-2].freeze +GEM_CONSTANT = GEM_DIRECTORY.classify.constantize +GEM_VERSION_FILE = "./lib/#{GEM_DIRECTORY}/version.rb" task :prepare_for_release do + puts "Preparing for release of #{GEM_CONSTANT}" + new_gem_version + update_version_file + if changelog_modified? warn "There are already changes to #{CHANGELOG_FILE}." exit 1 @@ -15,11 +20,10 @@ task :prepare_for_release do puts <<-MSG Updated #{CHANGELOG_FILE} with commits since v#{latest_gem_version}. Now: -1) Update VERSION file. -2) Verify the commits added to #{CHANGELOG_FILE} since the last tag. -3) Update #{CHANGELOG_FILE} with the version for these commits. -4) Commit these CHANGELOG_FILEs. -5) Hit enter to continue. +1) Verify the commits added to #{CHANGELOG_FILE} since the last tag. +2) Update #{CHANGELOG_FILE} with the version for these commits. +3) Commit these CHANGELOG_FILEs. +4) Hit enter to continue. MSG STDIN.gets @@ -35,9 +39,40 @@ def commits_since_last_release `git log --no-merges --format=" - %s" v#{latest_gem_version}...HEAD` end +def update_version_file + old_contents = File.read(GEM_VERSION_FILE).split("\n") + updated_contents = old_contents.collect {|line| line.include?("VERSION") ? line.split("=").first<<"= #{new_gem_version.inspect}" : line} + File.write(GEM_VERSION_FILE, updated_contents.join("\n")) +end + +def new_gem_version + @new_gem_version ||= begin + version = Hash[[:major, :minor, :build].zip(latest_gem_version.split(".", 3))] + version[ask_release_type_question] = (version[ask_release_type_question].to_i + 1).to_s + version.values.join(".") + end +end + +def ask_release_type_question + @ask_release_type_question ||= begin + puts <<-EOQ +Please select release type: + 1) Build (0.0.x) + 2) Minor (0.x.0) + 3) Major (x.0.0) +EOQ + + case STDIN.gets.chomp.to_i + when 1; :build + when 2; :minor + when 3; :major + end + end +end + def latest_gem_version @latest_gem_version ||= begin - require "#{GEM_DIRECTORY}/version" + require "#{GEM_VERSION_FILE}" GEM_CONSTANT::VERSION end end From c243ef911ea159163beb586643e41177a015b825 Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 09:18:35 -0400 Subject: [PATCH 08/13] Include the new version number when prepending to the changelog --- tasks/release.rake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tasks/release.rake b/tasks/release.rake index 8ac8d68..2a83d74 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -78,5 +78,6 @@ def latest_gem_version end def prepend_to_changelog - File.write(CHANGELOG_FILE, commits_since_last_release + "\n" + File.read(CHANGELOG_FILE)) + changes = ["## v#{new_gem_version}", commits_since_last_release, File.read(CHANGELOG_FILE)].join("\n") + File.write(CHANGELOG_FILE, changes) end \ No newline at end of file From 6523ad684ba9eac88bbbe170425333b5835b7cae Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 11:12:36 -0400 Subject: [PATCH 09/13] Clean up workflow, handle cases where files have already been updated --- tasks/release.rake | 80 ++++++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/tasks/release.rake b/tasks/release.rake index 2a83d74..79017ad 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -7,47 +7,48 @@ GEM_VERSION_FILE = "./lib/#{GEM_DIRECTORY}/version.rb" task :prepare_for_release do puts "Preparing for release of #{GEM_CONSTANT}" - new_gem_version - update_version_file - if changelog_modified? - warn "There are already changes to #{CHANGELOG_FILE}." - exit 1 - end + puts "Old Version: #{latest_release_tag}" + puts "New Version: #{new_gem_version}" + update_version_file prepend_to_changelog - - puts <<-MSG -Updated #{CHANGELOG_FILE} with commits since v#{latest_gem_version}. -Now: -1) Verify the commits added to #{CHANGELOG_FILE} since the last tag. -2) Update #{CHANGELOG_FILE} with the version for these commits. -3) Commit these CHANGELOG_FILEs. -4) Hit enter to continue. -MSG - + puts "Changelog updated, please review and save changes. Press enter to continue..." STDIN.gets + + confirm_all_changes + puts "changes accepted" + # commit changes end -def changelog_modified? - `git diff --quiet #{CHANGELOG_FILE}` - $?.exitstatus == 1 ? true : false +def file_modified_since_release?(file) + # Check for committed changes + `git diff --quiet #{latest_release_tag}...HEAD #{file}` + return true if $?.exitstatus == 1 + + # Check for uncommitted changes + `git diff --quiet #{file}` + return true if $?.exitstatus == 1 + + false end def commits_since_last_release - `git log --no-merges --format=" - %s" v#{latest_gem_version}...HEAD` + `git log --no-merges --format=" - %s" #{latest_release_tag}...HEAD` end def update_version_file - old_contents = File.read(GEM_VERSION_FILE).split("\n") - updated_contents = old_contents.collect {|line| line.include?("VERSION") ? line.split("=").first<<"= #{new_gem_version.inspect}" : line} + updated_contents = read_version_file.collect {|line| line.include?("VERSION") ? line.split("=").first.rstrip + " = \"#{new_gem_version}\"" : line} File.write(GEM_VERSION_FILE, updated_contents.join("\n")) + puts "Version File Updated" end def new_gem_version @new_gem_version ||= begin - version = Hash[[:major, :minor, :build].zip(latest_gem_version.split(".", 3))] + return version_from_version_file if file_modified_since_release?(GEM_VERSION_FILE) + + version = Hash[[:major, :minor, :build].zip(version_from_version_file.split("."))] version[ask_release_type_question] = (version[ask_release_type_question].to_i + 1).to_s version.values.join(".") end @@ -66,18 +67,43 @@ EOQ when 1; :build when 2; :minor when 3; :major + else exit 1 end end end -def latest_gem_version - @latest_gem_version ||= begin - require "#{GEM_VERSION_FILE}" - GEM_CONSTANT::VERSION +def version_from_version_file + read_version_file.select { |l| l.include?("VERSION")}.first.split("=").last.tr("\"", "").strip +end + +def read_version_file + @read_version_file ||= File.read(GEM_VERSION_FILE).split("\n") +end + +def latest_release_tag + @latest_release_tag ||= begin + `git tag -l v*`.split("\n").last end end def prepend_to_changelog + #TODO: prepend missing releases also? changes = ["## v#{new_gem_version}", commits_since_last_release, File.read(CHANGELOG_FILE)].join("\n") File.write(CHANGELOG_FILE, changes) +end + +def confirm_all_changes + puts "Please confirm the following changes:" + puts `git diff` + puts + puts "1) Accept all changes" + puts "2) Reload changes" + puts "3) Exit - aborting commit" + choice = STDIN.gets.chomp.to_i + + case choice + when 1; return + when 2; confirm_all_changes + else exit 1 + end end \ No newline at end of file From c0ddbd4f61aaa160e7659954b090094350752c5f Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 11:37:06 -0400 Subject: [PATCH 10/13] Add files and commit them --- tasks/release.rake | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/tasks/release.rake b/tasks/release.rake index 79017ad..c0a5d18 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -8,8 +8,8 @@ GEM_VERSION_FILE = "./lib/#{GEM_DIRECTORY}/version.rb" task :prepare_for_release do puts "Preparing for release of #{GEM_CONSTANT}" - puts "Old Version: #{latest_release_tag}" - puts "New Version: #{new_gem_version}" + puts "Old Version: #{old_release_tag}" + puts "New Version: #{new_release_tag}" update_version_file prepend_to_changelog @@ -17,14 +17,14 @@ task :prepare_for_release do STDIN.gets confirm_all_changes - puts "changes accepted" - # commit changes + + commit_changes end def file_modified_since_release?(file) # Check for committed changes - `git diff --quiet #{latest_release_tag}...HEAD #{file}` + `git diff --quiet #{old_release_tag}...HEAD #{file}` return true if $?.exitstatus == 1 # Check for uncommitted changes @@ -35,7 +35,7 @@ def file_modified_since_release?(file) end def commits_since_last_release - `git log --no-merges --format=" - %s" #{latest_release_tag}...HEAD` + `git log --no-merges --format=" - %s" #{old_release_tag}...HEAD` end def update_version_file @@ -44,6 +44,10 @@ def update_version_file puts "Version File Updated" end +def new_release_tag + "v#{new_gem_version}" +end + def new_gem_version @new_gem_version ||= begin return version_from_version_file if file_modified_since_release?(GEM_VERSION_FILE) @@ -80,15 +84,15 @@ def read_version_file @read_version_file ||= File.read(GEM_VERSION_FILE).split("\n") end -def latest_release_tag - @latest_release_tag ||= begin +def old_release_tag + @old_release_tag ||= begin `git tag -l v*`.split("\n").last end end def prepend_to_changelog #TODO: prepend missing releases also? - changes = ["## v#{new_gem_version}", commits_since_last_release, File.read(CHANGELOG_FILE)].join("\n") + changes = ["## #{new_release_tag}", commits_since_last_release, File.read(CHANGELOG_FILE)].join("\n") File.write(CHANGELOG_FILE, changes) end @@ -106,4 +110,11 @@ def confirm_all_changes when 2; confirm_all_changes else exit 1 end +end + +def commit_changes + `git add -u` + `git commit -m "Bumping version to #{new_release_tag}"` + puts "Changes committed. Press enter to release #{GEM_CONSTANT} #{new_release_tag}" + STDIN.gets end \ No newline at end of file From 3a42b15fd2499d5f64200dd7a4d700218a3a883e Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 11:51:46 -0400 Subject: [PATCH 11/13] Clean up dialog --- tasks/release.rake | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/tasks/release.rake b/tasks/release.rake index c0a5d18..a44e7ca 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -13,7 +13,7 @@ task :prepare_for_release do update_version_file prepend_to_changelog - puts "Changelog updated, please review and save changes. Press enter to continue..." + puts "\nChangelog updated, please review and save changes. Press enter to continue..." STDIN.gets confirm_all_changes @@ -39,9 +39,10 @@ def commits_since_last_release end def update_version_file + return if file_modified_since_release?(GEM_VERSION_FILE) updated_contents = read_version_file.collect {|line| line.include?("VERSION") ? line.split("=").first.rstrip + " = \"#{new_gem_version}\"" : line} File.write(GEM_VERSION_FILE, updated_contents.join("\n")) - puts "Version File Updated" + puts "\nVersion File Updated" end def new_release_tag @@ -61,6 +62,7 @@ end def ask_release_type_question @ask_release_type_question ||= begin puts <<-EOQ + Please select release type: 1) Build (0.0.x) 2) Minor (0.x.0) @@ -97,15 +99,16 @@ def prepend_to_changelog end def confirm_all_changes - puts "Please confirm the following changes:" puts `git diff` - puts - puts "1) Accept all changes" - puts "2) Reload changes" - puts "3) Exit - aborting commit" - choice = STDIN.gets.chomp.to_i + puts <<-EOQ + +Please confirm the changes above... + 1) Accept all changes + 2) Reload changes + 3) Exit - aborting commit +EOQ - case choice + case STDIN.gets.chomp.to_i when 1; return when 2; confirm_all_changes else exit 1 @@ -115,6 +118,6 @@ end def commit_changes `git add -u` `git commit -m "Bumping version to #{new_release_tag}"` - puts "Changes committed. Press enter to release #{GEM_CONSTANT} #{new_release_tag}" + puts "\nChanges committed. Press enter to release #{GEM_CONSTANT} #{new_release_tag}" STDIN.gets end \ No newline at end of file From d98c8071d48c19d1806191face3831be3954e202 Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 12:42:28 -0400 Subject: [PATCH 12/13] Keep all modifications in our rakefile to make it portable --- Rakefile | 2 -- tasks/release.rake | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index bef74da..3b8f3ae 100644 --- a/Rakefile +++ b/Rakefile @@ -6,5 +6,3 @@ task :test => :spec task :default => :spec Dir[File.join(File.dirname(__FILE__),'tasks/*.rake')].each { |f| load f } - -Rake::Task[:release].enhance [:prepare_for_release] diff --git a/tasks/release.rake b/tasks/release.rake index a44e7ca..de7e6ba 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -1,3 +1,5 @@ +Rake::Task[:release].enhance [:prepare_for_release] + require 'active_support/core_ext' CHANGELOG_FILE = "CHANGELOG.md".freeze From e361a91485d5afb218edcefd7f80f4d4c3fe2227 Mon Sep 17 00:00:00 2001 From: Brandon Dunne Date: Sat, 7 Sep 2013 13:29:41 -0400 Subject: [PATCH 13/13] Reset the version counters following the field being updated --- tasks/release.rake | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tasks/release.rake b/tasks/release.rake index de7e6ba..9a8bfc3 100644 --- a/tasks/release.rake +++ b/tasks/release.rake @@ -55,14 +55,18 @@ def new_gem_version @new_gem_version ||= begin return version_from_version_file if file_modified_since_release?(GEM_VERSION_FILE) - version = Hash[[:major, :minor, :build].zip(version_from_version_file.split("."))] - version[ask_release_type_question] = (version[ask_release_type_question].to_i + 1).to_s - version.values.join(".") + old_version = Hash[[:major, :minor, :build].zip(version_from_version_file.split("."))] + old_version.each_with_object({}) do |(k, v), h| + h[k] = if h[release_type]; 0 + elsif k == release_type; (old_version[release_type].to_i + 1).to_s + else old_version[k] + end + end.values.join(".") end end -def ask_release_type_question - @ask_release_type_question ||= begin +def release_type + @release_type ||= begin puts <<-EOQ Please select release type: