diff --git a/rakelib/version.rake b/rakelib/version.rake new file mode 100644 index 0000000..afcd01c --- /dev/null +++ b/rakelib/version.rake @@ -0,0 +1,48 @@ +class << (helper = Bundler::GemHelper.instance) + SOURCE_PATH = "lib/pp.rb" + VERSION_PATTERN = /^\s*VERSION\s*=\s*(["'])\K.*?(?=\1)/ + + def update_source_version(path = SOURCE_PATH, pattern = VERSION_PATTERN) + File.open(path, "r+b") do |f| + d = f.read + if d.sub!(pattern) {version.to_s} + f.rewind + f.truncate(0) + f.print(d) + end + end + end + + def commit_bump + sh(%W[git commit -m bump\ up\ to\ #{gemspec.version} + #{SOURCE_PATH}]) + end + + def version=(v) + gemspec.version = v + update_source_version + commit_bump + end +end + +major, minor, teeny = helper.gemspec.version.segments + +namespace :dev do + task "bump:teeny" do + helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}") + end + + task "bump:minor" do + helper.version = Gem::Version.new("#{major}.#{minor+1}.0") + end + + task "bump:major" do + helper.version = Gem::Version.new("#{major+1}.0.0") + end + + task "bump" => "bump:teeny" + + task "tag" do + helper.__send__(:tag_version) + end +end