r2-oas 0.1.3 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +49 -0
  3. data/GEMSPEC.md +20 -0
  4. data/README.ja.md +63 -2
  5. data/README.md +62 -2
  6. data/lib/r2-oas.rb +3 -4
  7. data/lib/r2-oas/app_configuration.rb +1 -1
  8. data/lib/r2-oas/deploy/client.rb +33 -6
  9. data/lib/r2-oas/errors.rb +1 -0
  10. data/lib/r2-oas/lib/core_ext/hash/deep_merge.rb +44 -0
  11. data/lib/r2-oas/lib/core_ext/object/blank.rb +135 -0
  12. data/lib/r2-oas/lib/three-way-merge/twm.rb +83 -0
  13. data/lib/r2-oas/schema/builder.rb +23 -0
  14. data/lib/r2-oas/schema/editor.rb +13 -2
  15. data/lib/r2-oas/schema/generator.rb +1 -1
  16. data/lib/r2-oas/schema/manager/file_manager.rb +26 -0
  17. data/lib/r2-oas/schema/ui.rb +0 -1
  18. data/lib/r2-oas/schema/v3/analyzer/base_analyzer.rb +1 -6
  19. data/lib/r2-oas/schema/v3/builder.rb +28 -0
  20. data/lib/r2-oas/schema/v3/builder/base_builder.rb +60 -0
  21. data/lib/r2-oas/schema/v3/builder/doc_builder.rb +43 -0
  22. data/lib/r2-oas/schema/v3/generator.rb +1 -5
  23. data/lib/r2-oas/schema/v3/generator/base_generator.rb +30 -1
  24. data/lib/r2-oas/schema/v3/generator/components/object_generator.rb +6 -25
  25. data/lib/r2-oas/schema/v3/generator/components/request_body_generator.rb +6 -6
  26. data/lib/r2-oas/schema/v3/generator/doc_generator.rb +84 -19
  27. data/lib/r2-oas/schema/v3/generator/path_generator.rb +7 -19
  28. data/lib/r2-oas/schema/v3/generator/schema_generator.rb +5 -25
  29. data/lib/r2-oas/schema/v3/manager/file/base_file_manager.rb +3 -4
  30. data/lib/r2-oas/schema/v3/manager/pathname_manager.rb +6 -1
  31. data/lib/r2-oas/store.rb +118 -0
  32. data/lib/r2-oas/task_logging.rb +6 -4
  33. data/lib/r2-oas/tasks/common.rake +0 -1
  34. data/lib/r2-oas/tasks/main.rake +66 -73
  35. data/lib/r2-oas/tasks/tool.rake +32 -28
  36. data/lib/r2-oas/version.rb +1 -1
  37. metadata +85 -69
  38. data/.github/ISSUE_TEMPLATE.md +0 -12
  39. data/.github/PULL_REQUEST_TEMPLATE.md +0 -12
  40. data/.gitignore +0 -12
  41. data/.rspec +0 -3
  42. data/.rubocop.yml +0 -7
  43. data/.rubocop_todo.yml +0 -228
  44. data/.travis.yml +0 -22
  45. data/CODE_OF_CONDUCT.md +0 -74
  46. data/Gemfile +0 -12
  47. data/Gemfile.lock +0 -222
  48. data/Rakefile +0 -8
  49. data/bin/console +0 -12
  50. data/bin/setup +0 -8
  51. data/docs/.nojekyll +0 -0
  52. data/docs/README.md +0 -173
  53. data/docs/_sidebar.md +0 -23
  54. data/docs/attention/if_clash.md +0 -19
  55. data/docs/index.html +0 -28
  56. data/docs/schema/3.0.0.md +0 -155
  57. data/docs/setting/COC.md +0 -14
  58. data/docs/setting/CORS.md +0 -22
  59. data/docs/setting/configure.md +0 -163
  60. data/docs/usage/analyze_docs.md +0 -875
  61. data/docs/usage/clean_docs.md +0 -19
  62. data/docs/usage/deploy_docs.md +0 -839
  63. data/docs/usage/display_paths_list.md +0 -35
  64. data/docs/usage/display_paths_stats.md +0 -54
  65. data/docs/usage/edit_docs.md +0 -218
  66. data/docs/usage/generate_docs.md +0 -256
  67. data/docs/usage/monitor_docs.md +0 -219
  68. data/docs/usage/use_hook_methods.md +0 -236
  69. data/docs/usage/use_hook_to_generate_docs.md +0 -235
  70. data/docs/usage/use_schema_namespace.md +0 -183
  71. data/docs/usage/use_tag_namespace.md +0 -182
  72. data/docs/usage/view_docs.md +0 -262
  73. data/lib/r2-oas/deploy/swagger-ui/dist/favicon-16x16.png +0 -0
  74. data/lib/r2-oas/deploy/swagger-ui/dist/favicon-32x32.png +0 -0
  75. data/lib/r2-oas/deploy/swagger-ui/dist/oauth2-redirect.html +0 -68
  76. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-bundle.js +0 -134
  77. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-bundle.js.map +0 -1
  78. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-standalone-preset.js +0 -22
  79. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-standalone-preset.js.map +0 -1
  80. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.css +0 -4
  81. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.css.map +0 -1
  82. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.js +0 -9
  83. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.js.map +0 -1
  84. data/r2-oas.gemspec +0 -42
@@ -24,18 +24,18 @@ module R2OAS
24
24
 
25
25
  relative_path = "#{@major_category}/#{@middle_category}/#{schema_name}"
26
26
  file_manager = ComponentsFileManager.build(relative_path, :relative)
27
- file_manager.save(result.to_yaml) unless file_manager.skip_save?
27
+ save_file_path = file_manager.save_file_path(type: :relative)
28
+ store.add(save_file_path, result.to_yaml)
28
29
 
29
30
  if data.key?('has_one') && data['has_one']['type'].eql?('schema')
30
31
  original_path = data['has_one']['original_path']
31
32
  file_manager = ComponentsFileManager.new(original_path, :ref)
32
- unless file_manager.skip_save?
33
- result = data['has_one']['data']
34
- file_manager.save(result.to_yaml)
35
- end
33
+ result = data['has_one']['data']
34
+ save_file_path = file_manager.save_file_path(type: :relative)
35
+ store.add(save_file_path, result.to_yaml)
36
36
  end
37
37
 
38
- yield file_manager.save_file_path(type: :relative) if block_given?
38
+ yield save_file_path if block_given?
39
39
  end
40
40
  end
41
41
  end
@@ -2,6 +2,9 @@
2
2
 
3
3
  require 'yaml'
4
4
  require 'fileutils'
5
+ require 'r2-oas/errors'
6
+ require 'r2-oas/lib/three-way-merge/twm'
7
+ require 'r2-oas/schema/v3/manager/file_manager'
5
8
  require_relative 'base_generator'
6
9
  require_relative 'schema_generator'
7
10
 
@@ -9,8 +12,6 @@ module R2OAS
9
12
  module Schema
10
13
  module V3
11
14
  class DocGenerator < BaseGenerator
12
- attr_accessor :oas_doc
13
-
14
15
  def initialize(options = {})
15
16
  super
16
17
  @schema_generator = SchemaGenerator.new(options)
@@ -18,31 +19,95 @@ module R2OAS
18
19
 
19
20
  def generate_docs
20
21
  logger.info '[Generate OAS schema files] start'
21
- @schema_generator.generate_docs unless skip_generate_docs
22
+ @schema_generator.generate_docs
23
+ save_schemas_from_store
22
24
  logger.info '[Generate OAS schema files] end'
23
- logger.info '[Generate OAS docs from schema files] start'
24
- generate_docs_from_schema_files
25
- logger.info '[Generate OAS docs from schema files] end'
26
25
  end
27
26
 
28
27
  private
29
28
 
30
- def generate_docs_from_schema_files
31
- result_before_squeeze = schema_files_paths.each_with_object({}) do |path, data|
32
- file_manager = FileManager.new(path)
33
- yaml = YAML.load_file(path)
34
- data.deep_merge!(yaml)
35
- logger.info " Use schema file: \t#{file_manager.save_file_path(type: :relative)}"
29
+ def save_schemas_from_store
30
+ local_store = Store.new(cache_docs)
31
+
32
+ # Check checksum
33
+ unless local_store.checksum?
34
+ raise R2OAS::ChecksumError, <<-ERR
35
+
36
+ Invalid file: #{relative_cahe_docs_path}
37
+ Please delete #{relative_cahe_docs_path} and execute the following command again.
38
+
39
+ CACHE_DOCS=true bundle exec rake routes:oas:docs
40
+ ERR
41
+ end
42
+
43
+ save_diff_schemas_from(local_store)
44
+ end
45
+
46
+ def save_diff_schemas_from(local_store)
47
+ local_sha1s = local_store.data['data'].keys
48
+ global_sha1s = store.data['data'].keys
49
+
50
+ # Maake diff sha1s
51
+ new_sha1s, after_sha1s, before_sha1s = nil
52
+ if exists_cache?
53
+ after_sha1s = global_sha1s - local_sha1s
54
+ before_sha1s = local_sha1s - global_sha1s
55
+ else
56
+ new_sha1s = global_sha1s - local_sha1s
36
57
  end
37
58
 
38
- result = if many_paths_file_paths.present?
39
- Squeezer.new(result_before_squeeze, many_paths_file_paths: many_paths_file_paths).squeeze_docs
40
- else
41
- result_before_squeeze
42
- end
59
+ # Make diff store
60
+ new_store = store.dup_slice(*new_sha1s)
61
+ after_store = store.dup_slice(*after_sha1s)
62
+ before_store = local_store.dup_slice(*before_sha1s)
63
+
64
+ is_exists_cache = exists_cache?
65
+ if is_exists_cache || schema_file_do_not_exists?
66
+ unless is_create_cache
67
+ # First try
68
+ if new_store&.exists?
69
+ new_store.save do |save_path|
70
+ logger.info " Write schema file: \t#{save_path}"
71
+ end
72
+ end
73
+
74
+ # Change routing
75
+ after_store.diff_from(before_store) do |analyze_data|
76
+ analyze_data.each do |file_path, data|
77
+ left = data['after']
78
+ orig = data['before']
79
+ right = FileManager.new(file_path, :full).load_data
80
+ merged3 = Twm.yaml_merge(left, orig, right)
81
+ analyzer = Analyzer.new({}, merged3, type: :edited)
82
+ analyzer.analyze_docs
83
+ end
84
+ end
85
+
86
+ # TODO: Fix Bugs
87
+ # Delete paths/unknown.yml
88
+ file_manager = FileManager.new(unknown_paths_path, :full)
89
+ file_manager.delete
90
+ end
91
+ else
92
+ unless is_create_cache || is_exists_cache
93
+ raise NoFileExistsError, <<-ERR
43
94
 
44
- @oas_doc = result
45
- File.write(doc_save_file_path, result.to_yaml)
95
+ Can't find the file #{relative_cahe_docs_path}
96
+ Please execute the following command to create #{relative_cahe_docs_path}
97
+
98
+ CACHE_DOCS=true bundle exec rake routes:oas:docs
99
+ ERR
100
+ end
101
+ end
102
+
103
+ # Save docs cache
104
+ deflated_cache_docs = Zlib::Deflate.deflate(Marshal.dump(store.data))
105
+ IO.binwrite(abs_cache_docs_path, deflated_cache_docs)
106
+ if is_exists_cache
107
+ logger.info "[Generate OAS docs] Update cache at #{relative_cahe_docs_path}"
108
+ else
109
+ logger.info "[Generate OAS docs] Create cache at #{relative_cahe_docs_path}"
110
+ end
46
111
  end
47
112
  end
48
113
  end
@@ -17,29 +17,17 @@ module R2OAS
17
17
  end
18
18
 
19
19
  def generate_docs
20
- if paths_file_do_not_exists?
21
- logger.info ' <From routes data>'
22
- generate_docs_from_routes_data
23
- else
24
- logger.info ' <From schema files>'
25
- generate_docs_from_schema_fiels
26
- end
20
+ logger.info ' <From routes data>'
21
+ generate_docs_from_routes_data
27
22
  end
28
23
 
29
24
  private
30
25
 
31
26
  alias paths_files_paths schema_files_paths
32
- alias paths_file_do_not_exists? schema_file_do_not_exists?
33
-
34
- def generate_docs_from_schema_fiels
35
- process_when_generate_docs do |save_file_path|
36
- logger.info " Merge schema file: \t#{save_file_path}"
37
- end
38
- end
39
27
 
40
28
  def generate_docs_from_routes_data
41
29
  process_when_generate_docs do |save_file_path|
42
- logger.info " Write schema file: \t#{save_file_path}"
30
+ logger.info " Add schema file into store: \t#{save_file_path}"
43
31
  end
44
32
  end
45
33
 
@@ -47,11 +35,11 @@ module R2OAS
47
35
  logger.info ' <Update schema files (paths)>'
48
36
  save_each_tags(@paths) do |tag_name, result|
49
37
  relative_path = "paths/#{tag_name}"
50
- path_item_file_manager = PathItemFileManager.new(relative_path, :relative)
51
-
52
- path_item_file_manager.save(result.to_yaml) unless path_item_file_manager.skip_save?
38
+ file_manager = PathItemFileManager.new(relative_path, :relative)
39
+ save_file_path = file_manager.save_file_path(type: :relative)
40
+ store.add(save_file_path, result.to_yaml)
53
41
 
54
- yield path_item_file_manager.save_file_path(type: :relative) if block_given?
42
+ yield save_file_path if block_given?
55
43
  end
56
44
  end
57
45
 
@@ -17,36 +17,15 @@ module R2OAS
17
17
  end
18
18
 
19
19
  def generate_docs
20
- if force_update_schema || schema_file_do_not_exists?
21
- logger.info '<From routes data>'
22
- generate_docs_from_routes_data
23
- else
24
- logger.info '<From schema files>'
25
- generate_docs_from_schema_fiels
26
- end
27
- end
28
-
29
- def create_docs
30
- if !skip_generate_docs
31
- super
32
- elsif skip_generate_docs && FileTest.exists?(doc_save_file_path)
33
- YAML.load_file(doc_save_file_path)
34
- else
35
- {}
36
- end
20
+ logger.info '<From routes data>'
21
+ generate_docs_from_routes_data
37
22
  end
38
23
 
39
24
  private
40
25
 
41
- def generate_docs_from_schema_fiels
42
- process_when_generate_docs do |save_file_path|
43
- logger.info " Merge schema file: \t#{save_file_path}"
44
- end
45
- end
46
-
47
26
  def generate_docs_from_routes_data
48
27
  process_when_generate_docs do |save_file_path|
49
- logger.info " Write schema file: \t#{save_file_path}"
28
+ logger.info " Add schema file into store: \t#{save_file_path}"
50
29
  end
51
30
  end
52
31
 
@@ -66,7 +45,8 @@ module R2OAS
66
45
  logger.info ' [Generate OAS schema files (components)] end'
67
46
  else
68
47
  file_manager = FileManager.new(field_name, :relative)
69
- file_manager.save(result.to_yaml)
48
+ save_file_path = file_manager.save_file_path(type: :relative)
49
+ store.add(save_file_path, result.to_yaml)
70
50
 
71
51
  yield file_manager.save_file_path(type: :relative) if block_given?
72
52
  end
@@ -23,6 +23,8 @@ module R2OAS
23
23
  end
24
24
 
25
25
  def save(data)
26
+ abs_dir = File.dirname(save_file_path)
27
+ FileUtils.mkdir_p(abs_dir) unless FileTest.exists?(abs_dir)
26
28
  File.write(save_file_path, data)
27
29
  end
28
30
 
@@ -32,10 +34,7 @@ module R2OAS
32
34
  end
33
35
 
34
36
  def save_file_path(type: :full)
35
- file_path = File.expand_path(@relative_save_file_path).tap do |abs_path|
36
- abs_dir = File.dirname(abs_path)
37
- FileUtils.mkdir_p(abs_dir) unless FileTest.exists?(abs_dir)
38
- end
37
+ file_path = File.expand_path(@relative_save_file_path)
39
38
 
40
39
  case type
41
40
  when :relative
@@ -60,7 +60,12 @@ module R2OAS
60
60
  when :ref
61
61
  "#{@path.gsub('#/', '')}.#{@ext_name}"
62
62
  when :relative
63
- "#{@path}.#{@ext_name}"
63
+ ext_name = File.extname(@path)
64
+ if ext_name.empty?
65
+ "#{@path}.#{@ext_name}"
66
+ else
67
+ @path
68
+ end
64
69
  when :full
65
70
  @path
66
71
  else
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'digest/sha1'
4
+ require 'zlib'
5
+
6
+ require 'r2-oas/schema/manager/file_manager'
7
+
8
+ module R2OAS
9
+ class Store
10
+ attr_accessor :data
11
+
12
+ def initialize(data = {})
13
+ if data.empty?
14
+ @data = {}
15
+ @data['type'] = :schema
16
+ @data['data'] = {}
17
+ else
18
+ @data = data
19
+ end
20
+ end
21
+
22
+ def add(key, value, type = :schema)
23
+ sha1 = calc_sha1(key, value)
24
+
25
+ @data['data'][sha1] ||= {}
26
+ @data['type'] = type
27
+ @data['data'][sha1]['key'] = key
28
+ @data['data'][sha1]['value'] = Zlib::Deflate.deflate(value)
29
+ end
30
+
31
+ def save
32
+ type = @data['type']
33
+ @data['data'].values.each do |value|
34
+ case type
35
+ when :schema
36
+ save_path = value['key']
37
+ save_data = Zlib::Inflate.inflate(value['value'])
38
+ manager = Schema::FileManager.new(save_path, :full)
39
+ manager.save(save_data)
40
+ yield save_path
41
+ end
42
+ end
43
+ end
44
+
45
+ def dup_slice(*sha1s)
46
+ dup_store = Store.new(@data.dup)
47
+ dup_data = dup_store.data['data']
48
+ dup_store.data['data'] = sha1s.each_with_object({}) { |sha1, data| data[sha1] = dup_data[sha1] if dup_store.key?(sha1) }
49
+ dup_store
50
+ end
51
+
52
+ def checksum?
53
+ @data['data'].each_with_object([]) do |(sha1, value), arr|
54
+ child_key = value['key']
55
+ child_value = Zlib::Inflate.inflate(value['value'])
56
+ arr.push(sha1.eql? calc_sha1(child_key, child_value))
57
+ end.all?
58
+ end
59
+
60
+ def key?(key)
61
+ @data['data']&.key?(key)
62
+ end
63
+
64
+ def exists?
65
+ !@data['data']&.empty?
66
+ end
67
+
68
+ def diff_from(local_store)
69
+ to_hash = adjust(values.to_h, 'after')
70
+ from_hash = adjust(local_store.send(:values).to_h, 'before')
71
+ analyze_data = to_hash.deep_merge(from_hash)
72
+ if block_given?
73
+ yield analyze_data
74
+ else
75
+ analyze_data
76
+ end
77
+ end
78
+
79
+ private
80
+
81
+ def calc_sha1(key, value)
82
+ Digest::SHA1.hexdigest("#{key}\0#{value}")
83
+ end
84
+
85
+ def values
86
+ arr = @data['data'].values
87
+ arr.each_with_object([]) do |el, result|
88
+ key = el['key']
89
+ value = el['value']
90
+ result.push([key, value])
91
+ end
92
+ end
93
+
94
+ def adjust(hash, direct)
95
+ hash.each_with_object({}) do |(key, value), result|
96
+ result[key] = { direct => {} }
97
+ result[key][direct] = YAML.safe_load(Zlib::Inflate.inflate(value))
98
+ result
99
+ end
100
+ end
101
+
102
+ class << self
103
+ extend Forwardable
104
+
105
+ def_delegators :instance, :add
106
+
107
+ def create
108
+ instance
109
+ end
110
+
111
+ private
112
+
113
+ def instance
114
+ @instance ||= new
115
+ end
116
+ end
117
+ end
118
+ end
@@ -20,12 +20,14 @@ module R2OAS
20
20
 
21
21
  private
22
22
 
23
- def logger
24
- R2OAS.logger
23
+ def start
24
+ logger.info '[R2-OAS] start'
25
+ yield
26
+ logger.info '[R2-OAS] end'
25
27
  end
26
28
 
27
- def set_info_level
28
- R2OAS.logger.level = StdoutLogger::INFO
29
+ def logger
30
+ R2OAS.logger
29
31
  end
30
32
 
31
33
  def set_debug_level
@@ -10,7 +10,6 @@ namespace :routes do
10
10
  # desc "Setup a common setting for every tasks"
11
11
  task common: [:environment] do
12
12
  create_dot_paths
13
- set_info_level
14
13
  end
15
14
 
16
15
  # private
@@ -8,100 +8,89 @@ load File.expand_path('common.rake', __dir__)
8
8
 
9
9
  namespace :routes do
10
10
  namespace :oas do
11
- desc 'Generate Swagger documentation files'
11
+ desc 'Generate OAS documentation files'
12
12
  task docs: [:common] do
13
- logger.info '[R2-OAS] start'
14
- options = { unit_paths_file_path: unit_paths_file_path, skip_load_dot_paths: true }
15
- generator = R2OAS::Schema::Generator.new(options)
16
- generator.generate_docs
17
- logger.info '[R2-OAS] end'
13
+ start do
14
+ is_create_cache = cache_docs.eql? 'true'
15
+ options = { unit_paths_file_path: unit_paths_file_path, skip_load_dot_paths: true, is_create_cache: is_create_cache }
16
+ generator = R2OAS::Schema::Generator.new(options)
17
+ generator.generate_docs
18
+ end
18
19
  end
19
20
 
20
- desc 'Analyze Swagger documentation'
21
+ desc 'Analyze OAS documentation'
21
22
  task analyze: [:common] do
22
- logger.info '[R2-OAS] start'
23
-
24
- analyzer_options = { type: :existing, existing_schema_file_path: existing_schema_file_path }
25
- analyzer = R2OAS::Schema::Analyzer.new({}, {}, analyzer_options)
26
- analyzer.analyze_docs
27
-
28
- generator_options = { skip_generate_docs: true }
29
- generator = R2OAS::Schema::Generator.new(generator_options)
30
- generator.generate_docs
31
-
32
- logger.info '[R2-OAS] end'
23
+ start do
24
+ analyzer_options = { type: :existing, existing_schema_file_path: existing_schema_file_path }
25
+ analyzer = R2OAS::Schema::Analyzer.new({}, {}, analyzer_options)
26
+ analyzer.analyze_docs
27
+
28
+ builder_options = {}
29
+ builder = R2OAS::Schema::Builder.new(builder_options)
30
+ builder.build_docs
31
+ end
33
32
  end
34
33
 
35
- desc 'Distribute Swagger documentation'
34
+ desc 'Distribute OAS documentation'
36
35
  task dist: [:common] do
37
- logger.info '[R2-OAS] start'
38
-
39
- generator_options = { unit_paths_file_path: unit_paths_file_path, skip_generate_docs: true }
40
- generator = R2OAS::Schema::Generator.new(generator_options)
41
- generator.generate_docs
42
-
43
- logger.info '[R2-OAS] end'
36
+ start do
37
+ builder_options = { unit_paths_file_path: unit_paths_file_path }
38
+ builder = R2OAS::Schema::Builder.new(builder_options)
39
+ builder.build_docs
40
+ end
44
41
  end
45
42
 
46
43
  desc 'Open Swagger Editor'
47
44
  task editor: [:common] do
48
- logger.info '[R2-OAS] start'
49
-
50
- generator_options = { unit_paths_file_path: unit_paths_file_path, skip_generate_docs: true }
51
- generator = R2OAS::Schema::Generator.new(generator_options)
52
- generator.generate_docs
53
-
54
- before_schema_data = generator.oas_doc
55
- editor_options = { unit_paths_file_path: unit_paths_file_path }
56
- editor = R2OAS::Schema::Editor.new(before_schema_data, editor_options)
57
- editor.start
58
-
59
- logger.info '[R2-OAS] end'
45
+ start do
46
+ builder_options = { unit_paths_file_path: unit_paths_file_path }
47
+ builder = R2OAS::Schema::Builder.new(builder_options)
48
+ builder.build_docs
49
+
50
+ before_schema_data = builder.oas_doc
51
+ editor_options = { unit_paths_file_path: unit_paths_file_path }
52
+ editor = R2OAS::Schema::Editor.new(before_schema_data, editor_options)
53
+ editor.start
54
+ end
60
55
  end
61
56
 
62
57
  desc 'Open Swagger UI'
63
58
  task ui: [:common] do
64
- logger.info '[R2-OAS] start'
65
-
66
- generator_options = { unit_paths_file_path: unit_paths_file_path, skip_generate_docs: true }
67
- generator = R2OAS::Schema::Generator.new(generator_options)
68
- generator.generate_docs
69
-
70
- ui_options = { unit_paths_file_path: unit_paths_file_path }
71
- ui = R2OAS::Schema::UI.new(ui_options)
72
- ui.start
73
-
74
- logger.info '[R2-OAS] end'
59
+ start do
60
+ builder_options = { unit_paths_file_path: unit_paths_file_path }
61
+ builder = R2OAS::Schema::Builder.new(builder_options)
62
+ builder.build_docs
63
+
64
+ ui_options = { unit_paths_file_path: unit_paths_file_path }
65
+ ui = R2OAS::Schema::UI.new(ui_options)
66
+ ui.start
67
+ end
75
68
  end
76
69
 
77
- desc 'Monitor Swagger Document'
70
+ desc 'Monitor OAS Document'
78
71
  task monitor: [:common] do
79
- logger.info '[R2-OAS] start'
80
-
81
- generator_options = { unit_paths_file_path: unit_paths_file_path, skip_generate_docs: true }
82
- generator = R2OAS::Schema::Generator.new(generator_options)
83
- generator.generate_docs
84
-
85
- before_schema_data = generator.oas_doc
86
- monitor_options = { unit_paths_file_path: unit_paths_file_path }
87
- monitor = R2OAS::Schema::Monitor.new(before_schema_data, monitor_options)
88
- monitor.start
89
-
90
- logger.info '[R2-OAS] end'
72
+ start do
73
+ builder_options = { unit_paths_file_path: unit_paths_file_path }
74
+ builder = R2OAS::Schema::Builder.new(builder_options)
75
+ builder.build_docs
76
+
77
+ before_schema_data = builder.oas_doc
78
+ monitor_options = { unit_paths_file_path: unit_paths_file_path }
79
+ monitor = R2OAS::Schema::Monitor.new(before_schema_data, monitor_options)
80
+ monitor.start
81
+ end
91
82
  end
92
83
 
93
- desc 'Clean Swagger Document'
84
+ desc 'Clean OAS Document'
94
85
  task clean: [:common] do
95
- logger.info '[R2-OAS] start'
96
-
97
- generator_options = { skip_generate_docs: true, skip_load_dot_paths: true }
98
- generator = R2OAS::Schema::Generator.new(generator_options)
99
- generator.generate_docs
100
-
101
- cleaner = R2OAS::Schema::Cleaner.new
102
- cleaner.clean_docs
103
-
104
- logger.info '[R2-OAS] end'
86
+ start do
87
+ builder_options = { skip_load_dot_paths: true }
88
+ builder = R2OAS::Schema::Builder.new(builder_options)
89
+ builder.build_docs
90
+
91
+ cleaner = R2OAS::Schema::Cleaner.new
92
+ cleaner.clean_docs
93
+ end
105
94
  end
106
95
 
107
96
  private
@@ -113,5 +102,9 @@ namespace :routes do
113
102
  def existing_schema_file_path
114
103
  ENV.fetch('OAS_FILE', '')
115
104
  end
105
+
106
+ def cache_docs
107
+ ENV.fetch('CACHE_DOCS', 'false')
108
+ end
116
109
  end
117
110
  end