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
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