tomograph 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![Build Status](https://travis-ci.org/funbox/tomograph.svg?branch=master)](https://travis-ci.org/funbox/tomograph) [![Gem Version](https://badge.fury.io/rb/tomograph.svg)](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
|
-
[![Gem Version](https://badge.fury.io/rb/tomograph.svg)](https://badge.fury.io/rb/tomograph)
|
8
|
-
[![Build Status](https://travis-ci.org/funbox/tomograph.svg?branch=master)](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
|