rswag-specs 2.1.1 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fa644707054d546e889410d5715437f34c6704d4a85d70c2d5eba14768da89e
4
- data.tar.gz: 9a175de33ad5ab07c111fbc03b475091ec5b51ea2a5c9be05c96fd46638a6f69
3
+ metadata.gz: fbf70bfdf1bb5ead3794e4d64a1afb85e00864701ec0cf42416a063b522fe489
4
+ data.tar.gz: ff39363f981f9a868e5afc47a00d87fbc629cda498118b024131318696e5e734
5
5
  SHA512:
6
- metadata.gz: 5999a7bb27dbcb062e087e8ec1c0513c50f01921ebe6a24596013cdb25b9e3dc7e2e7f696df3fcea52667351e65919f79697e720d664bfe71e80c593db483d75
7
- data.tar.gz: 9467528f8a10bb435542b8726b4b677dbb77729606523596f4134b9df59190e7b80e7d7816124f3fadfeb97c9ed329a9dfcd89a9ec6b5a50e21baf857a1c66f4
6
+ metadata.gz: e21b1bc504582ad44c5df4f24465a3751136ccd2e9114a95bc1aca95cc69b7a6110017c18faf3f2d854bdd596bf0612a56cb40803543c0a078143bc204083f37
7
+ data.tar.gz: bf21e075a70eb3e3a8712b8ee081aad9358cfe6472d258bacca82565b7d32426023e1c779a8b3e00b5c3496629357749d26daa6713bdfdd3a461cb72b601c773
@@ -13,8 +13,8 @@ RSpec.configure do |config|
13
13
  # document below. You can override this behavior by adding a swagger_doc tag to the
14
14
  # the root example_group in your specs, e.g. describe '...', swagger_doc: 'v2/swagger.json'
15
15
  config.swagger_docs = {
16
- 'v1/swagger.json' => {
17
- swagger: '2.0',
16
+ 'v1/swagger.yaml' => {
17
+ openapi: '3.0.1',
18
18
  info: {
19
19
  title: 'API V1',
20
20
  version: 'v1'
@@ -22,4 +22,10 @@ RSpec.configure do |config|
22
22
  paths: {}
23
23
  }
24
24
  }
25
+
26
+ # Specify the format of the output Swagger file when running 'rswag:specs:swaggerize'.
27
+ # The swagger_docs configuration option has the filename including format in
28
+ # the key, this may want to be changed to avoid putting yaml in json files.
29
+ # Defaults to json. Accepts ':json' and ':yaml'.
30
+ config.swagger_format = :yaml
25
31
  end
@@ -12,6 +12,7 @@ module Rswag
12
12
  c.add_setting :swagger_root
13
13
  c.add_setting :swagger_docs
14
14
  c.add_setting :swagger_dry_run
15
+ c.add_setting :swagger_format
15
16
  c.extend ExampleGroupHelpers, type: :request
16
17
  c.include ExampleHelpers, type: :request
17
18
  end
@@ -31,6 +31,14 @@ module Rswag
31
31
  end
32
32
  end
33
33
 
34
+ def swagger_format
35
+ @swagger_format ||= begin
36
+ @rspec_config.swagger_format = :json if @rspec_config.swagger_format.nil? || @rspec_config.swagger_format.empty?
37
+ raise ConfigurationError, "Unknown swagger_format '#{@rspec_config.swagger_format}'" unless [:json, :yaml].include?(@rspec_config.swagger_format)
38
+ @rspec_config.swagger_format
39
+ end
40
+ end
41
+
34
42
  def get_swagger_doc(name)
35
43
  return swagger_docs.values.first if name.nil?
36
44
  raise ConfigurationError, "Unknown swagger_doc '#{name}'" unless swagger_docs[name]
@@ -37,7 +37,7 @@ module Rswag
37
37
  FileUtils.mkdir_p dirname unless File.exists?(dirname)
38
38
 
39
39
  File.open(file_path, 'w') do |file|
40
- file.write(JSON.pretty_generate(doc))
40
+ file.write(pretty_generate(doc))
41
41
  end
42
42
 
43
43
  @output.puts "Swagger doc generated at #{file_path}"
@@ -46,6 +46,20 @@ module Rswag
46
46
 
47
47
  private
48
48
 
49
+ def pretty_generate(doc)
50
+ if @config.swagger_format == :yaml
51
+ clean_doc = yaml_prepare(doc)
52
+ YAML.dump(clean_doc)
53
+ else # config errors are thrown in 'def swagger_format', no throw needed here
54
+ JSON.pretty_generate(doc)
55
+ end
56
+ end
57
+
58
+ def yaml_prepare(doc)
59
+ json_doc = JSON.pretty_generate(doc)
60
+ clean_doc = JSON.parse(json_doc)
61
+ end
62
+
49
63
  def metadata_to_swagger(metadata)
50
64
  response_code = metadata[:response][:code]
51
65
  response = metadata[:response].reject { |k,v| k == :code }
@@ -16,3 +16,6 @@ namespace :rswag do
16
16
  end
17
17
  end
18
18
  end
19
+
20
+ task :rswag => ['rswag:specs:swaggerize']
21
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rswag-specs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richie Morris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-18 00:00:00.000000000 Z
11
+ date: 2019-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  version: '0'
112
112
  requirements: []
113
113
  rubyforge_project:
114
- rubygems_version: 2.7.7
114
+ rubygems_version: 2.7.8
115
115
  signing_key:
116
116
  specification_version: 4
117
117
  summary: A Swagger-based DSL for rspec-rails & accompanying rake task for generating