rswag_schema_export 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 663ecc311960cc8848e244d4f71790eb0a9e91da66aa820b9b673761528d4e50
4
- data.tar.gz: c693f56751d318e60fd6a8cc26f3b9568c2f35388a0b5e2771ba0eb121f021b4
3
+ metadata.gz: 56dc1566ef40b4689c9546a3f5daa0b62c5aa066f56af01de96e563fb8b796b5
4
+ data.tar.gz: 1e3c00c1812d7f1748525263f24573846064394ce34f0e9a989893cc0d7f9323
5
5
  SHA512:
6
- metadata.gz: b6c679fe76ac810612e968195d01ddd0ac754dc34b807bd49ff93d27cbbdaccd71eb96bcd7ac8d2beaac3c728077cd81675d6c21f3937530f87927a32cfeee87
7
- data.tar.gz: db33f882f45ae29bef2cffc23442bfb0179e06dd27c1c3ce9c38180a1e057283ac9eaeec6a8dc5bdc65a81cd6212a03465fe19e471b39fd78d67f66d6fbc40d9
6
+ metadata.gz: 3743c24a0de165ae785740537ec41ad3deb3aa76f00b78b354258d907d7f42e049e9fa959b0db6b597765c4f584becb393e6972367b37b3eb3cc9b4d9e7e3f93
7
+ data.tar.gz: '09ef3131b1f7ae054a69eda7b0bd57787e9c3bbfc5481cce831fc3edf2f75a0a0ab9c3749c927c77e3de0261a1fff86b1cf40a6fda2c8a6e96c595b2ae6a33a1'
data/.rubocop.yml CHANGED
@@ -9,6 +9,9 @@ Metrics/LineLength:
9
9
  Style/Documentation:
10
10
  Enabled: false
11
11
 
12
+ Metrics/MethodLength:
13
+ Enabled: false
14
+
12
15
  Lint/AmbiguousBlockAssociation:
13
16
  Enabled: false
14
17
 
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rswag_schema_export (0.1.0)
4
+ rswag_schema_export (0.1.1)
5
5
  aws-sdk-s3 (~> 1)
6
+ azure-storage-blob (~> 1.1)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
@@ -27,21 +28,32 @@ GEM
27
28
  tzinfo (~> 1.1)
28
29
  ast (2.4.0)
29
30
  aws-eventstream (1.0.3)
30
- aws-partitions (1.184.0)
31
- aws-sdk-core (3.59.0)
31
+ aws-partitions (1.210.0)
32
+ aws-sdk-core (3.66.0)
32
33
  aws-eventstream (~> 1.0, >= 1.0.2)
33
34
  aws-partitions (~> 1.0)
34
35
  aws-sigv4 (~> 1.1)
35
36
  jmespath (~> 1.0)
36
- aws-sdk-kms (1.23.0)
37
- aws-sdk-core (~> 3, >= 3.58.0)
37
+ aws-sdk-kms (1.24.0)
38
+ aws-sdk-core (~> 3, >= 3.61.1)
38
39
  aws-sigv4 (~> 1.1)
39
- aws-sdk-s3 (1.45.0)
40
- aws-sdk-core (~> 3, >= 3.58.0)
40
+ aws-sdk-s3 (1.48.0)
41
+ aws-sdk-core (~> 3, >= 3.61.1)
41
42
  aws-sdk-kms (~> 1)
42
43
  aws-sigv4 (~> 1.1)
43
44
  aws-sigv4 (1.1.0)
44
45
  aws-eventstream (~> 1.0, >= 1.0.2)
46
+ azure-core (0.1.15)
47
+ faraday (~> 0.9)
48
+ faraday_middleware (~> 0.10)
49
+ nokogiri (~> 1.6)
50
+ azure-storage-blob (1.1.0)
51
+ azure-core (~> 0.1.13)
52
+ azure-storage-common (~> 1.0)
53
+ nokogiri (~> 1.6, >= 1.6.8)
54
+ azure-storage-common (1.1.0)
55
+ azure-core (~> 0.1.13)
56
+ nokogiri (~> 1.6, >= 1.6.8)
45
57
  builder (3.2.3)
46
58
  coderay (1.1.2)
47
59
  concurrent-ruby (1.1.5)
@@ -49,6 +61,10 @@ GEM
49
61
  diff-lcs (1.3)
50
62
  docile (1.3.2)
51
63
  erubi (1.8.0)
64
+ faraday (0.15.4)
65
+ multipart-post (>= 1.2, < 3)
66
+ faraday_middleware (0.13.1)
67
+ faraday (>= 0.7.4, < 1.0)
52
68
  i18n (1.6.0)
53
69
  concurrent-ruby (~> 1.0)
54
70
  jaro_winkler (1.5.3)
@@ -60,7 +76,8 @@ GEM
60
76
  method_source (0.9.2)
61
77
  mini_portile2 (2.4.0)
62
78
  minitest (5.11.3)
63
- nokogiri (1.10.3)
79
+ multipart-post (2.1.1)
80
+ nokogiri (1.10.4)
64
81
  mini_portile2 (~> 2.4.0)
65
82
  parallel (1.17.0)
66
83
  parser (2.6.3.0)
data/README.md CHANGED
@@ -20,6 +20,7 @@ And then execute:
20
20
  Or install it yourself as:
21
21
 
22
22
  $ gem install rswag_schema_export
23
+ $ rails g rswag_schema_export:install
23
24
 
24
25
  ## Usage
25
26
 
@@ -44,7 +45,7 @@ stages:
44
45
 
45
46
  ```diff
46
47
  # config/deploy.rb
47
- + folders = %w[tmp/swagger]
48
+ + folders = %w[swagger]
48
49
  namespace :deploy do
49
50
  after :restart, :clear_cache do
50
51
  on roles(:web), in: :groups, limit: 3, wait: 10 do
@@ -60,12 +61,17 @@ end
60
61
  Set up ENVIRONMENT VARIABLES on your CI
61
62
 
62
63
  ```bash
63
- # Required
64
- RSWAG_SCHEMA_PATH='' # Example: tmp/swagger/swagger.json
65
- RSWAG_ACCESS_KEY_ID='' # Example: XXXXXXXXXX
66
- RSWAG_SECRET_ACCESS_KEY='' # Example: XXXXXXXXXXXXXXXXXXXXX
67
- RSWAG_REGION='' # Example: us-west-1
68
- RSWAG_BUCKET='' # Example: bucket-name
64
+ # Required for AWS
65
+ RSWAG_AWS_ACCESS_KEY_ID='' # Example: XXXXXXXXXX
66
+ RSWAG_AWS_SECRET_ACCESS_KEY='' # Example: XXXXXXXXXXXXXXXXXXXXX
67
+ RSWAG_AWS_REGION='' # Example: us-west-1
68
+ RSWAG_AWS_BUCKET='' # Example: bucket-name
69
+
70
+ # Required for AZURE
71
+
72
+ RSWAG_AZURE_STORAGE_ACCOUNT_NAME='' # Example: XXXXX
73
+ RSWAG_AZURE_STORAGE_ACCESS_KEY='' # Example: XXXXXXXXXXXXXXXXXXXXX
74
+ RSWAG_AZURE_CONTAINER='' # Example: continter-name
69
75
 
70
76
  # Optional
71
77
  STAGE='' # Default: develop
@@ -74,23 +80,23 @@ APP_NAME='' # Default: app
74
80
 
75
81
  ## Gitlab Variables
76
82
 
77
- ![image](https://user-images.githubusercontent.com/2664467/60773983-c69bdf80-a115-11e9-9f46-57d835ba4561.png)
78
-
83
+ ![image](https://user-images.githubusercontent.com/2664467/64493266-bc699f00-d286-11e9-8827-e99d0eada9ce.png)
79
84
 
80
- ## rswag-api
85
+ ## rswag_schema_export
81
86
  ```diff
82
- # config/initializers/rswag_api.rb
83
- Rswag::Api.configure do |c|
84
- + c.swagger_root = Rails.root.to_s + '/tmp/swagger'
87
+ # config/initializers/rswag_schema_export.rb
88
+ RswagSchemaExport.configure do |c|
89
+ + c.schemas = ['swagger/client/swagger.json', 'swagger/backoffice/swagger.json']
90
+ + c.client = :aws
85
91
  end
92
+
86
93
  ```
87
94
 
88
- ## rswag-specs
95
+ ## rswag-api
89
96
  ```diff
90
- # spec/swagger_helper.rb
91
-
92
- RSpec.configure do |config|
93
- + config.swagger_root = Rails.root.to_s + '/tmp/swagger'
97
+ # config/initializers/rswag_api.rb
98
+ Rswag::Api.configure do |c|
99
+ + c.swagger_root = Rails.root.to_s + '/swagger'
94
100
  end
95
101
  ```
96
102
 
@@ -0,0 +1,11 @@
1
+ require "rails/generators"
2
+
3
+ module RswagSchemaExport
4
+ class InstallGenerator < Rails::Generators::Base
5
+ source_root File.expand_path("templates", __dir__)
6
+
7
+ def add_initializer
8
+ template("rswag_schema_export.rb", "config/initializers/rswag_schema_export.rb")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ RswagSchemaExport.configure do |c|
2
+ # Set up your schemas
3
+ #
4
+ # c.schemas = ['swagger/client/swagger.json', 'swagger/backoffice/swagger.json']
5
+ #
6
+ # Set up your cloud provider - (:aws, :azure) :aws by default
7
+ #
8
+ # c.client = :aws
9
+ end
@@ -1,7 +1,16 @@
1
1
  require "rswag_schema_export/version"
2
+ require "rswag_schema_export/configuration"
3
+ require "rswag_schema_export/client"
2
4
  require "rswag_schema_export/railtie" if defined?(Rails)
3
5
  require "rswag_schema_export/schema_export"
4
6
  require "rswag_schema_export/schema_import"
5
7
 
6
8
  module RswagSchemaExport
9
+ def self.configure
10
+ yield(config)
11
+ end
12
+
13
+ def self.config
14
+ @config ||= Configuration.new
15
+ end
7
16
  end
@@ -0,0 +1,91 @@
1
+ require "azure/storage/blob"
2
+ require "aws-sdk-s3"
3
+
4
+ module RswagSchemaExport
5
+ class Client
6
+ attr_reader :stage, :app_name
7
+
8
+ def initialize(stage)
9
+ @app_name = ENV["APP_NAME"] || "app"
10
+ @stage = stage || "develop"
11
+ end
12
+
13
+ def client # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity:
14
+ if aws_client?
15
+ abort("RSWAG_AWS_ACCESS_KEY_ID is not defined") unless ENV["RSWAG_AWS_ACCESS_KEY_ID"]
16
+ abort("RSWAG_AWS_SECRET_ACCESS_KEY is not defined") unless ENV["RSWAG_AWS_SECRET_ACCESS_KEY"]
17
+ abort("RSWAG_AWS_REGION is not defined") unless ENV["RSWAG_AWS_REGION"]
18
+ abort("RSWAG_AWS_BUCKET is not defined") unless ENV["RSWAG_AWS_BUCKET"]
19
+
20
+ @client ||= Aws::S3::Resource.new(access_key_id: ENV["RSWAG_AWS_ACCESS_KEY_ID"],
21
+ secret_access_key: ENV["RSWAG_AWS_SECRET_ACCESS_KEY"],
22
+ region: ENV["RSWAG_AWS_REGION"])
23
+ else
24
+ abort("RSWAG_AZURE_STORAGE_ACCOUNT_NAME is not defined") unless ENV["RSWAG_AZURE_STORAGE_ACCOUNT_NAME"]
25
+ abort("RSWAG_AZURE_STORAGE_ACCESS_KEY is not defined") unless ENV["RSWAG_AZURE_STORAGE_ACCESS_KEY"]
26
+ abort("RSWAG_AZURE_CONTAINER is not defined") unless ENV["RSWAG_AZURE_CONTAINER"]
27
+
28
+ @client = Azure::Storage::Blob::BlobService.create(
29
+ storage_account_name: ENV["RSWAG_AZURE_STORAGE_ACCOUNT_NAME"],
30
+ storage_access_key: ENV["RSWAG_AZURE_STORAGE_ACCESS_KEY"]
31
+ )
32
+ end
33
+ end
34
+
35
+ def upload_file(key, file)
36
+ if aws_client?
37
+ client.bucket(ENV["RSWAG_AWS_BUCKET"]).object(key).upload_file(file)
38
+ else
39
+ client.create_block_blob(ENV["RSWAG_AZURE_CONTAINER"], key, ::File.open(file, &:read))
40
+ end
41
+ end
42
+
43
+ def fetch_versions(schema_id)
44
+ if aws_client?
45
+ bucket.objects(prefix: "schemas/#{app_name}/#{stage}_#{schema_id}/versions").collect(&:key)
46
+ else
47
+ prefix = "schemas/#{app_name}/#{stage}_#{schema_id}/versions"
48
+ client.list_blobs(ENV["RSWAG_AZURE_CONTAINER"], prefix: prefix).collect(&:name)
49
+ end
50
+ end
51
+
52
+ def copy_latest_version_to_root(last_schema_key, schema_id)
53
+ if aws_client?
54
+ bucket.object(last_schema_key)
55
+ .copy_to("#{ENV['RSWAG_BUCKET']}/schemas/#{app_name}/#{stage}_#{schema_id}/schema.json")
56
+ else
57
+ client.copy_blob(ENV["RSWAG_AZURE_CONTAINER"], "schemas/#{app_name}/#{stage}_#{schema_id}/schema.json",
58
+ ENV["RSWAG_AZURE_CONTAINER"], last_schema_key)
59
+ end
60
+ end
61
+
62
+ def download_file(schema_id, path)
63
+ if aws_client?
64
+ bucket.object("schemas/#{app_name}/#{stage}_#{schema_id}/schema.json").download_file(path)
65
+ else
66
+ _blob, content = client.get_blob(ENV["RSWAG_AZURE_CONTAINER"],
67
+ "schemas/#{app_name}/#{stage}_#{schema_id}/schema.json")
68
+ ::File.open(path, "wb") { |f| f.write(content) }
69
+ end
70
+ end
71
+
72
+ def clean(versions)
73
+ old_versions = versions - versions.sort.last(5)
74
+ if aws_client?
75
+ old_versions.each { |key| bucket.object(key).delete }
76
+ else
77
+ old_versions.each { |key| client.delete_blob(ENV["RSWAG_AZURE_CONTAINER"], key) }
78
+ end
79
+ end
80
+
81
+ private
82
+
83
+ def bucket
84
+ @bucket ||= client.bucket(ENV["RSWAG_AWS_BUCKET"]) if aws_client?
85
+ end
86
+
87
+ def aws_client?
88
+ RswagSchemaExport.config.client&.to_sym == :aws
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,9 @@
1
+ module RswagSchemaExport
2
+ class Configuration
3
+ attr_accessor :schemas, :client
4
+
5
+ def initialize
6
+ @client = :aws
7
+ end
8
+ end
9
+ end
@@ -1,31 +1,27 @@
1
1
  module RswagSchemaExport
2
2
  class Export
3
- def run
4
- abort("RSWAG_SCHEMA_PATH is not defined. Example: tmp/swagger/swagger.json") unless ENV["RSWAG_SCHEMA_PATH"]
5
- abort("RSWAG_ACCESS_KEY_ID is not defined") unless ENV["RSWAG_ACCESS_KEY_ID"]
6
- abort("RSWAG_SECRET_ACCESS_KEY is not defined") unless ENV["RSWAG_SECRET_ACCESS_KEY"]
7
- abort("RSWAG_REGION is not defined") unless ENV["RSWAG_REGION"]
8
- abort("RSWAG_BUCKET is not defined") unless ENV["RSWAG_BUCKET"]
3
+ def run # rubocop:disable Metrics/AbcSize
4
+ abort("Set up RswagSchemaExport.config.schemas") unless RswagSchemaExport.config.schemas
9
5
 
10
- stage = ENV["STAGE"] || "develop"
11
- app_name = ENV["APP_NAME"] || "app"
6
+ RswagSchemaExport.config.schemas.map do |schema|
7
+ next if File.file?(schema)
12
8
 
13
- unless File.file?(ENV["RSWAG_SCHEMA_PATH"])
14
- message = "Not found schema at #{ENV['RSWAG_SCHEMA_PATH']}.
15
- For generate schema run: RAILS_ENV=test rake rswag:specs:swaggerize"
9
+ message = "Not found schema at #{schema}.
10
+ For generate schema run: RAILS_ENV=test rake rswag:specs:swaggerize"
16
11
  abort(message)
17
12
  end
18
13
 
19
14
  begin
20
- s3 = Aws::S3::Resource.new(access_key_id: ENV["RSWAG_ACCESS_KEY_ID"],
21
- secret_access_key: ENV["RSWAG_SECRET_ACCESS_KEY"],
22
- region: ENV["RSWAG_REGION"])
15
+ client = ::RswagSchemaExport::Client.new(ENV["STAGE"])
16
+ RswagSchemaExport.config.schemas.map do |schema|
17
+ schema_id = schema.gsub(/[^a-zA-Z0-9\-]/, "_")
18
+ key = "schemas/#{client.app_name}/#{client.stage}_#{schema_id}/versions/#{Time.now.getutc.iso8601}.json"
19
+ # Upload latest version to the cloud
20
+ client.upload_file(key, schema)
23
21
 
24
- key = "schemas/#{app_name}/#{stage}_schemas/versions/#{Time.now.getutc.iso8601}.json"
25
- # Download latest version to app
26
- s3.bucket(ENV["RSWAG_BUCKET"]).object(key).upload_file(ENV["RSWAG_SCHEMA_PATH"])
27
-
28
- puts("Schema has been successfully exported. Stage: #{stage} | Key: #{key}")
22
+ puts("Schema has been successfully exported. Stage: #{client.stage} | Key: #{key}")
23
+ end
24
+ puts("Export finished")
29
25
  rescue StandardError => e
30
26
  abort(e.message)
31
27
  end
@@ -1,39 +1,27 @@
1
- require "aws-sdk-s3"
2
-
3
1
  module RswagSchemaExport
4
2
  class Import
5
- def run(stage = "develop")
6
- abort("RSWAG_SCHEMA_PATH is not defined. Example: tmp/swagger/swagger.json") unless ENV["RSWAG_SCHEMA_PATH"]
7
- abort("RSWAG_ACCESS_KEY_ID is not defined") unless ENV["RSWAG_ACCESS_KEY_ID"]
8
- abort("RSWAG_SECRET_ACCESS_KEY is not defined") unless ENV["RSWAG_SECRET_ACCESS_KEY"]
9
- abort("RSWAG_REGION is not defined") unless ENV["RSWAG_REGION"]
10
- abort("RSWAG_BUCKET is not defined") unless ENV["RSWAG_BUCKET"]
11
- app_name = ENV["APP_NAME"] || "app"
3
+ def run(stage = "develop") # rubocop:disable Metrics/AbcSize:
4
+ abort("Set up RswagSchemaExport.config.schemas") unless RswagSchemaExport.config.schemas
12
5
 
13
6
  begin
14
- s3 = Aws::S3::Resource.new(access_key_id: ENV["RSWAG_ACCESS_KEY_ID"],
15
- secret_access_key: ENV["RSWAG_SECRET_ACCESS_KEY"],
16
- region: ENV["RSWAG_REGION"])
7
+ client = ::RswagSchemaExport::Client.new(stage)
8
+ RswagSchemaExport.config.schemas.map do |schema|
9
+ schema_id = schema.gsub(/[^a-zA-Z0-9\-]/, "_")
17
10
 
18
- bucket = s3.bucket(ENV["RSWAG_BUCKET"])
19
- # Copy latest version to root
20
- versions = bucket.objects(prefix: "schemas/#{app_name}/#{stage}_schemas/versions").collect(&:key)
11
+ # Copy latest version to root
12
+ versions = client.fetch_versions(schema_id)
13
+ last_schema_key = versions.max
21
14
 
22
- last_schema_key = versions.max
23
- bucket.object(last_schema_key)
24
- .copy_to("#{ENV['RSWAG_BUCKET']}/schemas/#{app_name}/#{stage}_schemas/schema.json")
25
- # Download schema.json
26
- if block_given?
27
- bucket.object("schemas/#{app_name}/#{stage}_schemas/schema.json").download_file("schema.json")
28
- yield
29
- else
30
- bucket.object("schemas/#{app_name}/#{stage}_schemas/schema.json").download_file(ENV["RSWAG_SCHEMA_PATH"])
31
- end
32
- # Clean versions folder
33
- old_versions = versions - versions.sort.last(5)
34
- old_versions.each { |key| bucket.object(key).delete }
15
+ client.copy_latest_version_to_root(last_schema_key, schema_id)
16
+ # Download schema.json
17
+ client.download_file(schema_id, schema)
18
+ # Clean versions folder
19
+ client.clean(versions)
35
20
 
36
- puts("Schema has been successfully imported. Stage: #{stage} | Key: #{last_schema_key}")
21
+ puts("Schema has been successfully imported. Stage: #{client.stage} | Key: #{last_schema_key}")
22
+ end
23
+ yield if block_given?
24
+ puts("Import finished")
37
25
  rescue StandardError => e
38
26
  abort(e.message)
39
27
  end
@@ -6,7 +6,9 @@ namespace :rswag do
6
6
  on roles(:all) do
7
7
  stage = ENV["STAGE"] || fetch(:stage, "develop")
8
8
  RswagSchemaExport::Import.new.run(stage) do
9
- upload!("schema.json", "#{current_path}/#{ENV['RSWAG_SCHEMA_PATH']}")
9
+ RswagSchemaExport.config.shemas.map do |schema|
10
+ upload!(schema, "#{current_path}/#{schema}")
11
+ end
10
12
  end
11
13
  end
12
14
  end
@@ -1,3 +1,3 @@
1
1
  module RswagSchemaExport
2
- VERSION = "0.1.1".freeze
2
+ VERSION = "0.2.0".freeze
3
3
  end
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_dependency "aws-sdk-s3", "~> 1"
23
+ spec.add_dependency "azure-storage-blob", "~> 1.1"
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.17"
25
26
  spec.add_development_dependency "pry"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rswag_schema_export
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Tolstov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-08 00:00:00.000000000 Z
11
+ date: 2019-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-s3
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: azure-storage-blob
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -150,8 +164,12 @@ files:
150
164
  - Rakefile
151
165
  - bin/console
152
166
  - bin/setup
167
+ - lib/generators/rswag_schema_export/install/install_generator.rb
168
+ - lib/generators/rswag_schema_export/install/templates/rswag_schema_export.rb
153
169
  - lib/rswag_schema_export.rb
154
170
  - lib/rswag_schema_export/capistrano.rb
171
+ - lib/rswag_schema_export/client.rb
172
+ - lib/rswag_schema_export/configuration.rb
155
173
  - lib/rswag_schema_export/railtie.rb
156
174
  - lib/rswag_schema_export/schema_export.rb
157
175
  - lib/rswag_schema_export/schema_import.rb