msgpack-inspect 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +3 -4
- data/Dockerfile +1 -0
- data/README.md +37 -1
- data/Rakefile +126 -14
- data/build_config.rb +94 -0
- data/docker-compose.yml +23 -0
- data/exe/msgpack-inspect +1 -0
- data/lib/msgpack/inspect.rb +4 -3
- data/lib/msgpack/inspect/command.rb +7 -1
- data/lib/msgpack/inspect/example.json +48 -0
- data/lib/msgpack/inspect/example.yml +34 -0
- data/lib/msgpack/inspect/inspector.rb +53 -287
- data/lib/msgpack/inspect/node.rb +286 -0
- data/lib/msgpack/inspect/simple_yaml_dumper.rb +8 -0
- data/lib/msgpack/inspect/streamer.rb +356 -0
- data/lib/msgpack/inspect/version.rb +1 -1
- data/mrbgem.rake +13 -0
- data/mrblib/msgpack-inspect.rb +66 -0
- data/mrblib/msgpack/inspect.rb +9 -0
- data/mrblib/msgpack/inspect/inspector.rb +1 -0
- data/mrblib/msgpack/inspect/node.rb +1 -0
- data/mrblib/msgpack/inspect/streamer.rb +1 -0
- data/mrblib/msgpack/inspect/version.rb +1 -0
- data/tools/msgpack-inspect/msgpack-inspect.c +33 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e91d7d7767afb363718c4d91b9eb5b3777d1ba6
|
4
|
+
data.tar.gz: 5ddb504a62ad2ef03baa4fa5f0155ad301c9a769
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba04b57ddfac50103b15bacf1ed8dd3d82bad41a0cd0b1d6d61136ef0622f01c482fa73e42bfa967e990ece5d3b68e4fc77da7d617a1201f51ce6ab744abddfe
|
7
|
+
data.tar.gz: 7bdb948ec679f023f568b4b10d9a6f4718e3f402365612e742f4662628be64c4198e05e4188046ff3508857b19f094f9997ee408a831b75b56b32996676ffcd0
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Dockerfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
FROM hone/mruby-cli
|
data/README.md
CHANGED
@@ -45,9 +45,45 @@ This command shows the all data contained in specified format (YAML in default).
|
|
45
45
|
:value: true
|
46
46
|
```
|
47
47
|
|
48
|
+
## Example
|
49
|
+
|
50
|
+
This is a example to inspect a data from STDIN.
|
51
|
+
The data corresponds to `{"compact":true,"schema":0}` in JSON.
|
52
|
+
|
53
|
+
```
|
54
|
+
$ printf "\x82\xa7compact\xc3\xa6schema\x00" | msgpack-inspect -
|
55
|
+
---
|
56
|
+
- :format: :fixmap
|
57
|
+
:header: '82'
|
58
|
+
:length: 2
|
59
|
+
:children:
|
60
|
+
- :key:
|
61
|
+
:format: :fixstr
|
62
|
+
:header: a7
|
63
|
+
:length: 7
|
64
|
+
:data: 636f6d70616374
|
65
|
+
:value: compact
|
66
|
+
:value:
|
67
|
+
:format: :true
|
68
|
+
:header: c3
|
69
|
+
:data: c3
|
70
|
+
:value: true
|
71
|
+
- :key:
|
72
|
+
:format: :fixstr
|
73
|
+
:header: a6
|
74
|
+
:length: 6
|
75
|
+
:data: 736368656d61
|
76
|
+
:value: schema
|
77
|
+
:value:
|
78
|
+
:format: :fixint
|
79
|
+
:header: '00'
|
80
|
+
:data: '00'
|
81
|
+
:value: 0
|
82
|
+
```
|
83
|
+
|
48
84
|
TODO: show more example
|
49
85
|
|
50
86
|
## Contributing
|
51
87
|
|
52
|
-
Bug reports and pull requests are welcome on GitHub at [https://github.com/
|
88
|
+
Bug reports and pull requests are welcome on GitHub at [https://github.com/tagomoris/msgpack-inspect].
|
53
89
|
|
data/Rakefile
CHANGED
@@ -1,18 +1,130 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
|
3
1
|
require 'fileutils'
|
4
|
-
require 'rake/testtask'
|
5
|
-
require 'rake/clean'
|
6
2
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
#
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
3
|
+
MRUBY_VERSION="1.2.0"
|
4
|
+
|
5
|
+
file :mruby do
|
6
|
+
#sh "git clone --depth=1 https://github.com/mruby/mruby"
|
7
|
+
sh "curl -L --fail --retry 3 --retry-delay 1 https://github.com/mruby/mruby/archive/#{MRUBY_VERSION}.tar.gz -s -o - | tar zxf -"
|
8
|
+
FileUtils.mv("mruby-#{MRUBY_VERSION}", "mruby")
|
9
|
+
end
|
10
|
+
|
11
|
+
APP_NAME=ENV["APP_NAME"] || "msgpack-inspect"
|
12
|
+
APP_ROOT=ENV["APP_ROOT"] || Dir.pwd
|
13
|
+
# avoid redefining constants in mruby Rakefile
|
14
|
+
mruby_root=File.expand_path(ENV["MRUBY_ROOT"] || "#{APP_ROOT}/mruby")
|
15
|
+
mruby_config=File.expand_path(ENV["MRUBY_CONFIG"] || "build_config.rb")
|
16
|
+
ENV['MRUBY_ROOT'] = mruby_root
|
17
|
+
ENV['MRUBY_CONFIG'] = mruby_config
|
18
|
+
Rake::Task[:mruby].invoke unless Dir.exist?(mruby_root)
|
19
|
+
load "#{mruby_root}/Rakefile"
|
20
|
+
Rake::Task['test'].clear # to clear test task of mruby/Rakefile
|
21
|
+
|
22
|
+
desc "compile binary"
|
23
|
+
task :compile => [:all] do
|
24
|
+
Dir.chdir(mruby_root) do
|
25
|
+
MRuby.each_target do |target|
|
26
|
+
`#{target.cc.command} --version`
|
27
|
+
abort("Command #{target.cc.command} for #{target.name} is missing.") unless $?.success?
|
28
|
+
end
|
29
|
+
%W(#{mruby_root}/build/x86_64-pc-linux-gnu/bin/#{APP_NAME} #{mruby_root}/build/i686-pc-linux-gnu/#{APP_NAME}).each do |bin|
|
30
|
+
sh "strip --strip-unneeded #{bin}" if File.exist?(bin)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
desc "cleanup"
|
36
|
+
task :clean do
|
37
|
+
Dir.chdir(mruby_root) do
|
38
|
+
sh "rake deep_clean"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "generate a release tarball"
|
43
|
+
task :release => :compile do
|
44
|
+
require 'tmpdir'
|
45
|
+
|
46
|
+
Dir.chdir(mruby_root) do
|
47
|
+
# since we're in the mruby/
|
48
|
+
release_dir = "releases/v#{APP_VERSION}"
|
49
|
+
release_path = Dir.pwd + "/../#{release_dir}"
|
50
|
+
app_name = "#{APP_NAME}-#{APP_VERSION}"
|
51
|
+
FileUtils.mkdir_p(release_path)
|
52
|
+
|
53
|
+
Dir.mktmpdir do |tmp_dir|
|
54
|
+
Dir.chdir(tmp_dir) do
|
55
|
+
MRuby.each_target do |target|
|
56
|
+
next if name == "host"
|
57
|
+
|
58
|
+
arch = name
|
59
|
+
bin = "#{build_dir}/bin/#{exefile(APP_NAME)}"
|
60
|
+
FileUtils.mkdir_p(name)
|
61
|
+
FileUtils.cp(bin, name)
|
62
|
+
|
63
|
+
Dir.chdir(arch) do
|
64
|
+
arch_release = "#{app_name}-#{arch}"
|
65
|
+
puts "current dir #{Dir.pwd}"
|
66
|
+
puts "Writing #{release_path}/#{arch_release}.tgz"
|
67
|
+
`tar czf #{release_path}/#{arch_release}.tgz *`
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
puts "Writing #{release_dir}/#{app_name}.tgz"
|
72
|
+
`tar czf #{release_path}/#{app_name}.tgz *`
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
namespace :local do
|
79
|
+
desc "show version"
|
80
|
+
task :version do
|
81
|
+
puts "#{APP_NAME} #{APP_VERSION}"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def is_in_a_docker_container?
|
86
|
+
`test -f /proc/self/cgroup && grep -q docker /proc/self/cgroup`
|
87
|
+
$?.success?
|
88
|
+
end
|
89
|
+
|
90
|
+
Rake.application.tasks.each do |task|
|
91
|
+
next if ENV["MRUBY_CLI_LOCAL"]
|
92
|
+
unless task.name.start_with?("local:") || task.name == 'test'
|
93
|
+
# Inspired by rake-hooks
|
94
|
+
# https://github.com/guillermo/rake-hooks
|
95
|
+
old_task = Rake.application.instance_variable_get('@tasks').delete(task.name)
|
96
|
+
desc old_task.full_comment
|
97
|
+
task old_task.name => old_task.prerequisites do
|
98
|
+
abort("Not running in docker, you should type \"docker-compose run <task>\".") unless is_in_a_docker_container?
|
99
|
+
old_task.invoke
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
if is_in_a_docker_container?
|
105
|
+
load File.join(File.expand_path(File.dirname(__FILE__)), "mrbgem.rake")
|
106
|
+
|
107
|
+
current_gem = MRuby::Gem.current
|
108
|
+
app_version = MRuby::Gem.current.version
|
109
|
+
APP_VERSION = (app_version.nil? || app_version.empty?) ? "unknown" : app_version
|
110
|
+
|
111
|
+
task default: :compile
|
112
|
+
else
|
113
|
+
Rake::Task['release'].clear # to clear release tasks to create mruby binary
|
114
|
+
require "bundler/gem_tasks"
|
115
|
+
require 'rake/testtask'
|
116
|
+
# require 'rake/clean'
|
117
|
+
|
118
|
+
Rake::TestTask.new(:test) do |t|
|
119
|
+
# To run test for only one file (or file path pattern)
|
120
|
+
# $ bundle exec rake test TEST=test/test_specified_path.rb
|
121
|
+
# $ bundle exec rake test TEST=test/test_*.rb
|
122
|
+
t.libs << "test"
|
123
|
+
t.test_files = Dir["test/**/test_*.rb"].sort
|
124
|
+
t.verbose = true
|
125
|
+
t.warning = true
|
126
|
+
t.ruby_opts = ["-Eascii-8bit:ascii-8bit"]
|
127
|
+
end
|
128
|
+
task default: [:test, :release]
|
16
129
|
end
|
17
130
|
|
18
|
-
task :default => :test
|
data/build_config.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
def gem_config(conf)
|
2
|
+
#conf.gembox 'default'
|
3
|
+
|
4
|
+
# be sure to include this gem (the cli app)
|
5
|
+
conf.gem File.expand_path(File.dirname(__FILE__))
|
6
|
+
end
|
7
|
+
|
8
|
+
MRuby::Build.new do |conf|
|
9
|
+
toolchain :clang
|
10
|
+
|
11
|
+
conf.enable_bintest
|
12
|
+
conf.enable_debug
|
13
|
+
conf.enable_test
|
14
|
+
|
15
|
+
gem_config(conf)
|
16
|
+
end
|
17
|
+
|
18
|
+
MRuby::Build.new('x86_64-pc-linux-gnu') do |conf|
|
19
|
+
toolchain :gcc
|
20
|
+
|
21
|
+
gem_config(conf)
|
22
|
+
end
|
23
|
+
|
24
|
+
MRuby::CrossBuild.new('i686-pc-linux-gnu') do |conf|
|
25
|
+
toolchain :gcc
|
26
|
+
|
27
|
+
[conf.cc, conf.cxx, conf.linker].each do |cc|
|
28
|
+
cc.flags << "-m32"
|
29
|
+
end
|
30
|
+
|
31
|
+
gem_config(conf)
|
32
|
+
end
|
33
|
+
|
34
|
+
MRuby::CrossBuild.new('x86_64-apple-darwin14') do |conf|
|
35
|
+
toolchain :clang
|
36
|
+
|
37
|
+
[conf.cc, conf.linker].each do |cc|
|
38
|
+
cc.command = 'x86_64-apple-darwin14-clang'
|
39
|
+
end
|
40
|
+
conf.cxx.command = 'x86_64-apple-darwin14-clang++'
|
41
|
+
conf.archiver.command = 'x86_64-apple-darwin14-ar'
|
42
|
+
|
43
|
+
conf.build_target = 'x86_64-pc-linux-gnu'
|
44
|
+
conf.host_target = 'x86_64-apple-darwin14'
|
45
|
+
|
46
|
+
gem_config(conf)
|
47
|
+
end
|
48
|
+
|
49
|
+
MRuby::CrossBuild.new('i386-apple-darwin14') do |conf|
|
50
|
+
toolchain :clang
|
51
|
+
|
52
|
+
[conf.cc, conf.linker].each do |cc|
|
53
|
+
cc.command = 'i386-apple-darwin14-clang'
|
54
|
+
end
|
55
|
+
conf.cxx.command = 'i386-apple-darwin14-clang++'
|
56
|
+
conf.archiver.command = 'i386-apple-darwin14-ar'
|
57
|
+
|
58
|
+
conf.build_target = 'i386-pc-linux-gnu'
|
59
|
+
conf.host_target = 'i386-apple-darwin14'
|
60
|
+
|
61
|
+
gem_config(conf)
|
62
|
+
end
|
63
|
+
|
64
|
+
MRuby::CrossBuild.new('x86_64-w64-mingw32') do |conf|
|
65
|
+
toolchain :gcc
|
66
|
+
|
67
|
+
[conf.cc, conf.linker].each do |cc|
|
68
|
+
cc.command = 'x86_64-w64-mingw32-gcc'
|
69
|
+
end
|
70
|
+
conf.cxx.command = 'x86_64-w64-mingw32-g++'
|
71
|
+
conf.archiver.command = 'x86_64-w64-mingw32-gcc-ar'
|
72
|
+
conf.exts.executable = ".exe"
|
73
|
+
|
74
|
+
conf.build_target = 'x86_64-pc-linux-gnu'
|
75
|
+
conf.host_target = 'x86_64-w64-mingw32'
|
76
|
+
|
77
|
+
gem_config(conf)
|
78
|
+
end
|
79
|
+
|
80
|
+
MRuby::CrossBuild.new('i686-w64-mingw32') do |conf|
|
81
|
+
toolchain :gcc
|
82
|
+
|
83
|
+
[conf.cc, conf.linker].each do |cc|
|
84
|
+
cc.command = 'i686-w64-mingw32-gcc'
|
85
|
+
end
|
86
|
+
conf.cxx.command = 'i686-w64-mingw32-g++'
|
87
|
+
conf.archiver.command = 'i686-w64-mingw32-gcc-ar'
|
88
|
+
conf.exts.executable = ".exe"
|
89
|
+
|
90
|
+
conf.build_target = 'i686-pc-linux-gnu'
|
91
|
+
conf.host_target = 'i686-w64-mingw32'
|
92
|
+
|
93
|
+
gem_config(conf)
|
94
|
+
end
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
compile: &defaults
|
2
|
+
build: .
|
3
|
+
volumes:
|
4
|
+
- .:/home/mruby/code:rw
|
5
|
+
command: rake compile
|
6
|
+
test:
|
7
|
+
<<: *defaults
|
8
|
+
command: rake test
|
9
|
+
bintest:
|
10
|
+
<<: *defaults
|
11
|
+
command: rake test:bintest
|
12
|
+
mtest:
|
13
|
+
<<: *defaults
|
14
|
+
command: rake test:mtest
|
15
|
+
clean:
|
16
|
+
<<: *defaults
|
17
|
+
command: rake clean
|
18
|
+
shell:
|
19
|
+
<<: *defaults
|
20
|
+
command: bash
|
21
|
+
release:
|
22
|
+
<<: *defaults
|
23
|
+
command: rake release
|
data/exe/msgpack-inspect
CHANGED
data/lib/msgpack/inspect.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require "msgpack/inspect/version"
|
2
|
+
require "msgpack/inspect/node"
|
3
|
+
require "msgpack/inspect/streamer"
|
2
4
|
require "msgpack/inspect/inspector"
|
3
5
|
|
4
6
|
module MessagePack
|
5
7
|
module Inspect
|
6
8
|
FORMATS = MessagePack::Inspect::Inspector::FORMATS
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
MessagePack::Inspect::Inspector.new(io)
|
10
|
+
def self.inspect(io, format)
|
11
|
+
MessagePack::Inspect::Inspector.new(io, format).inspect
|
11
12
|
end
|
12
13
|
end
|
13
14
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'msgpack/inspect'
|
3
|
+
require 'msgpack/inspect/version'
|
3
4
|
|
4
5
|
module MessagePack
|
5
6
|
module Inspect
|
@@ -18,6 +19,10 @@ module MessagePack
|
|
18
19
|
opts.on("-r", "--require LIB", "ruby file path to require (to load ext type definitions)") do |path|
|
19
20
|
require path
|
20
21
|
end
|
22
|
+
opts.on("-v", "--version", "Show version of this software") do
|
23
|
+
puts "msgpack-inspect #{MessagePack::Inspect::VERSION}"
|
24
|
+
exit
|
25
|
+
end
|
21
26
|
opts.on_tail("-h", "--help", "Show this message") do
|
22
27
|
puts opts
|
23
28
|
exit
|
@@ -36,7 +41,8 @@ module MessagePack
|
|
36
41
|
exit 1
|
37
42
|
end
|
38
43
|
|
39
|
-
puts MessagePack::Inspect.inspect(io).dump(format)
|
44
|
+
# puts MessagePack::Inspect.inspect(io).dump(format)
|
45
|
+
puts MessagePack::Inspect.inspect(io, format)
|
40
46
|
end
|
41
47
|
end
|
42
48
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
[
|
2
|
+
{ "format": "fixarray",
|
3
|
+
"header": "ff",
|
4
|
+
"length": 3,
|
5
|
+
"children": [
|
6
|
+
{ "format": "string",
|
7
|
+
"header": "e0",
|
8
|
+
"length": 10,
|
9
|
+
"data": "0102030405060708090a",
|
10
|
+
"value": "aaaaaaaaaa"
|
11
|
+
},
|
12
|
+
{ "format": "int",
|
13
|
+
"header": "10",
|
14
|
+
"data": "10",
|
15
|
+
"value": 10
|
16
|
+
},
|
17
|
+
{ "format": "nil",
|
18
|
+
"header": "a0",
|
19
|
+
"data": "a0",
|
20
|
+
"value": null
|
21
|
+
}
|
22
|
+
]
|
23
|
+
},
|
24
|
+
{ "format": "fixmap",
|
25
|
+
"header": "ff",
|
26
|
+
"length": 2,
|
27
|
+
"children": [
|
28
|
+
{ "key":
|
29
|
+
{ "format": "nil",
|
30
|
+
"data": "a0"
|
31
|
+
},
|
32
|
+
"value":
|
33
|
+
{ "format": "nil",
|
34
|
+
"data": "a0"
|
35
|
+
}
|
36
|
+
},
|
37
|
+
{ "key":
|
38
|
+
{ "format": "nil",
|
39
|
+
"data": "a0"
|
40
|
+
},
|
41
|
+
"value":
|
42
|
+
{ "format": "nil",
|
43
|
+
"data": "a0"
|
44
|
+
}
|
45
|
+
}
|
46
|
+
]
|
47
|
+
}
|
48
|
+
]
|