r2-oas 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +99 -0
- data/GEMSPEC.md +20 -0
- data/LICENSE.txt +21 -0
- data/README.ja.md +271 -0
- data/README.md +271 -0
- data/lib/r2-oas.rb +35 -0
- data/lib/r2-oas/app_configuration.rb +121 -0
- data/lib/r2-oas/app_configuration/deprecation.rb +28 -0
- data/lib/r2-oas/app_configuration/server.rb +35 -0
- data/lib/r2-oas/app_configuration/swagger.rb +35 -0
- data/lib/r2-oas/app_configuration/swagger/editor.rb +47 -0
- data/lib/r2-oas/app_configuration/swagger/ui.rb +45 -0
- data/lib/r2-oas/app_configuration/tool.rb +31 -0
- data/lib/r2-oas/app_configuration/tool/paths/stats.rb +43 -0
- data/lib/r2-oas/base.rb +48 -0
- data/lib/r2-oas/configuration.rb +121 -0
- data/lib/r2-oas/configuration/paths_config.rb +44 -0
- data/lib/r2-oas/deploy/client.rb +70 -0
- data/lib/r2-oas/deploy/swagger-ui/index.html.erb +60 -0
- data/lib/r2-oas/dynamic/schema/v3/object/from_routes/hookable_base_object.rb +100 -0
- data/lib/r2-oas/errors.rb +13 -0
- data/lib/r2-oas/hooks/global_hook.rb +20 -0
- data/lib/r2-oas/hooks/hook.rb +79 -0
- data/lib/r2-oas/hooks/repository.rb +15 -0
- data/lib/r2-oas/lib/core_ext/hash/deep_merge.rb +44 -0
- data/lib/r2-oas/lib/core_ext/object/blank.rb +135 -0
- data/lib/r2-oas/lib/three-way-merge/twm.rb +83 -0
- data/lib/r2-oas/logger/stdout_logger.rb +129 -0
- data/lib/r2-oas/pluggable_configuration.rb +36 -0
- data/lib/r2-oas/plugin/base.rb +44 -0
- data/lib/r2-oas/plugin/executor.rb +148 -0
- data/lib/r2-oas/plugin/hookable.rb +42 -0
- data/lib/r2-oas/plugin/public.rb +3 -0
- data/lib/r2-oas/plugin/transform/transform.rb +10 -0
- data/lib/r2-oas/plugin/transform/v3/transform.rb +20 -0
- data/lib/r2-oas/plugin/transform/v3/visitable.rb +37 -0
- data/lib/r2-oas/public.rb +5 -0
- data/lib/r2-oas/routing/adjustor.rb +44 -0
- data/lib/r2-oas/routing/base.rb +12 -0
- data/lib/r2-oas/routing/components/all.rb +5 -0
- data/lib/r2-oas/routing/components/base_component.rb +10 -0
- data/lib/r2-oas/routing/components/path_component.rb +67 -0
- data/lib/r2-oas/routing/components/request_component.rb +75 -0
- data/lib/r2-oas/routing/components/verb_component.rb +21 -0
- data/lib/r2-oas/routing/parser.rb +93 -0
- data/lib/r2-oas/schema/analyzer.rb +23 -0
- data/lib/r2-oas/schema/base.rb +11 -0
- data/lib/r2-oas/schema/builder.rb +23 -0
- data/lib/r2-oas/schema/cleaner.rb +23 -0
- data/lib/r2-oas/schema/editor.rb +146 -0
- data/lib/r2-oas/schema/generator.rb +23 -0
- data/lib/r2-oas/schema/manager/file/path_item_file_manager.rb +24 -0
- data/lib/r2-oas/schema/manager/file_manager.rb +26 -0
- data/lib/r2-oas/schema/monitor.rb +52 -0
- data/lib/r2-oas/schema/squeezer.rb +23 -0
- data/lib/r2-oas/schema/ui.rb +73 -0
- data/lib/r2-oas/schema/v3/analyzer.rb +58 -0
- data/lib/r2-oas/schema/v3/analyzer/base_analyzer.rb +71 -0
- data/lib/r2-oas/schema/v3/analyzer/components/object_analyzer.rb +38 -0
- data/lib/r2-oas/schema/v3/analyzer/components_analyzer.rb +30 -0
- data/lib/r2-oas/schema/v3/analyzer/path_analyzer.rb +116 -0
- data/lib/r2-oas/schema/v3/analyzer/tag_analyzer.rb +38 -0
- data/lib/r2-oas/schema/v3/base.rb +28 -0
- data/lib/r2-oas/schema/v3/builder.rb +28 -0
- data/lib/r2-oas/schema/v3/builder/base_builder.rb +72 -0
- data/lib/r2-oas/schema/v3/builder/doc_builder.rb +51 -0
- data/lib/r2-oas/schema/v3/cleaner.rb +19 -0
- data/lib/r2-oas/schema/v3/cleaner/base_cleaner.rb +30 -0
- data/lib/r2-oas/schema/v3/cleaner/components_cleaner.rb +42 -0
- data/lib/r2-oas/schema/v3/generator.rb +24 -0
- data/lib/r2-oas/schema/v3/generator/base_generator.rb +122 -0
- data/lib/r2-oas/schema/v3/generator/components/object_generator.rb +64 -0
- data/lib/r2-oas/schema/v3/generator/components/request_body_generator.rb +45 -0
- data/lib/r2-oas/schema/v3/generator/components_generator.rb +38 -0
- data/lib/r2-oas/schema/v3/generator/doc_generator.rb +115 -0
- data/lib/r2-oas/schema/v3/generator/path_generator.rb +78 -0
- data/lib/r2-oas/schema/v3/generator/schema_generator.rb +58 -0
- data/lib/r2-oas/schema/v3/manager/diff/base_array_diff_manager.rb +60 -0
- data/lib/r2-oas/schema/v3/manager/diff/base_diff_manager.rb +29 -0
- data/lib/r2-oas/schema/v3/manager/diff/base_hash_diff_manager.rb +95 -0
- data/lib/r2-oas/schema/v3/manager/diff/components_diff_manager.rb +19 -0
- data/lib/r2-oas/schema/v3/manager/diff/tag_diff_manager.rb +17 -0
- data/lib/r2-oas/schema/v3/manager/file/base_file_manager.rb +66 -0
- data/lib/r2-oas/schema/v3/manager/file/components_file_manager.rb +22 -0
- data/lib/r2-oas/schema/v3/manager/file/include_ref_base_file_manager.rb +89 -0
- data/lib/r2-oas/schema/v3/manager/file/path_item_file_manager.rb +22 -0
- data/lib/r2-oas/schema/v3/manager/file_manager.rb +12 -0
- data/lib/r2-oas/schema/v3/manager/pathname_manager.rb +78 -0
- data/lib/r2-oas/schema/v3/object/from_files/base_object.rb +62 -0
- data/lib/r2-oas/schema/v3/object/from_files/components/request_body_object.rb +103 -0
- data/lib/r2-oas/schema/v3/object/from_files/components/schema_object.rb +102 -0
- data/lib/r2-oas/schema/v3/object/from_files/components_object.rb +46 -0
- data/lib/r2-oas/schema/v3/object/from_files/external_document_object.rb +23 -0
- data/lib/r2-oas/schema/v3/object/from_files/info_object.rb +23 -0
- data/lib/r2-oas/schema/v3/object/from_files/openapi_object.rb +61 -0
- data/lib/r2-oas/schema/v3/object/from_files/path_item_object.rb +110 -0
- data/lib/r2-oas/schema/v3/object/from_files/paths_object.rb +33 -0
- data/lib/r2-oas/schema/v3/object/from_files/utils/all.rb +4 -0
- data/lib/r2-oas/schema/v3/object/from_files/utils/deep_methods.rb +27 -0
- data/lib/r2-oas/schema/v3/object/from_files/utils/refs.rb +151 -0
- data/lib/r2-oas/schema/v3/object/from_routes/base_object.rb +75 -0
- data/lib/r2-oas/schema/v3/object/from_routes/components/request_body_object.rb +96 -0
- data/lib/r2-oas/schema/v3/object/from_routes/components/schema_object.rb +59 -0
- data/lib/r2-oas/schema/v3/object/from_routes/components_object.rb +81 -0
- data/lib/r2-oas/schema/v3/object/from_routes/external_document_object.rb +28 -0
- data/lib/r2-oas/schema/v3/object/from_routes/info_object.rb +43 -0
- data/lib/r2-oas/schema/v3/object/from_routes/openapi_object.rb +59 -0
- data/lib/r2-oas/schema/v3/object/from_routes/path_item_object.rb +175 -0
- data/lib/r2-oas/schema/v3/object/from_routes/paths_object.rb +77 -0
- data/lib/r2-oas/schema/v3/object/from_routes/public.rb +9 -0
- data/lib/r2-oas/schema/v3/object/from_routes/server_object.rb +21 -0
- data/lib/r2-oas/schema/v3/object/from_routes/tag_object.rb +37 -0
- data/lib/r2-oas/schema/v3/object/store.rb +54 -0
- data/lib/r2-oas/schema/v3/squeezer.rb +29 -0
- data/lib/r2-oas/schema/v3/squeezer/base_squeezer.rb +37 -0
- data/lib/r2-oas/schema/v3/squeezer/path_squeezer.rb +28 -0
- data/lib/r2-oas/schema/v3/squeezer/tag_squeezer.rb +19 -0
- data/lib/r2-oas/shared/all.rb +4 -0
- data/lib/r2-oas/shared/callable.rb +17 -0
- data/lib/r2-oas/shared/sortable.rb +23 -0
- data/lib/r2-oas/store.rb +122 -0
- data/lib/r2-oas/support/deprecation.rb +24 -0
- data/lib/r2-oas/support/deprecation/behavior.rb +21 -0
- data/lib/r2-oas/support/deprecation/instance_delegator.rb +42 -0
- data/lib/r2-oas/support/deprecation/reporting.rb +91 -0
- data/lib/r2-oas/task.rb +11 -0
- data/lib/r2-oas/task_logging.rb +41 -0
- data/lib/r2-oas/tasks/common.rake +25 -0
- data/lib/r2-oas/tasks/main.rake +132 -0
- data/lib/r2-oas/tasks/tool.rake +86 -0
- data/lib/r2-oas/tool/paths/ls.rb +15 -0
- data/lib/r2-oas/tool/paths/stats.rb +84 -0
- data/lib/r2-oas/version.rb +5 -0
- data/r2-oas.gemspec +48 -0
- metadata +415 -0
data/lib/r2-oas.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'r2-oas/version'
|
4
|
+
require 'r2-oas/public'
|
5
|
+
|
6
|
+
module R2OAS
|
7
|
+
if !defined?(::Rails)
|
8
|
+
raise NoImplementError, 'Can not load Rails'
|
9
|
+
# support Rails version
|
10
|
+
elsif ::Rails::VERSION::STRING >= '4.2.5.1'
|
11
|
+
extend Configuration
|
12
|
+
require 'r2-oas/task'
|
13
|
+
require 'r2-oas/plugin/public'
|
14
|
+
require 'r2-oas/lib/core_ext/hash/deep_merge'
|
15
|
+
require 'r2-oas/lib/core_ext/object/blank'
|
16
|
+
|
17
|
+
autoload :Base, 'r2-oas/base'
|
18
|
+
autoload :NoImplementError, 'r2-oas/errors'
|
19
|
+
autoload :NoFileExistsError, 'r2-oas/errors'
|
20
|
+
autoload :NoSupportError, 'r2-oas/errors'
|
21
|
+
autoload :Sortable, 'r2-oas/shared/all'
|
22
|
+
autoload :Deprecation, 'r2-oas/support/deprecation'
|
23
|
+
|
24
|
+
module Schema
|
25
|
+
autoload :Base, 'r2-oas/schema/base'
|
26
|
+
autoload :Generator, 'r2-oas/schema/generator'
|
27
|
+
autoload :Builder, 'r2-oas/schema/builder'
|
28
|
+
autoload :Analyzer, 'r2-oas/schema/analyzer'
|
29
|
+
autoload :Squeezer, 'r2-oas/schema/squeezer'
|
30
|
+
autoload :Cleaner, 'r2-oas/schema/cleaner'
|
31
|
+
end
|
32
|
+
else
|
33
|
+
raise NoImplementError, "Do not support Rails Version: #{::Rails::VERSION::STRING}"
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'app_configuration/server'
|
4
|
+
require_relative 'app_configuration/swagger'
|
5
|
+
require_relative 'app_configuration/tool'
|
6
|
+
require_relative 'app_configuration/deprecation'
|
7
|
+
|
8
|
+
module R2OAS
|
9
|
+
module AppConfiguration
|
10
|
+
DEFAULT_VERSION = :v3
|
11
|
+
DEFAULT_ROOT_DIR_PATH = './oas_docs'
|
12
|
+
DEFAULT_SCHEMA_SAVE_DIR_NAME = 'src'
|
13
|
+
DEFAULT_DOC_SAVE_FILE_NAME = 'oas_doc.yml'
|
14
|
+
DEFAULT_FORCE_UPDATE_SCHEMA = false
|
15
|
+
DEFAULT_USE_TAG_NAMESPACE = true
|
16
|
+
DEFAULT_USE_SCHEMA_NAMESPACE = true
|
17
|
+
DEFAULT_SERVER = Server.new
|
18
|
+
DEFAULT_INTERVAL_TO_SAVE_EDITED_TMP_SCHEMA = 15
|
19
|
+
DEFAULT_SWAGGER = Swagger.new
|
20
|
+
# rubocop:disable Style/MutableConstant
|
21
|
+
DEFAULT_HTTP_STATUSES_WHEN_HTTP_METHOD = {
|
22
|
+
get: {
|
23
|
+
default: %w[200 422],
|
24
|
+
path_parameter: %w[200 404 422]
|
25
|
+
},
|
26
|
+
post: {
|
27
|
+
default: %w[201 422],
|
28
|
+
path_parameter: %w[201 404 422]
|
29
|
+
},
|
30
|
+
patch: {
|
31
|
+
default: %w[204 422],
|
32
|
+
path_parameter: %w[204 404 422]
|
33
|
+
},
|
34
|
+
put: {
|
35
|
+
default: %w[204 422],
|
36
|
+
path_parameter: %w[204 404 422]
|
37
|
+
},
|
38
|
+
delete: {
|
39
|
+
default: %w[200 422],
|
40
|
+
path_parameter: %w[200 404 422]
|
41
|
+
}
|
42
|
+
}
|
43
|
+
DEFAULT_HTTP_METHODS_WHEN_GENERATE_REQUEST_BODY = %w[post patch put]
|
44
|
+
DEFAULT_IGNORED_HTTP_STATUSES_WHEN_GENERATE_COMPONENT_SCHEMA = %w[204 404]
|
45
|
+
# rubocop:enable Style/MutableConstant
|
46
|
+
DEFAULT_TOOL = Tool.new
|
47
|
+
# :dot or :underbar
|
48
|
+
DEFAULT_NAMESPACE_TYPE = :dot
|
49
|
+
DEFAULT_DEPLOY_DIR_PATH = './deploy_docs'
|
50
|
+
EDFAULT_PLUGINS = [].freeze
|
51
|
+
DEFAULT_LOCAL_PLUGINS_DIR_NAME = 'plugins'
|
52
|
+
DEFAULT_LOCAL_TASKS_DIR_NAME = 'tasks'
|
53
|
+
DEFAULT_OUTPUT_PATH = './oas_docs/dist/oas_doc.yml'
|
54
|
+
DEFAULT_DEPRECATION = Deprecation.new
|
55
|
+
|
56
|
+
PUBLIC_VALID_OPTIONS_KEYS = %i[
|
57
|
+
version
|
58
|
+
root_dir_path
|
59
|
+
schema_save_dir_name
|
60
|
+
doc_save_file_name
|
61
|
+
force_update_schema
|
62
|
+
use_tag_namespace
|
63
|
+
use_schema_namespace
|
64
|
+
server
|
65
|
+
interval_to_save_edited_tmp_schema
|
66
|
+
swagger
|
67
|
+
http_statuses_when_http_method
|
68
|
+
http_methods_when_generate_request_body
|
69
|
+
ignored_http_statuses_when_generate_component_schema
|
70
|
+
tool
|
71
|
+
namespace_type
|
72
|
+
deploy_dir_path
|
73
|
+
plugins
|
74
|
+
local_plugins_dir_name
|
75
|
+
local_tasks_dir_name
|
76
|
+
output_path
|
77
|
+
deprecation
|
78
|
+
].freeze
|
79
|
+
|
80
|
+
UNPUBLIC_VALID_OPTIONS_KEYS = %i[
|
81
|
+
paths_config
|
82
|
+
logger
|
83
|
+
].freeze
|
84
|
+
|
85
|
+
VALID_OPTIONS_KEYS = PUBLIC_VALID_OPTIONS_KEYS + UNPUBLIC_VALID_OPTIONS_KEYS
|
86
|
+
|
87
|
+
attr_accessor *PUBLIC_VALID_OPTIONS_KEYS
|
88
|
+
|
89
|
+
def options
|
90
|
+
VALID_OPTIONS_KEYS.inject({}) do |option, key|
|
91
|
+
option.merge!(key => send(key))
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
module_function def set_default(target)
|
98
|
+
target.version = DEFAULT_VERSION
|
99
|
+
target.root_dir_path = DEFAULT_ROOT_DIR_PATH
|
100
|
+
target.schema_save_dir_name = DEFAULT_SCHEMA_SAVE_DIR_NAME
|
101
|
+
target.doc_save_file_name = DEFAULT_DOC_SAVE_FILE_NAME
|
102
|
+
target.force_update_schema = DEFAULT_FORCE_UPDATE_SCHEMA
|
103
|
+
target.use_tag_namespace = DEFAULT_USE_TAG_NAMESPACE
|
104
|
+
target.use_schema_namespace = DEFAULT_USE_SCHEMA_NAMESPACE
|
105
|
+
target.server = DEFAULT_SERVER
|
106
|
+
target.interval_to_save_edited_tmp_schema = DEFAULT_INTERVAL_TO_SAVE_EDITED_TMP_SCHEMA
|
107
|
+
target.swagger = DEFAULT_SWAGGER
|
108
|
+
target.http_statuses_when_http_method = DEFAULT_HTTP_STATUSES_WHEN_HTTP_METHOD
|
109
|
+
target.tool = DEFAULT_TOOL
|
110
|
+
target.http_methods_when_generate_request_body = DEFAULT_HTTP_METHODS_WHEN_GENERATE_REQUEST_BODY
|
111
|
+
target.ignored_http_statuses_when_generate_component_schema = DEFAULT_IGNORED_HTTP_STATUSES_WHEN_GENERATE_COMPONENT_SCHEMA
|
112
|
+
target.namespace_type = DEFAULT_NAMESPACE_TYPE
|
113
|
+
target.deploy_dir_path = DEFAULT_DEPLOY_DIR_PATH
|
114
|
+
target.plugins = EDFAULT_PLUGINS
|
115
|
+
target.local_plugins_dir_name = DEFAULT_LOCAL_PLUGINS_DIR_NAME
|
116
|
+
target.local_tasks_dir_name = DEFAULT_LOCAL_TASKS_DIR_NAME
|
117
|
+
target.output_path = DEFAULT_OUTPUT_PATH
|
118
|
+
target.deprecation = DEFAULT_DEPRECATION
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'r2-oas/support/deprecation'
|
4
|
+
|
5
|
+
module R2OAS
|
6
|
+
module AppConfiguration
|
7
|
+
class Deprecation
|
8
|
+
DEFAULT_SILENCED = ::R2OAS::Deprecation.silenced
|
9
|
+
|
10
|
+
attr_reader :silenced
|
11
|
+
|
12
|
+
def silenced=(value)
|
13
|
+
@silenced = !!value
|
14
|
+
::R2OAS::Deprecation.silenced = !!value
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
set_default
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def set_default
|
24
|
+
self.silenced = DEFAULT_SILENCED
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module R2OAS
|
4
|
+
module AppConfiguration
|
5
|
+
class Server
|
6
|
+
DEFAULT_URL = 'http://localhost:3000'
|
7
|
+
DEFAULT_DESCRIPTION = 'localhost'
|
8
|
+
|
9
|
+
VALID_OPTIONS_KEYS = [
|
10
|
+
:data
|
11
|
+
].freeze
|
12
|
+
|
13
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
set_default
|
17
|
+
end
|
18
|
+
|
19
|
+
def configure
|
20
|
+
yield self
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def set_default
|
26
|
+
self.data = [
|
27
|
+
{
|
28
|
+
url: DEFAULT_URL,
|
29
|
+
description: DEFAULT_DESCRIPTION
|
30
|
+
}
|
31
|
+
]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'swagger/ui'
|
4
|
+
require_relative 'swagger/editor'
|
5
|
+
|
6
|
+
module R2OAS
|
7
|
+
module AppConfiguration
|
8
|
+
class Swagger
|
9
|
+
DEFAULT_EDITOR = Editor.new
|
10
|
+
DEFAULT_UI = UI.new
|
11
|
+
|
12
|
+
VALID_OPTIONS_KEYS = %i[
|
13
|
+
editor
|
14
|
+
ui
|
15
|
+
].freeze
|
16
|
+
|
17
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
set_default
|
21
|
+
end
|
22
|
+
|
23
|
+
def configure
|
24
|
+
yield self
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def set_default
|
30
|
+
self.editor = DEFAULT_EDITOR
|
31
|
+
self.ui = DEFAULT_UI
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module R2OAS
|
4
|
+
module AppConfiguration
|
5
|
+
class Swagger
|
6
|
+
class Editor
|
7
|
+
DEFAULT_IMAGE = 'swaggerapi/swagger-editor'
|
8
|
+
DEFAULT_PORT = '81'
|
9
|
+
DEFAULT_EXPOSED_PORT = '8080/tcp'
|
10
|
+
DEFAULT_STORAGE_KEY = 'swagger-editor-content' # Fixed
|
11
|
+
DEFAULT_HOST = 'http://localhost' # Fixed
|
12
|
+
|
13
|
+
VALID_OPTIONS_KEYS = %i[
|
14
|
+
image
|
15
|
+
port
|
16
|
+
exposed_port
|
17
|
+
].freeze
|
18
|
+
|
19
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
set_default
|
23
|
+
end
|
24
|
+
|
25
|
+
def configure
|
26
|
+
yield self
|
27
|
+
end
|
28
|
+
|
29
|
+
def url
|
30
|
+
"#{DEFAULT_HOST}:#{port}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def storage_key
|
34
|
+
DEFAULT_STORAGE_KEY
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def set_default
|
40
|
+
self.image = DEFAULT_IMAGE
|
41
|
+
self.port = DEFAULT_PORT
|
42
|
+
self.exposed_port = DEFAULT_EXPOSED_PORT
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module R2OAS
|
4
|
+
module AppConfiguration
|
5
|
+
class Swagger
|
6
|
+
class UI
|
7
|
+
DEFAULT_IMAGE = 'swaggerapi/swagger-ui'
|
8
|
+
DEFAULT_PORT = '8080'
|
9
|
+
DEFAULT_EXPOSED_PORT = '8080/tcp'
|
10
|
+
DEFAULT_VOLUME = '/app/swagger.json'
|
11
|
+
DEFAULT_HOST = 'http://localhost' # Fixed
|
12
|
+
|
13
|
+
VALID_OPTIONS_KEYS = %i[
|
14
|
+
image
|
15
|
+
port
|
16
|
+
exposed_port
|
17
|
+
volume
|
18
|
+
].freeze
|
19
|
+
|
20
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
21
|
+
|
22
|
+
def initialize
|
23
|
+
set_default
|
24
|
+
end
|
25
|
+
|
26
|
+
def configure
|
27
|
+
yield self
|
28
|
+
end
|
29
|
+
|
30
|
+
def url
|
31
|
+
"#{DEFAULT_HOST}:#{port}"
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def set_default
|
37
|
+
self.image = DEFAULT_IMAGE
|
38
|
+
self.port = DEFAULT_PORT
|
39
|
+
self.exposed_port = DEFAULT_EXPOSED_PORT
|
40
|
+
self.volume = DEFAULT_VOLUME
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'tool/paths/stats'
|
4
|
+
|
5
|
+
module R2OAS
|
6
|
+
module AppConfiguration
|
7
|
+
class Tool
|
8
|
+
DEFAULT_PATHS_STATS = PathsStats.new
|
9
|
+
|
10
|
+
VALID_OPTIONS_KEYS = [
|
11
|
+
:paths_stats
|
12
|
+
].freeze
|
13
|
+
|
14
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
set_default
|
18
|
+
end
|
19
|
+
|
20
|
+
def configure
|
21
|
+
yield self
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def set_default
|
27
|
+
self.paths_stats = DEFAULT_PATHS_STATS
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module R2OAS
|
4
|
+
module AppConfiguration
|
5
|
+
class Tool
|
6
|
+
class PathsStats
|
7
|
+
DEFAULT_MONTH_TO_TURN_TO_WARNING_COLOR = 3
|
8
|
+
DEFAULT_WARNING_COLOR = :red
|
9
|
+
DEFAULT_TABLE_TITLE_COLOR = :yellow
|
10
|
+
DEFAULT_HEADING_COLOR = :yellow
|
11
|
+
DEFAULT_HIGHLIGHT_COLOR = :magenta
|
12
|
+
|
13
|
+
VALID_OPTIONS_KEYS = %i[
|
14
|
+
month_to_turn_to_warning_color
|
15
|
+
warning_color
|
16
|
+
table_title_color
|
17
|
+
heading_color
|
18
|
+
highlight_color
|
19
|
+
].freeze
|
20
|
+
|
21
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
set_default
|
25
|
+
end
|
26
|
+
|
27
|
+
def configure
|
28
|
+
yield self
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def set_default
|
34
|
+
self.month_to_turn_to_warning_color = DEFAULT_MONTH_TO_TURN_TO_WARNING_COLOR
|
35
|
+
self.warning_color = DEFAULT_WARNING_COLOR
|
36
|
+
self.table_title_color = DEFAULT_TABLE_TITLE_COLOR
|
37
|
+
self.heading_color = DEFAULT_HEADING_COLOR
|
38
|
+
self.highlight_color = DEFAULT_HIGHLIGHT_COLOR
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/r2-oas/base.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module R2OAS
|
4
|
+
class Base
|
5
|
+
def initialize(options = {})
|
6
|
+
@options = options
|
7
|
+
|
8
|
+
(AppConfiguration::VALID_OPTIONS_KEYS + options.keys).each do |key|
|
9
|
+
send("#{key}=", merged_options[key])
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
attr_accessor *AppConfiguration::VALID_OPTIONS_KEYS
|
16
|
+
|
17
|
+
def merged_options
|
18
|
+
if @options.present?
|
19
|
+
R2OAS.options.merge(@options)
|
20
|
+
else
|
21
|
+
R2OAS.options
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def logger
|
26
|
+
R2OAS.logger
|
27
|
+
end
|
28
|
+
|
29
|
+
def schema_save_dir_path
|
30
|
+
File.expand_path("#{root_dir_path}/#{schema_save_dir_name}")
|
31
|
+
end
|
32
|
+
|
33
|
+
def doc_save_file_path
|
34
|
+
File.expand_path("#{root_dir_path}/#{doc_save_file_name}")
|
35
|
+
end
|
36
|
+
|
37
|
+
def ns_div
|
38
|
+
case namespace_type
|
39
|
+
when :dot
|
40
|
+
'.'
|
41
|
+
when :underbar
|
42
|
+
'_'
|
43
|
+
else
|
44
|
+
raise "Do not support #{namespace_type}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|