Files
framework/public/plugins/mustache/scripts/bump-version-in-source
T
2023-01-24 20:31:23 +00:00

74 lines
1.4 KiB
Ruby
Executable File

#!/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