tomograph 2.3.0 → 2.4.0
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/CHANGELOG.md +5 -0
- data/README.md +3 -6
- data/exe/tomograph +54 -31
- data/lib/tomograph/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68dab30fa771c79b9648e319ced4bd2264ba4d71
|
4
|
+
data.tar.gz: a5d4bf4ca5be0c68fcbdb2bf38d092206ad09798
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb450d6411f3ea0afc48bd46eab99bef42de95c0f83c1864d1616f348e8ad577ec6e4f33b414e2eba16a06d6cb5a82a56beb17fe0be5921d4c9c8113b936330e
|
7
|
+
data.tar.gz: 625cacbfcd9489612496aa2e1f594f860648301924df7bca407a27a2c00ededac727a336c780a6c2ef36cf64c76e3ef5ab40805b215cb81416ceb88141c26768
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
-
# Tomograph
|
1
|
+
# Tomograph [](https://travis-ci.org/funbox/tomograph) [](https://badge.fury.io/rb/tomograph)
|
2
2
|
|
3
3
|
<a href="https://funbox.ru">
|
4
4
|
<img src="https://funbox.ru/badges/sponsored_by_funbox_compact.svg" alt="Sponsored by FunBox" width=250 />
|
5
5
|
</a>
|
6
6
|
|
7
|
-
[](https://badge.fury.io/rb/tomograph)
|
8
|
-
[](https://travis-ci.org/funbox/tomograph)
|
9
|
-
|
10
7
|
Convert API Blueprint to JSON Schema and search.
|
11
8
|
|
12
9
|
## Installation
|
@@ -54,7 +51,7 @@ tomogram.to_json
|
|
54
51
|
```
|
55
52
|
|
56
53
|
Example input:
|
57
|
-
```
|
54
|
+
```apib
|
58
55
|
FORMAT: 1A
|
59
56
|
HOST: http://test.local
|
60
57
|
|
@@ -96,7 +93,7 @@ Project
|
|
96
93
|
```
|
97
94
|
|
98
95
|
Example output:
|
99
|
-
```
|
96
|
+
```json
|
100
97
|
[
|
101
98
|
{
|
102
99
|
"path": "/sessions",
|
data/exe/tomograph
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'fileutils'
|
4
|
+
|
3
5
|
require 'methadone'
|
4
6
|
|
5
7
|
require 'tomograph'
|
@@ -12,9 +14,10 @@ include Methadone::CLILogging
|
|
12
14
|
version Tomograph::VERSION
|
13
15
|
description 'Converts API Blueprint to JSON Schema'
|
14
16
|
on('-f INPUT_FORMAT', '--format', 'Force input format: "apib" or "yaml". Default: detect by file extension.')
|
15
|
-
arg :input, 'path/to/doc.apib (API Blueprint) or path/to/doc.yaml (API Elements)'
|
16
|
-
arg :output, 'path/to/doc.json'
|
17
17
|
on('--exclude-description', 'Exclude "description" keys.')
|
18
|
+
on('--split', 'Split output into files by method.')
|
19
|
+
arg :input, 'path/to/doc.apib (API Blueprint) or path/to/doc.yaml (API Elements)'
|
20
|
+
arg :output, 'path/to/doc.json or path/to/dir if --split is used.'
|
18
21
|
|
19
22
|
def prune!(obj, unwanted_key)
|
20
23
|
if obj.is_a?(Hash)
|
@@ -25,43 +28,63 @@ def prune!(obj, unwanted_key)
|
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
31
|
+
def guess_format(opt_format, input)
|
32
|
+
case opt_format && opt_format.downcase
|
33
|
+
when 'apib'
|
34
|
+
:apib
|
35
|
+
when 'yaml'
|
36
|
+
:yaml
|
37
|
+
when nil
|
38
|
+
case File.extname(input).downcase
|
39
|
+
when '.apib'
|
40
|
+
:apib
|
41
|
+
when '.yaml', '.yml'
|
42
|
+
:yaml
|
43
|
+
else
|
44
|
+
fail 'Unsupported input file extension!'
|
45
|
+
end
|
46
|
+
else
|
47
|
+
fail 'Unsupported input format!'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def write_split_json(actions, output)
|
52
|
+
FileUtils.mkdir_p(output)
|
53
|
+
actions.clone.each do |action|
|
54
|
+
json_name = "#{action.delete("path").to_s} #{action.delete("method")}".gsub('/', ':') +
|
55
|
+
'.json'
|
56
|
+
write_json(action, File.join(output, json_name))
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def write_json(obj, path)
|
61
|
+
json = MultiJson.dump(obj, pretty: true)
|
62
|
+
File.open(path, 'w') do |file|
|
63
|
+
file.write(json)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
28
67
|
main do |input, output|
|
29
|
-
|
30
|
-
format = case opt_format && opt_format.downcase
|
31
|
-
when 'apib'
|
32
|
-
:apib
|
33
|
-
when 'yaml'
|
34
|
-
:yaml
|
35
|
-
when nil
|
36
|
-
case File.extname(input).downcase
|
37
|
-
when '.apib'
|
38
|
-
:apib
|
39
|
-
when '.yaml'
|
40
|
-
:yaml
|
41
|
-
else
|
42
|
-
fail 'Unsupported input file extension!'
|
43
|
-
end
|
44
|
-
else
|
45
|
-
fail 'Unsupported input format!'
|
46
|
-
end
|
68
|
+
format = guess_format(options['format'], input)
|
47
69
|
format_key = case format
|
48
70
|
when :apib
|
49
71
|
:apib_path
|
50
72
|
when :yaml
|
51
73
|
:drafter_yaml_path
|
52
74
|
else
|
53
|
-
fail
|
75
|
+
fail NotImplementedError
|
54
76
|
end
|
55
|
-
tomogram = Tomograph::Tomogram.new(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
77
|
+
tomogram = Tomograph::Tomogram.new(format_key => input)
|
78
|
+
actions = tomogram.to_a.map(&:to_hash)
|
79
|
+
|
80
|
+
if options['exclude-description']
|
81
|
+
prune!(actions, 'description')
|
82
|
+
end
|
83
|
+
|
84
|
+
if options['split']
|
85
|
+
write_split_json(actions, output)
|
86
|
+
else
|
87
|
+
write_json(actions, output)
|
65
88
|
end
|
66
89
|
0
|
67
90
|
end
|
data/lib/tomograph/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tomograph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- d.efimov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09
|
11
|
+
date: 2018-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: methadone
|