#!/usr/bin/env ruby require 'json' def puts_c(color, str) puts "\x1b[#{color}m#{str}\x1b[0m" end # for tracking if bump was needed $bumped = false def did_bump if !$bumped puts "bump detected!" if `which uglifyjs`.empty? puts_c 31, "you need uglifyjs installed" puts "run `sudo npm install -g uglify-js`" exit 1 end end $bumped = true end # get package.json version pckg_path = 'package.json' package = JSON.parse File.read pckg_path v = package['version'] # check/bump version in `mustache.js` file mjs_path = 'mustache.js' mjs = File.read mjs_path mjs_re = /mustache.version = "([\d\.]*)"/ if match = mjs.match(mjs_re) mjs_v = match.captures[0] if v != mjs_v then did_bump puts "> bumping version in file 'mustache.js': #{mjs_v} -> #{v}..." mjs.gsub! mjs_re, "mustache.version = \"#{v}\"" File.open(mjs_path, 'w') {|f| f.write(mjs) } end else puts_c 31, "ERROR: Can't find 'mustache.version = \"x.x.x\"' in mustache.js" exit 1 end # check/bump version in `mustache.js.nuspec` file nspc_path = 'mustache.js.nuspec' nspc = File.read nspc_path nspc_re = /([\d\.]*)<\/version>/ if match = nspc.match(nspc_re) nspc_v = match.captures[0] if v != nspc_v then did_bump puts "> bumping version in file 'mustache.js.nuspec': #{nspc_v} -> #{v}..." nspc.gsub! nspc_re, "#{v}" File.open(nspc_path, 'w') {|f| f.write(nspc) } end else puts_c 31, "ERROR: Can't find 'x.x.x' in mustache.js.nuspec" exit 1 end # check/bump version in `bower.json` file bwr_path = 'bower.json' bwr = File.read bwr_path bwr_re = /"version": "([\d\.]*)"/ if match = bwr.match(bwr_re) bwr_v = match.captures[0] if v != bwr_v did_bump puts "> bumping version in file 'bower.json': #{bwr_v} -> #{v}..." bwr.gsub! bwr_re, "\"version\": \"#{v}\"" File.open(bwr_path, 'w') {|f| f.write(bwr) } end else puts_c 31, "ERROR: Can't find '\"version\": \"x.x.x\"' in 'bower.json'" exit 1 end # if bumped, do extra stuff and notify the user if $bumped # minify `mustache.js` using the Rakefile task puts "> minifying `mustache.js`..." `rake minify` # stage files for commit `git add #{pckg_path}` `git add #{mjs_path}` `git add #{nspc_path}` `git add #{bwr_path}` `git add mustache.min.js` `git commit -m "bump to version #{v}"` # notify codemonkey puts "staged bumped files and created commit" puts_c 32, "successfully bumped version to #{v}!" puts_c 33, "don't forget to `npm publish` and `spm publish`!" exit 1 end exit 0