lib/extensionator/manifest.rb
require "json"
require "base64"
module Extensionator
class Manifest
def initialize(dir)
manifest_file = "#{dir}/manifest.json"
raise "Can't find manifest file" unless File.exists? manifest_file
begin
@manifest = JSON.parse(File.read(manifest_file))
rescue Errno::ENOTENT => e
raise ValidationError.new("Can't read manifest file: #{e.message}")
rescue JSON::ParserError => e
raise ValidationError.new("Can't parse manifest file: #{e.message}")
end
end
def validate(paths)
#todo: actual validations!
true
end
def inject_key(priv_key)
#Chrome appears to support some shorter encoding of the pub key, but I'm not sure what it is
@manifest["key"] = Base64.encode64(priv_key.public_key.to_der).gsub("\n", "")
@updated = true
end
def strip_key
@manifest.delete("key")
@updated = true
end
def inject_version(version)
@manifest["version"] = version
@updated = true
end
def updated?
@updated || false
end
def write
dir = "/tmp/extensionator"
FileUtils.mkdir_p(dir)
file = "#{dir}/crx-manifest.json"
content = JSON.pretty_generate(@manifest)
File.open(file, "w"){|f| f.write(content)}
["manifest.json", file]
end
end
end