tomograph 3.0.0 → 3.0.1
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/.github/workflows/ruby.yml +33 -0
- data/CHANGELOG.md +9 -0
- data/README.md +5 -13
- data/exe/tomograph +7 -40
- data/lib/tomograph/api_blueprint/crafter/yaml.rb +2 -6
- data/lib/tomograph/api_blueprint/crafter/yaml/action.rb +2 -2
- data/lib/tomograph/api_blueprint/drafter_4/yaml.rb +2 -6
- data/lib/tomograph/api_blueprint/drafter_4/yaml/action.rb +2 -2
- data/lib/tomograph/api_blueprint/json_schema.rb +1 -1
- data/lib/tomograph/tomogram.rb +6 -6
- data/lib/tomograph/version.rb +1 -1
- data/tomograph.gemspec +0 -1
- metadata +3 -23
- data/.github/workflows/gempush.yml +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b82305a8afc3940fb54799c20a96c71685f1950addb5b0413572bb3ca6e5c2f
|
4
|
+
data.tar.gz: eddef2bcfd9ba3f22d3cf4511e0e7ce6a32c28992e0c022602c499210b72c2a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4843bb38871e842c26f63c6af9ac1d87fd5f153a56255c1b3d070eb35686c08b84c8279bf900d9dd4a0cf38fb9daff3b905bb58285e169c118ad7d36c7855b8c
|
7
|
+
data.tar.gz: 3df3afd4cc5064d767dad8640f156bd39972a728927621ac740f332609b21a3533be36d71099208f527e7d290970ab0e59814bc5d00239135687e2015a9e8b9d
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- uses: actions/checkout@v2
|
23
|
+
- name: Set up Ruby
|
24
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
25
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
26
|
+
# uses: ruby/setup-ruby@v1
|
27
|
+
uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
|
28
|
+
with:
|
29
|
+
ruby-version: 2.6
|
30
|
+
- name: Install dependencies
|
31
|
+
run: bundle install
|
32
|
+
- name: Run tests
|
33
|
+
run: bundle exec rake
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
### 3.0.1 - 2020-10-14
|
4
|
+
|
5
|
+
* removed
|
6
|
+
* delete apib_path [#31](https://github.com/funbox/tomograph/issues/31)
|
7
|
+
* delete drafter_4_apib_path [#32](https://github.com/funbox/tomograph/issues/32)
|
8
|
+
* replace drafter_yaml_path with drafter_4_yaml_path [#33](https://github.com/funbox/tomograph/issues/33)
|
9
|
+
* delete crafter_apib_path [#34](https://github.com/funbox/tomograph/issues/34)
|
10
|
+
* delete multi_json [#35](https://github.com/funbox/tomograph/issues/35)
|
11
|
+
|
3
12
|
### 3.0.0 - 2020-08-27
|
4
13
|
|
5
14
|
* features
|
data/README.md
CHANGED
@@ -31,15 +31,15 @@ $ gem install tomograph
|
|
31
31
|
```ruby
|
32
32
|
require 'tomograph'
|
33
33
|
|
34
|
-
tomogram = Tomograph::Tomogram.new(
|
34
|
+
tomogram = Tomograph::Tomogram.new(drafter_yaml_path: '/path/to/doc.yaml')
|
35
35
|
```
|
36
36
|
|
37
37
|
### Command line tool
|
38
38
|
|
39
|
-
CLI allows you to convert files from API
|
39
|
+
CLI allows you to convert files from API Elements to JSON Schema.
|
40
40
|
|
41
41
|
```bash
|
42
|
-
tomograph doc.
|
42
|
+
tomograph doc.yaml doc.json
|
43
43
|
```
|
44
44
|
|
45
45
|
There is also support for documents pre-parsed by [drafter](https://github.com/apiaryio/drafter) versions 3 and 4, or `crafter`.
|
@@ -236,10 +236,6 @@ Example output:
|
|
236
236
|
|
237
237
|
You can specify API prefix and path to the spec using one of the possible formats:
|
238
238
|
|
239
|
-
```ruby
|
240
|
-
Tomograph::Tomogram.new(prefix: '/api/v2', apib_path: '/path/to/doc.apib')
|
241
|
-
```
|
242
|
-
|
243
239
|
```ruby
|
244
240
|
Tomograph::Tomogram.new(prefix: '/api/v2', drafter_yaml_path: '/path/to/doc.yaml')
|
245
241
|
```
|
@@ -248,19 +244,15 @@ Tomograph::Tomogram.new(prefix: '/api/v2', drafter_yaml_path: '/path/to/doc.yaml
|
|
248
244
|
Tomograph::Tomogram.new(prefix: '/api/v2', tomogram_json_path: '/path/to/doc.json')
|
249
245
|
```
|
250
246
|
|
251
|
-
### `apib_path`
|
252
|
-
|
253
|
-
Path to API Blueprint documentation. There must be an installed [drafter](https://github.com/apiaryio/drafter) to parse it.
|
254
|
-
|
255
247
|
### `drafter_yaml_path`
|
256
248
|
|
257
249
|
Path to API Blueprint documentation pre-parsed with `drafter` and saved to a YAML file.
|
258
250
|
|
259
251
|
### Drafter v4 & Crafter support
|
260
252
|
|
261
|
-
If you are using a `drafter v4`, you should use `
|
253
|
+
If you are using a `drafter v4`, you should use `drafter_yaml_path`.
|
262
254
|
|
263
|
-
In case when you want to use `сrafter`, then you should pass
|
255
|
+
In case when you want to use `сrafter`, then you should pass `crafter_yaml_path` respectively.
|
264
256
|
|
265
257
|
### `tomogram_json_path`
|
266
258
|
|
data/exe/tomograph
CHANGED
@@ -13,10 +13,9 @@ include Methadone::CLILogging
|
|
13
13
|
version Tomograph::VERSION
|
14
14
|
description 'Converts API Blueprint to JSON Schema'
|
15
15
|
on('-d DRAFTER_VERSION', '--drafter', 'Choose drafter version: crafter or 4. Default: use drafter v.4.')
|
16
|
-
on('-f INPUT_FORMAT', '--format', 'Force input format: "apib" or "yaml". Default: detect by file extension.')
|
17
16
|
on('--exclude-description', 'Exclude "description" keys.')
|
18
17
|
on('--split', 'Split output into files by method.')
|
19
|
-
arg :input, 'path/to/doc.
|
18
|
+
arg :input, 'path/to/doc.yaml (API Elements)'
|
20
19
|
arg :output, 'path/to/doc.json or path/to/dir if --split is used.'
|
21
20
|
|
22
21
|
def prune!(obj, unwanted_key)
|
@@ -28,26 +27,6 @@ def prune!(obj, unwanted_key)
|
|
28
27
|
end
|
29
28
|
end
|
30
29
|
|
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
30
|
def choose_drafter(opt_parser)
|
52
31
|
case opt_parser
|
53
32
|
when 'crafter'
|
@@ -75,31 +54,19 @@ def write_split_json(actions, output)
|
|
75
54
|
end
|
76
55
|
|
77
56
|
def write_json(obj, path)
|
78
|
-
json =
|
57
|
+
json = JSON.pretty_generate(obj)
|
79
58
|
File.open(path, 'w') do |file|
|
80
59
|
file.write(json)
|
81
60
|
end
|
82
61
|
end
|
83
62
|
|
84
63
|
main do |input, output|
|
85
|
-
format = guess_format(options['format'], input)
|
86
64
|
version = choose_drafter(options['drafter'])
|
87
|
-
format_key =
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
:drafter_4_apib_path
|
93
|
-
end
|
94
|
-
when :yaml
|
95
|
-
if version == :crafter
|
96
|
-
:crafter_yaml_path
|
97
|
-
else
|
98
|
-
:drafter_4_yaml_path
|
99
|
-
end
|
100
|
-
else
|
101
|
-
fail NotImplementedError
|
102
|
-
end
|
65
|
+
format_key = {
|
66
|
+
crafter: :crafter_yaml_path,
|
67
|
+
drafter_4: :drafter_yaml_path
|
68
|
+
}[version]
|
69
|
+
|
103
70
|
tomogram = Tomograph::Tomogram.new(format_key => input)
|
104
71
|
actions = tomogram.to_a.map(&:to_hash)
|
105
72
|
|
@@ -6,13 +6,9 @@ module Tomograph
|
|
6
6
|
module ApiBlueprint
|
7
7
|
class Crafter
|
8
8
|
class Yaml
|
9
|
-
def initialize(prefix,
|
9
|
+
def initialize(prefix, drafter_yaml_path)
|
10
10
|
@prefix = prefix
|
11
|
-
@documentation =
|
12
|
-
YAML.safe_load(`drafter #{apib_path}`)
|
13
|
-
elsif drafter_yaml_path
|
14
|
-
YAML.safe_load(File.read(drafter_yaml_path))
|
15
|
-
end
|
11
|
+
@documentation = YAML.safe_load(File.read(drafter_yaml_path))
|
16
12
|
end
|
17
13
|
|
18
14
|
def groups
|
@@ -37,8 +37,8 @@ module Tomograph
|
|
37
37
|
end
|
38
38
|
return {} unless schema_node
|
39
39
|
|
40
|
-
|
41
|
-
rescue
|
40
|
+
JSON.parse(schema_node['content'])
|
41
|
+
rescue JSON::ParserError => e
|
42
42
|
puts "[Tomograph] Error while parsing #{e}. skipping..."
|
43
43
|
{}
|
44
44
|
end
|
@@ -6,13 +6,9 @@ module Tomograph
|
|
6
6
|
module ApiBlueprint
|
7
7
|
class Drafter4
|
8
8
|
class Yaml
|
9
|
-
def initialize(prefix,
|
9
|
+
def initialize(prefix, drafter_yaml_path)
|
10
10
|
@prefix = prefix
|
11
|
-
@documentation =
|
12
|
-
YAML.safe_load(`drafter #{apib_path}`)
|
13
|
-
elsif drafter_yaml_path
|
14
|
-
YAML.safe_load(File.read(drafter_yaml_path))
|
15
|
-
end
|
11
|
+
@documentation = YAML.safe_load(File.read(drafter_yaml_path))
|
16
12
|
end
|
17
13
|
|
18
14
|
def groups
|
@@ -37,8 +37,8 @@ module Tomograph
|
|
37
37
|
end
|
38
38
|
return {} unless schema_node
|
39
39
|
|
40
|
-
|
41
|
-
rescue
|
40
|
+
JSON.parse(schema_node['content'])
|
41
|
+
rescue JSON::ParserError => e
|
42
42
|
puts "[Tomograph] Error while parsing #{e}. skipping..."
|
43
43
|
{}
|
44
44
|
end
|
data/lib/tomograph/tomogram.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'json'
|
2
2
|
require 'tomograph/path'
|
3
3
|
require 'tomograph/api_blueprint/json_schema'
|
4
4
|
require 'tomograph/api_blueprint/drafter_4/yaml'
|
@@ -8,13 +8,13 @@ module Tomograph
|
|
8
8
|
class Tomogram
|
9
9
|
extend Gem::Deprecate
|
10
10
|
|
11
|
-
def initialize(prefix: '',
|
11
|
+
def initialize(prefix: '', drafter_yaml_path: nil, tomogram_json_path: nil, crafter_yaml_path: nil)
|
12
12
|
@documentation = if tomogram_json_path
|
13
13
|
Tomograph::ApiBlueprint::JsonSchema.new(prefix, tomogram_json_path)
|
14
|
-
elsif crafter_yaml_path
|
15
|
-
Tomograph::ApiBlueprint::Crafter::Yaml.new(prefix,
|
14
|
+
elsif crafter_yaml_path
|
15
|
+
Tomograph::ApiBlueprint::Crafter::Yaml.new(prefix, crafter_yaml_path)
|
16
16
|
else
|
17
|
-
Tomograph::ApiBlueprint::Drafter4::Yaml.new(prefix,
|
17
|
+
Tomograph::ApiBlueprint::Drafter4::Yaml.new(prefix, drafter_yaml_path)
|
18
18
|
end
|
19
19
|
@prefix = prefix
|
20
20
|
end
|
@@ -29,7 +29,7 @@ module Tomograph
|
|
29
29
|
deprecate :to_hash, 'to_a with method access', 2018, 8
|
30
30
|
|
31
31
|
def to_json
|
32
|
-
|
32
|
+
JSON.pretty_generate(to_a.map(&:to_hash))
|
33
33
|
end
|
34
34
|
|
35
35
|
def find_request(method:, path:)
|
data/lib/tomograph/version.rb
CHANGED
data/tomograph.gemspec
CHANGED
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_runtime_dependency 'methadone', '~> 2', '>= 2.0.2'
|
22
|
-
spec.add_runtime_dependency 'multi_json', '~> 1.14', '>= 1.14.1'
|
23
22
|
spec.add_development_dependency 'byebug', '~> 11.1', '>= 11.1.1'
|
24
23
|
spec.add_development_dependency 'rake', '>= 13.0.1'
|
25
24
|
spec.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
|
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: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- d.efimov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: methadone
|
@@ -30,26 +30,6 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 2.0.2
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: multi_json
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '1.14'
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 1.14.1
|
43
|
-
type: :runtime
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '1.14'
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 1.14.1
|
53
33
|
- !ruby/object:Gem::Dependency
|
54
34
|
name: byebug
|
55
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,7 +132,7 @@ executables:
|
|
152
132
|
extensions: []
|
153
133
|
extra_rdoc_files: []
|
154
134
|
files:
|
155
|
-
- ".github/workflows/
|
135
|
+
- ".github/workflows/ruby.yml"
|
156
136
|
- ".gitignore"
|
157
137
|
- ".rubocop.yml"
|
158
138
|
- ".ruby-version"
|
@@ -1,28 +0,0 @@
|
|
1
|
-
name: Ruby Gem
|
2
|
-
|
3
|
-
on:
|
4
|
-
push:
|
5
|
-
branches: [ master ]
|
6
|
-
pull_request:
|
7
|
-
branches: [ master ]
|
8
|
-
|
9
|
-
jobs:
|
10
|
-
build:
|
11
|
-
name: Build + Publish
|
12
|
-
runs-on: ubuntu-latest
|
13
|
-
|
14
|
-
steps:
|
15
|
-
- uses: actions/checkout@v2
|
16
|
-
- name: Set up Ruby
|
17
|
-
uses: actions/setup-ruby@v1
|
18
|
-
|
19
|
-
- name: Publish to RubyGems
|
20
|
-
run: |
|
21
|
-
mkdir -p $HOME/.gem
|
22
|
-
touch $HOME/.gem/credentials
|
23
|
-
chmod 0600 $HOME/.gem/credentials
|
24
|
-
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
25
|
-
gem build *.gemspec
|
26
|
-
gem push *.gem
|
27
|
-
env:
|
28
|
-
GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
|