Sha256: 3c861da63e06e53f475895fce17e6b5ff4959d8eb4a86205bbf09bc1bf88da84

Contents?: true

Size: 1.78 KB

Versions: 4

Compression:

Stored size: 1.78 KB

Contents

#!/usr/bin/env ruby
require 'mikunyan'
require 'base64'

def obj64(obj)
    if obj.class == Hash
        obj.map{|k, v| [k, obj64(v)]}.to_h
    elsif obj.class == Array
        obj.map{|e| obj64(e)}
    elsif obj.class == String
        if obj.encoding == Encoding::UTF_8
            obj
        else
            Base64::strict_encode64(obj)
        end
    else
        obj
    end
end

opts = {:as_asset => false, :pretty => false, :yaml => false}
arg = nil
i = 0
while i < ARGV.count
    if ARGV[i].start_with?('-')
        case ARGV[i]
        when '--as-asset', '-a'
            opts[:as_asset] = true
        when '--pretty', '-p'
            opts[:pretty] = true
        when '--yaml', '-y'
            opts[:yaml] = true
        else
            warn("Unknown option: #{ARGV[i]}")
        end
    else
        arg = ARGV[i] unless arg
    end
    i += 1
end

if opts[:pretty] && opts[:yaml]
    warn("Option --pretty is ignored if --yaml is specified.")
end

unless File.file?(arg)
    warn("File not found: #{arg}")
    exit(1)
end

assets = {}

if opts[:as_asset]
    asset = Mikunyan::Asset.file(arg, arg.match(/([^\/]*?)(\.[^.]*)?\z/)[1])
    objs = []
    asset.path_ids.each do |e|
        obj = asset.parse_object_simple(e)
        objs << obj
    end
    assets[asset.name] = objs
else
    bundle = Mikunyan::AssetBundle.file(arg)
    bundle.assets.each do |asset|
        objs = []
        asset.path_ids.each do |e|
            obj = asset.parse_object_simple(e)
            objs << obj
        end
        assets[asset.name] = objs
    end
end

if opts[:yaml]
    require 'yaml'
    puts YAML.dump(assets)
else
    require 'json'
    assets = assets.map{|k, v| [k, obj64(v)]}.to_h
    if opts[:pretty]
        puts JSON.pretty_generate(assets)
    else
        puts JSON.generate(assets)
    end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mikunyan-3.9.5 exe/mikunyan-json
mikunyan-3.9.4 exe/mikunyan-json
mikunyan-3.9.3 exe/mikunyan-json
mikunyan-3.9.2 exe/mikunyan-json