Sha256: 1414ff0003cd6642060d2993a83585554fc0d3f57b12aacf940ec94923b84705
Contents?: true
Size: 1.66 KB
Versions: 14
Compression:
Stored size: 1.66 KB
Contents
module Fontcustom class Manifest include Utility attr_reader :manifest def initialize(manifest, cli_options = {}) @manifest = manifest @cli_options = symbolize_hash cli_options if File.exists? @manifest reload if ! @cli_options.empty? && get(:options) != @cli_options set :options, @cli_options end else create_manifest @cli_options end end # TODO convert paths to absolute def get(key) @data[key] end # TODO convert paths to relative def set(key, value, status = nil) if key == :all @data = value else @data[key] = value end json = JSON.pretty_generate @data write_file @manifest, json, status end def reload begin json = File.read @manifest @data = JSON.parse json, :symbolize_names => true rescue JSON::ParserError raise Fontcustom::Error, "Couldn't parse `#{@manifest}`. Fix any invalid "\ "JSON or delete the file to start from scratch." end end def delete(key) files = get(key) return if files.empty? begin deleted = [] files.each do |file| remove_file file, :verbose => false deleted << file end ensure set key, files - deleted say_changed :delete, deleted end end private def create_manifest(options) defaults = { :checksum => { :current => "", :previous => "" }, :fonts => [], :glyphs => {}, :options => options, :templates => [] } set :all, defaults, :create end end end
Version data entries
14 entries across 14 versions & 2 rubygems