class Middleman::BuildInfo::Updater
Public Class Methods
new(app, options)
click to toggle source
# File lib/middleman-build-info/updater.rb, line 11 def initialize(app, options) @start_time = Time.now @app = app @options = options @file = File.join(@app.root_path, @options[:relative_path], @options[:filename]) @file_relative = File.join(@options[:relative_path], @options[:filename]).gsub(/^\//,'') @backup = read_info_file app.set :build_info, @backup end
Public Instance Methods
update_build_info(builder)
click to toggle source
# File lib/middleman-build-info/updater.rb, line 22 def update_build_info(builder) @builder = builder @new_info = get_updated_info(@backup) write_info_file(@new_info) do @builder.say_status('update', @file_relative, :yellow) end end
wrap_up()
click to toggle source
# File lib/middleman-build-info/updater.rb, line 30 def wrap_up return print_build_info(@new_info) unless @builder.had_errors write_info_file(@backup) do @builder.say_status('rollback', @file_relative, :yellow) end end
Private Instance Methods
default_template()
click to toggle source
# File lib/middleman-build-info/updater.rb, line 59 def default_template { number: 0, date: '' } end
elapsed_time()
click to toggle source
# File lib/middleman-build-info/updater.rb, line 63 def elapsed_time diff = ((Time.now - @start_time) * 1000).ceil ss, ms = diff.divmod(1000) mm, ss = ss.divmod(60) time = [] time << pluralize(mm, "minute") unless mm.zero? time << pluralize(ss, "second") unless ss.zero? time << pluralize(ms, "millisecond") if time.empty? or not ms.zero? time.join(', ') end
get_updated_info(info)
click to toggle source
# File lib/middleman-build-info/updater.rb, line 53 def get_updated_info(info) info[:number] = info[:number].to_i + 1 info[:date] = Time.now.utc.to_s info end
print_build_info(info)
click to toggle source
# File lib/middleman-build-info/updater.rb, line 74 def print_build_info(info) return unless @options[:display_info_after_build] @builder.say("\n Build Info:") info.each_pair do |name, value| @builder.say_status(name.to_s, value, :green) end @builder.say("\n Build finished in #{elapsed_time}.") end
read_info_file()
click to toggle source
# File lib/middleman-build-info/updater.rb, line 47 def read_info_file JSON.parse(File.read(@file)).symbolize_keys rescue Errno::ENOENT, JSON::ParserError default_template end
write_info_file(info) { |block| ... }
click to toggle source
# File lib/middleman-build-info/updater.rb, line 39 def write_info_file(info, &block) json = "// Hands off!\n" + JSON.pretty_generate(info) File.open(@file, "w") { |f| f.write(json) } yield block rescue @builder.say_status('failed', @file_relative, :red) end