| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/env ruby
- require 'json'
- def puts_c(color, str)
- puts "\x1b[#{color}m#{str}\x1b[0m"
- end
- class Source
- attr_accessor :path, :v_regex
- def initialize(path, v_regex)
- @path = path
- @v_regex = v_regex
- end
- end
- class Bumper
- attr_accessor :sources, :bumped, :target_v
- def initialize(sources)
- @sources = sources
- end
- def start
- # get package.json version
- package = JSON.parse File.read 'package.json'
- @target_v = package['version']
- @bumped = false
- @sources.each {|source| bump_source(source)}
- # if bumped, do extra stuff and notify the user
- if @bumped
- `git add mustache.js`
- `git commit --amend --no-edit`
- puts_c 32, "successfully bumped version to #{@target_v}!"
- puts_c 33, "don't forget to `npm publish`!"
- end
- exit 0
- end
- def bump_source(source)
- file_buffer = File.read source.path
- if match = file_buffer.match(source.v_regex)
- file_v = match.captures[0]
- if @target_v != file_v
- did_bump
- puts "> bumping version in file '#{source.path}': #{file_v} -> #{@target_v}..."
- file_buffer[source.v_regex, 1] = @target_v
- File.open(source.path, 'w') { |f| f.write file_buffer }
- end
- else
- puts_c 31, "ERROR: Can't find version in '#{source.path}'"
- exit 1
- end
- end
- def did_bump
- if !@bumped
- puts 'bump detected!'
- end
- @bumped = true
- end
- end
- bumper = Bumper.new([
- Source.new('mustache.js', /version: '([^']+)'/),
- ])
- bumper.start
|