sleeping_king_studios-docs 0.2.0 → 0.3.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 +4 -4
- data/CHANGELOG.md +56 -0
- data/README.md +30 -14
- data/lib/sleeping_king_studios/docs/data/base.rb +24 -4
- data/lib/sleeping_king_studios/docs/data/constant_object.rb +24 -0
- data/lib/sleeping_king_studios/docs/data/metadata.rb +0 -2
- data/lib/sleeping_king_studios/docs/data/method_object.rb +32 -0
- data/lib/sleeping_king_studios/docs/data/module_object.rb +1 -1
- data/lib/sleeping_king_studios/docs/data/namespace_object.rb +26 -2
- data/lib/sleeping_king_studios/docs/data/see_tags/reference_tag.rb +1 -1
- data/lib/sleeping_king_studios/docs/data/types/parser.rb +5 -5
- data/lib/sleeping_king_studios/docs/data/types/type.rb +3 -6
- data/lib/sleeping_king_studios/docs/errors/outdated_documentation.rb +79 -0
- data/lib/sleeping_king_studios/docs/errors/registry_error.rb +13 -0
- data/lib/sleeping_king_studios/docs/errors.rb +4 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/backfill_versions.rb +177 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/check.rb +347 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/clobber.rb +99 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/document_version.rb +217 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/generate.rb +202 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/install.rb +271 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/install_templates.rb +125 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/install_workflow.rb +55 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/reference.rb +158 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands/update.rb +32 -0
- data/lib/sleeping_king_studios/docs/jekyll/commands.rb +44 -0
- data/lib/sleeping_king_studios/docs/jekyll/generators/data_generator.rb +85 -0
- data/lib/sleeping_king_studios/docs/jekyll/generators/reference_generator.rb +40 -0
- data/lib/sleeping_king_studios/docs/jekyll/generators/version_generator.rb +66 -0
- data/lib/sleeping_king_studios/docs/jekyll/generators.rb +15 -0
- data/lib/sleeping_king_studios/docs/jekyll.rb +26 -1
- data/lib/sleeping_king_studios/docs/version.rb +1 -1
- data/lib/sleeping_king_studios/docs/yard/build.rb +42 -0
- data/lib/sleeping_king_studios/docs/{commands → yard}/parse.rb +18 -11
- data/lib/sleeping_king_studios/docs/yard/registry.rb +54 -0
- data/lib/sleeping_king_studios/docs/{registry_query.rb → yard/registry_query.rb} +9 -7
- data/lib/sleeping_king_studios/docs/yard.rb +13 -0
- data/lib/sleeping_king_studios/docs.rb +29 -17
- metadata +66 -83
- data/lib/sleeping_king_studios/docs/commands/generate.rb +0 -268
- data/lib/sleeping_king_studios/docs/commands/generators/base.rb +0 -97
- data/lib/sleeping_king_studios/docs/commands/generators/data_generator.rb +0 -68
- data/lib/sleeping_king_studios/docs/commands/generators/reference_generator.rb +0 -59
- data/lib/sleeping_king_studios/docs/commands/generators.rb +0 -15
- data/lib/sleeping_king_studios/docs/commands/installation/install_jekyll.rb +0 -273
- data/lib/sleeping_king_studios/docs/commands/installation/install_templates.rb +0 -125
- data/lib/sleeping_king_studios/docs/commands/installation/install_workflow.rb +0 -121
- data/lib/sleeping_king_studios/docs/commands/installation.rb +0 -15
- data/lib/sleeping_king_studios/docs/commands/write_file.rb +0 -89
- data/lib/sleeping_king_studios/docs/commands.rb +0 -14
- data/lib/sleeping_king_studios/docs/registry.rb +0 -22
- data/lib/sleeping_king_studios/docs/tasks/base.rb +0 -20
- data/lib/sleeping_king_studios/docs/tasks/generate.rb +0 -39
- data/lib/sleeping_king_studios/docs/tasks/installation/install_jekyll.rb +0 -67
- data/lib/sleeping_king_studios/docs/tasks/installation/install_templates.rb +0 -39
- data/lib/sleeping_king_studios/docs/tasks/installation/install_workflow.rb +0 -53
- data/lib/sleeping_king_studios/docs/tasks/installation.rb +0 -8
- data/lib/sleeping_king_studios/docs/tasks/update.rb +0 -35
- data/lib/sleeping_king_studios/docs/tasks.rb +0 -14
- data/lib/sleeping_king_studios/docs/templates/config.yml.erb +0 -24
- data/lib/sleeping_king_studios/docs/templates/deploy-pages.yml.erb +0 -67
- data/lib/sleeping_king_studios/docs/templates/includes/breadcrumbs.md +0 -7
- data/lib/sleeping_king_studios/docs/templates/includes/reference/attribute.md +0 -23
- data/lib/sleeping_king_studios/docs/templates/includes/reference/attributes/heading.md +0 -15
- data/lib/sleeping_king_studios/docs/templates/includes/reference/class.md +0 -27
- data/lib/sleeping_king_studios/docs/templates/includes/reference/constant.md +0 -8
- data/lib/sleeping_king_studios/docs/templates/includes/reference/constants/heading.md +0 -6
- data/lib/sleeping_king_studios/docs/templates/includes/reference/constants/inherited.md +0 -4
- data/lib/sleeping_king_studios/docs/templates/includes/reference/constants/overview.md +0 -60
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/breadcrumbs.md +0 -21
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/class_attributes.md +0 -9
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/class_methods.md +0 -9
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/constants.md +0 -9
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/constructor.md +0 -12
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/definitions.md +0 -23
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/details.md +0 -34
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/instance_attributes.md +0 -9
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/instance_methods.md +0 -17
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/overview.md +0 -74
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/subclasses.md +0 -10
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/table-of-contents/class_attributes.md +0 -10
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/table-of-contents/class_methods.md +0 -10
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/table-of-contents/constants.md +0 -10
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/table-of-contents/instance_attributes.md +0 -10
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/table-of-contents/instance_methods.md +0 -10
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/table-of-contents/overview.md +0 -41
- data/lib/sleeping_king_studios/docs/templates/includes/reference/definitions/table-of-contents.md +0 -27
- data/lib/sleeping_king_studios/docs/templates/includes/reference/method.md +0 -27
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/aliases.md +0 -4
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/heading.md +0 -14
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/inherited.md +0 -4
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/overload.md +0 -18
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/overloads.md +0 -12
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/overview.md +0 -41
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/parameters.md +0 -31
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/post_overview.md +0 -51
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/raises.md +0 -14
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/return_types.md +0 -9
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/returns.md +0 -14
- data/lib/sleeping_king_studios/docs/templates/includes/reference/methods/yields.md +0 -42
- data/lib/sleeping_king_studios/docs/templates/includes/reference/module.md +0 -23
- data/lib/sleeping_king_studios/docs/templates/includes/reference/namespace.md +0 -33
- data/lib/sleeping_king_studios/docs/templates/includes/reference/parent_link.md +0 -6
- data/lib/sleeping_king_studios/docs/templates/includes/reference/reference_link.md +0 -7
- data/lib/sleeping_king_studios/docs/templates/includes/reference/see_link.md +0 -7
- data/lib/sleeping_king_studios/docs/templates/includes/reference/type.md +0 -14
- data/lib/sleeping_king_studios/docs/templates/includes/reference/type_list.md +0 -4
- data/lib/sleeping_king_studios/docs/templates/includes/reference/types/array_type.md +0 -1
- data/lib/sleeping_king_studios/docs/templates/includes/reference/types/hash_type.md +0 -1
- data/lib/sleeping_king_studios/docs/templates/includes/reference/types/ordered_type.md +0 -1
- data/lib/sleeping_king_studios/docs/templates/pages/index.md.erb +0 -22
- data/lib/sleeping_king_studios/docs/templates/pages/reference.md.erb +0 -14
- data/lib/sleeping_king_studios/docs/templates/pages/versions.md.erb +0 -13
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'cuprum/command'
|
|
4
|
-
require 'sleeping_king_studios/tools/toolbelt'
|
|
5
|
-
|
|
6
|
-
require 'sleeping_king_studios/docs/commands'
|
|
7
|
-
|
|
8
|
-
module SleepingKingStudios::Docs::Commands
|
|
9
|
-
# Generates YARD documentation files.
|
|
10
|
-
class Generate < SleepingKingStudios::Docs::Commands::Generators::Base # rubocop:disable Metrics/ClassLength
|
|
11
|
-
# @overload initialize(docs_path:, **options)
|
|
12
|
-
# @param docs_path [String] the directory path for generating the
|
|
13
|
-
# documentation files.
|
|
14
|
-
# @param options [Hash] the configured options for the generator.
|
|
15
|
-
#
|
|
16
|
-
# @option options dry_run [Boolean] if true, does not make any changes to
|
|
17
|
-
# the filesystem.
|
|
18
|
-
# @option options force [Boolean] if true, overwrites any existing files.
|
|
19
|
-
# @option options version [String] the code version for the generated
|
|
20
|
-
# documentation.
|
|
21
|
-
# @option options verbose [Boolean] if true, prints status messages to
|
|
22
|
-
# STDOUT.
|
|
23
|
-
def initialize(
|
|
24
|
-
docs_path:,
|
|
25
|
-
error_stream: $stderr,
|
|
26
|
-
output_stream: $stdout,
|
|
27
|
-
**options
|
|
28
|
-
)
|
|
29
|
-
super(docs_path:, **options)
|
|
30
|
-
|
|
31
|
-
@error_stream = error_stream
|
|
32
|
-
@output_stream = output_stream
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
private
|
|
36
|
-
|
|
37
|
-
attr_reader :failures
|
|
38
|
-
|
|
39
|
-
def build_constant(native:)
|
|
40
|
-
SleepingKingStudios::Docs::Data::ConstantObject.new(native:)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def build_class(native:)
|
|
44
|
-
SleepingKingStudios::Docs::Data::ClassObject.new(native:)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def build_method(native:)
|
|
48
|
-
SleepingKingStudios::Docs::Data::MethodObject.new(native:)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def build_module(native:)
|
|
52
|
-
SleepingKingStudios::Docs::Data::ModuleObject.new(native:)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def build_root_namespace(native:)
|
|
56
|
-
SleepingKingStudios::Docs::Data::RootObject.new(native:)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def data_command
|
|
60
|
-
@data_command ||=
|
|
61
|
-
SleepingKingStudios::Docs::Commands::Generators::DataGenerator
|
|
62
|
-
.new(docs_path:, **options)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def generate_classes
|
|
66
|
-
puts "\nGenerating Classes:" if verbose? && !registry_classes.empty?
|
|
67
|
-
|
|
68
|
-
registry_classes.each do |native|
|
|
69
|
-
data_object = build_class(native:)
|
|
70
|
-
|
|
71
|
-
puts "- #{data_object.name}" if verbose?
|
|
72
|
-
|
|
73
|
-
generate_data_file(data_object:)
|
|
74
|
-
generate_reference_file(data_object:)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def generate_constants
|
|
79
|
-
puts "\nGenerating Constants:" if verbose? && !registry_constants.empty?
|
|
80
|
-
|
|
81
|
-
registry_constants.each do |native|
|
|
82
|
-
data_object = build_constant(native:)
|
|
83
|
-
|
|
84
|
-
puts "- #{data_object.name}" if verbose?
|
|
85
|
-
|
|
86
|
-
generate_data_file(data_object:)
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def generate_data_file(data_object:, **options)
|
|
91
|
-
report_result(
|
|
92
|
-
command: data_command,
|
|
93
|
-
data_object:,
|
|
94
|
-
result: data_command.call(data_object:, **options),
|
|
95
|
-
**options
|
|
96
|
-
)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def generate_methods
|
|
100
|
-
puts "\nGenerating Methods:" if verbose? && !registry_methods.empty?
|
|
101
|
-
|
|
102
|
-
registry_methods.each do |native|
|
|
103
|
-
data_object = build_method(native:)
|
|
104
|
-
|
|
105
|
-
puts "- #{data_object.name}" if verbose?
|
|
106
|
-
|
|
107
|
-
generate_data_file(data_object:)
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def generate_modules
|
|
112
|
-
puts "\nGenerating Modules:" if verbose? && !registry_modules.empty?
|
|
113
|
-
|
|
114
|
-
registry_modules.each do |native|
|
|
115
|
-
data_object = build_module(native:)
|
|
116
|
-
|
|
117
|
-
puts "- #{data_object.name}" if verbose?
|
|
118
|
-
|
|
119
|
-
generate_data_file(data_object:)
|
|
120
|
-
generate_reference_file(data_object:)
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def generate_reference_file(data_object:, **options)
|
|
125
|
-
report_result(
|
|
126
|
-
command: reference_command,
|
|
127
|
-
data_object:,
|
|
128
|
-
result: reference_command.call(
|
|
129
|
-
data_object:,
|
|
130
|
-
**options
|
|
131
|
-
),
|
|
132
|
-
**options
|
|
133
|
-
)
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def generate_root_namespace
|
|
137
|
-
puts 'Generating Root Namespace:' if verbose?
|
|
138
|
-
|
|
139
|
-
data_object = build_root_namespace(native: registry_root)
|
|
140
|
-
|
|
141
|
-
puts '- root namespace' if verbose?
|
|
142
|
-
|
|
143
|
-
generate_data_file(data_object:, data_type: :namespace)
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
def parse_registry(file_path:)
|
|
147
|
-
SleepingKingStudios::Docs::Commands::Parse.new.call(file_path)
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
def process(file_path: nil)
|
|
151
|
-
step { parse_registry(file_path:) }
|
|
152
|
-
|
|
153
|
-
@failures = []
|
|
154
|
-
|
|
155
|
-
generate_root_namespace
|
|
156
|
-
generate_classes
|
|
157
|
-
generate_constants
|
|
158
|
-
generate_methods
|
|
159
|
-
generate_modules
|
|
160
|
-
|
|
161
|
-
report_all_failures
|
|
162
|
-
|
|
163
|
-
nil
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
def puts(string)
|
|
167
|
-
output_stream.puts(string)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def reference_command
|
|
171
|
-
@reference_command ||=
|
|
172
|
-
SleepingKingStudios::Docs::Commands::Generators::ReferenceGenerator
|
|
173
|
-
.new(docs_path:, **options)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
def registry
|
|
177
|
-
SleepingKingStudios::Docs::Registry.instance
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def registry_classes
|
|
181
|
-
registry
|
|
182
|
-
.select { |obj| obj.type == :class }
|
|
183
|
-
.reject { |obj| obj.tags.any? { |tag| tag.tag_name == 'private' } }
|
|
184
|
-
.sort_by(&:path)
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
def registry_constants
|
|
188
|
-
registry
|
|
189
|
-
.select { |obj| obj.type == :constant && obj.visibility == :public }
|
|
190
|
-
.reject { |obj| obj.tags.any? { |tag| tag.tag_name == 'private' } }
|
|
191
|
-
.sort_by(&:path)
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
def registry_methods
|
|
195
|
-
registry
|
|
196
|
-
.select { |obj| obj.type == :method && obj.visibility == :public }
|
|
197
|
-
.reject { |obj| obj.tags.any? { |tag| tag.tag_name == 'private' } }
|
|
198
|
-
.reject(&:is_alias?)
|
|
199
|
-
.sort_by(&:path)
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
def registry_modules
|
|
203
|
-
registry
|
|
204
|
-
.select { |obj| obj.type == :module }
|
|
205
|
-
.reject { |obj| obj.tags.any? { |tag| tag.tag_name == 'private' } }
|
|
206
|
-
.sort_by(&:path)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
def registry_root
|
|
210
|
-
registry
|
|
211
|
-
.find { |obj| obj.type == :root }
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
def report_all_failures
|
|
215
|
-
return if failures.empty?
|
|
216
|
-
return unless verbose?
|
|
217
|
-
|
|
218
|
-
warn "\nFailures:"
|
|
219
|
-
|
|
220
|
-
failures.each do |failure|
|
|
221
|
-
report_failure(**failure, nested: true)
|
|
222
|
-
end
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
def report_failure(file_path:, result:, nested: false)
|
|
226
|
-
message = nested ? ' - ' : ''
|
|
227
|
-
message +=
|
|
228
|
-
"FAILURE: unable to write file to #{file_path} - " \
|
|
229
|
-
"#{result.error.class}: #{result.error.message}"
|
|
230
|
-
|
|
231
|
-
warn message
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
def report_result(command:, data_object:, result:, data_type: nil) # rubocop:disable Metrics/MethodLength
|
|
235
|
-
data_type ||= data_object_type(data_object:)
|
|
236
|
-
file_path = command.file_path(
|
|
237
|
-
data_object:,
|
|
238
|
-
data_type:
|
|
239
|
-
)
|
|
240
|
-
|
|
241
|
-
if result.success?
|
|
242
|
-
report_success(file_path:)
|
|
243
|
-
else
|
|
244
|
-
failures << { file_path:, result: }
|
|
245
|
-
|
|
246
|
-
report_failure(file_path:, result:, nested: verbose?)
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
result
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
def report_success(file_path:)
|
|
253
|
-
return unless verbose?
|
|
254
|
-
|
|
255
|
-
message = " - SUCCESS: file written to #{file_path}"
|
|
256
|
-
|
|
257
|
-
puts message
|
|
258
|
-
end
|
|
259
|
-
|
|
260
|
-
def tools
|
|
261
|
-
SleepingKingStudios::Tools::Toolbelt.instance
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
def warn(string)
|
|
265
|
-
error_stream.puts(string)
|
|
266
|
-
end
|
|
267
|
-
end
|
|
268
|
-
end
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'cuprum/command'
|
|
4
|
-
require 'cuprum/exception_handling'
|
|
5
|
-
require 'sleeping_king_studios/tools/toolbelt'
|
|
6
|
-
|
|
7
|
-
require 'sleeping_king_studios/docs/commands/generators'
|
|
8
|
-
|
|
9
|
-
module SleepingKingStudios::Docs::Commands::Generators
|
|
10
|
-
# Abstract base class for writing generator classes.
|
|
11
|
-
class Base < Cuprum::Command
|
|
12
|
-
include Cuprum::ExceptionHandling
|
|
13
|
-
|
|
14
|
-
# @param docs_path [String] the directory path for generating the
|
|
15
|
-
# documentation files.
|
|
16
|
-
# @param options [Hash] the configured options for the generator.
|
|
17
|
-
#
|
|
18
|
-
# @option options dry_run [Boolean] if true, does not make any changes to
|
|
19
|
-
# the filesystem.
|
|
20
|
-
# @option options force [Boolean] if true, overwrites any existing files.
|
|
21
|
-
# @option options version [String] the code version for the generated
|
|
22
|
-
# documentation.
|
|
23
|
-
# @option options verbose [Boolean] if true, prints status messages to
|
|
24
|
-
# STDOUT.
|
|
25
|
-
def initialize(docs_path:, **options)
|
|
26
|
-
super()
|
|
27
|
-
|
|
28
|
-
@docs_path = docs_path
|
|
29
|
-
@options = default_options.merge(options)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# @return [String] the directory path for generating the documentation
|
|
33
|
-
# files.
|
|
34
|
-
attr_reader :docs_path
|
|
35
|
-
|
|
36
|
-
# @return [Hash] the configured options for the generator.
|
|
37
|
-
attr_reader :options
|
|
38
|
-
|
|
39
|
-
# @return [Boolean] if true, does not make any changes to the filesystem.
|
|
40
|
-
def dry_run?
|
|
41
|
-
@options[:dry_run]
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# @return [Boolean] if true, overwrites any existing files.
|
|
45
|
-
def force?
|
|
46
|
-
@options[:force]
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# @return [String] the relative path to the Jekyll templates for each data
|
|
50
|
-
# type.
|
|
51
|
-
def template_path
|
|
52
|
-
@options.fetch(:template_path, 'reference')
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# @return [Boolean] if true, prints status messages to STDOUT.
|
|
56
|
-
def verbose?
|
|
57
|
-
@options[:verbose]
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# @return [String] the code version for the generated documentation.
|
|
61
|
-
def version
|
|
62
|
-
@options[:version]
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
private
|
|
66
|
-
|
|
67
|
-
attr_reader :error_stream
|
|
68
|
-
|
|
69
|
-
attr_reader :output_stream
|
|
70
|
-
|
|
71
|
-
def data_object_type(data_object:)
|
|
72
|
-
data_object
|
|
73
|
-
.class
|
|
74
|
-
.name
|
|
75
|
-
.split('::')
|
|
76
|
-
.last
|
|
77
|
-
.then { |str| str[0...-6] }
|
|
78
|
-
.then { |str| tools.string_tools.underscore(str) }
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def default_options
|
|
82
|
-
{
|
|
83
|
-
dry_run: false,
|
|
84
|
-
force: false,
|
|
85
|
-
verbose: false
|
|
86
|
-
}
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def tools
|
|
90
|
-
SleepingKingStudios::Tools::Toolbelt.instance
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def version_string
|
|
94
|
-
version || '*'
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
end
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'yaml'
|
|
4
|
-
|
|
5
|
-
require 'sleeping_king_studios/tools/toolbelt'
|
|
6
|
-
|
|
7
|
-
require 'sleeping_king_studios/docs/commands/generators'
|
|
8
|
-
|
|
9
|
-
module SleepingKingStudios::Docs::Commands::Generators
|
|
10
|
-
# Generator for writing data files.
|
|
11
|
-
class DataGenerator < SleepingKingStudios::Docs::Commands::Generators::Base
|
|
12
|
-
# Determines the generated file path for the given data object.
|
|
13
|
-
#
|
|
14
|
-
# @param data_object [SleepingKingStudios::Docs::Data::Base] the data object
|
|
15
|
-
# for which the file is generated.
|
|
16
|
-
# @param data_type [String, Symbol] the type of data file to generate.
|
|
17
|
-
#
|
|
18
|
-
# @return [String] the qualified path to the generated file.
|
|
19
|
-
def file_path(data_object:, data_type: nil)
|
|
20
|
-
data_type ||= data_object_type(data_object:)
|
|
21
|
-
|
|
22
|
-
File.join(dir_path(data_type), "#{data_object.data_path}.yml")
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def dir_path(data_type)
|
|
28
|
-
scope = "_#{tools.string_tools.pluralize(data_type.to_s)}"
|
|
29
|
-
|
|
30
|
-
if version
|
|
31
|
-
File.join(docs_path, scope, "version--#{version}")
|
|
32
|
-
else
|
|
33
|
-
File.join(docs_path, scope)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def file_data(data_object:)
|
|
38
|
-
data_object
|
|
39
|
-
.as_json
|
|
40
|
-
.merge('version' => version_string)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def process(data_object:, data_type: nil)
|
|
44
|
-
data = file_data(data_object:)
|
|
45
|
-
data_type ||= data_object_type(data_object:)
|
|
46
|
-
|
|
47
|
-
return success(nil) if dry_run?
|
|
48
|
-
|
|
49
|
-
write_command.call(
|
|
50
|
-
contents: YAML.dump(data),
|
|
51
|
-
file_path: file_path(
|
|
52
|
-
data_object:,
|
|
53
|
-
data_type:
|
|
54
|
-
)
|
|
55
|
-
)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def tools
|
|
59
|
-
SleepingKingStudios::Tools::Toolbelt.instance
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def write_command
|
|
63
|
-
@write_command ||=
|
|
64
|
-
SleepingKingStudios::Docs::Commands::WriteFile
|
|
65
|
-
.new(force: force?)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'sleeping_king_studios/docs/commands/generators'
|
|
4
|
-
|
|
5
|
-
module SleepingKingStudios::Docs::Commands::Generators
|
|
6
|
-
# Generator for writing reference files.
|
|
7
|
-
class ReferenceGenerator <
|
|
8
|
-
SleepingKingStudios::Docs::Commands::Generators::Base
|
|
9
|
-
# @overload file_path(data_object:)
|
|
10
|
-
# Determines the generated file path for the given data object.
|
|
11
|
-
#
|
|
12
|
-
# @param data_object [SleepingKingStudios::Docs::Data::Base] the data
|
|
13
|
-
# object for which the file is generated.
|
|
14
|
-
#
|
|
15
|
-
# @return [String] the qualified path to the generated file.
|
|
16
|
-
def file_path(data_object:, data_type: nil) # rubocop:disable Lint/UnusedMethodArgument
|
|
17
|
-
File.join(dir_path, "#{data_object.data_path}.md")
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
def dir_path
|
|
23
|
-
if version
|
|
24
|
-
File.join(docs_path, 'versions', version, 'reference')
|
|
25
|
-
else
|
|
26
|
-
File.join(docs_path, 'reference')
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def process(data_object:, data_type: nil)
|
|
31
|
-
data_type ||= data_object_type(data_object:)
|
|
32
|
-
contents = template(data_object:, data_type:)
|
|
33
|
-
|
|
34
|
-
return success(nil) if dry_run?
|
|
35
|
-
|
|
36
|
-
write_command.call(
|
|
37
|
-
contents:,
|
|
38
|
-
file_path: file_path(data_object:)
|
|
39
|
-
)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def template(data_object:, data_type:)
|
|
43
|
-
<<~MARKDOWN
|
|
44
|
-
---
|
|
45
|
-
data_path: "#{data_object.data_path}"
|
|
46
|
-
version: "#{version_string}"
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
{% include #{template_path}/#{data_type}.md %}
|
|
50
|
-
MARKDOWN
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def write_command
|
|
54
|
-
@write_command ||=
|
|
55
|
-
SleepingKingStudios::Docs::Commands::WriteFile
|
|
56
|
-
.new(force: force?)
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'sleeping_king_studios/docs/commands'
|
|
4
|
-
|
|
5
|
-
module SleepingKingStudios::Docs::Commands
|
|
6
|
-
# Namespace for generator commands, which write docs to the filesystem.
|
|
7
|
-
module Generators
|
|
8
|
-
autoload :Base,
|
|
9
|
-
'sleeping_king_studios/docs/commands/generators/base'
|
|
10
|
-
autoload :DataGenerator,
|
|
11
|
-
'sleeping_king_studios/docs/commands/generators/data_generator'
|
|
12
|
-
autoload :ReferenceGenerator,
|
|
13
|
-
'sleeping_king_studios/docs/commands/generators/reference_generator'
|
|
14
|
-
end
|
|
15
|
-
end
|