rubysmith 0.16.1 → 1.0.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
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.adoc +207 -155
- data/README.adoc +340 -94
- data/lib/rubysmith/builder.rb +1 -2
- data/lib/rubysmith/builders/bundler.rb +7 -11
- data/lib/rubysmith/builders/circle_ci.rb +8 -2
- data/lib/rubysmith/builders/console.rb +8 -2
- data/lib/rubysmith/builders/core.rb +7 -3
- data/lib/rubysmith/builders/documentation/{change.rb → citation.rb} +8 -8
- data/lib/rubysmith/builders/documentation/license.rb +9 -4
- data/lib/rubysmith/builders/documentation/readme.rb +12 -18
- data/lib/rubysmith/builders/documentation/{contribution.rb → version.rb} +10 -5
- data/lib/rubysmith/builders/git/commit.rb +3 -1
- data/lib/rubysmith/builders/git/setup.rb +2 -1
- data/lib/rubysmith/builders/git_hub.rb +8 -3
- data/lib/rubysmith/builders/guard.rb +9 -3
- data/lib/rubysmith/builders/rake.rb +8 -3
- data/lib/rubysmith/builders/reek.rb +7 -2
- data/lib/rubysmith/builders/rspec/context.rb +8 -2
- data/lib/rubysmith/builders/rspec/helper.rb +8 -2
- data/lib/rubysmith/builders/rubocop.rb +34 -0
- data/lib/rubysmith/builders/setup.rb +8 -2
- data/lib/rubysmith/cli/actions/build.rb +10 -12
- data/lib/rubysmith/cli/actions/config.rb +4 -2
- data/lib/rubysmith/cli/actions/publish.rb +21 -0
- data/lib/rubysmith/cli/parser.rb +31 -0
- data/lib/rubysmith/cli/parsers/build.rb +80 -45
- data/lib/rubysmith/cli/parsers/core.rb +14 -10
- data/lib/rubysmith/cli/shell.rb +22 -15
- data/lib/rubysmith/configuration/content.rb +170 -0
- data/lib/rubysmith/configuration/defaults.yml +88 -0
- data/lib/rubysmith/configuration/enhancers/current_time.rb +24 -0
- data/lib/rubysmith/configuration/enhancers/git_email.rb +31 -0
- data/lib/rubysmith/configuration/enhancers/git_hub_user.rb +31 -0
- data/lib/rubysmith/configuration/enhancers/git_user.rb +33 -0
- data/lib/rubysmith/configuration/loader.rb +48 -0
- data/lib/rubysmith/container.rb +1 -1
- data/lib/rubysmith/extensions/bundler.rb +30 -0
- data/lib/rubysmith/extensions/milestoner.rb +35 -0
- data/lib/rubysmith/extensions/pragmater.rb +35 -0
- data/lib/rubysmith/extensions/rubocop.rb +29 -0
- data/lib/rubysmith/extensions/tocer.rb +37 -0
- data/lib/rubysmith/identity.rb +1 -1
- data/lib/rubysmith/templates/%project_name%/.github/ISSUE_TEMPLATE.md.erb +1 -4
- data/lib/rubysmith/templates/%project_name%/.rubocop.yml.erb +2 -0
- data/lib/rubysmith/templates/%project_name%/CITATION.cff.erb +16 -0
- data/lib/rubysmith/templates/%project_name%/Gemfile.erb +12 -9
- data/lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.adoc.erb +214 -0
- data/lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.md.erb +214 -0
- data/lib/rubysmith/templates/%project_name%/README.adoc.erb +20 -21
- data/lib/rubysmith/templates/%project_name%/README.md.erb +20 -21
- data/lib/rubysmith/templates/%project_name%/VERSIONS.adoc.erb +5 -0
- data/lib/rubysmith/templates/%project_name%/VERSIONS.md.erb +5 -0
- data/lib/rubysmith/templates/%project_name%/bin/rubocop.erb +0 -1
- data.tar.gz.sig +0 -0
- metadata +54 -38
- metadata.gz.sig +3 -2
- data/lib/rubysmith/builders/documentation/conduct.rb +0 -32
- data/lib/rubysmith/builders/pragma.rb +0 -32
- data/lib/rubysmith/builders/rubocop/formatter.rb +0 -31
- data/lib/rubysmith/builders/rubocop/setup.rb +0 -31
- data/lib/rubysmith/cli/configuration/content.rb +0 -97
- data/lib/rubysmith/cli/configuration/defaults.yml +0 -46
- data/lib/rubysmith/cli/configuration/enhancers/current_time.rb +0 -26
- data/lib/rubysmith/cli/configuration/enhancers/git_hub_user.rb +0 -33
- data/lib/rubysmith/cli/configuration/enhancers/version.rb +0 -26
- data/lib/rubysmith/cli/configuration/loader.rb +0 -46
- data/lib/rubysmith/cli/parsers/assembler.rb +0 -32
- data/lib/rubysmith/cli/parsers.rb +0 -11
- data/lib/rubysmith/templates/%project_name%/CHANGES.adoc.erb +0 -5
- data/lib/rubysmith/templates/%project_name%/CHANGES.md.erb +0 -5
- data/lib/rubysmith/templates/%project_name%/CODE_OF_CONDUCT.adoc.erb +0 -114
- data/lib/rubysmith/templates/%project_name%/CODE_OF_CONDUCT.md.erb +0 -115
- data/lib/rubysmith/templates/%project_name%/CONTRIBUTING.adoc.erb +0 -22
- data/lib/rubysmith/templates/%project_name%/CONTRIBUTING.md.erb +0 -22
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysmith
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -28,7 +28,7 @@ cert_chain:
|
|
28
28
|
lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
|
29
29
|
W2A=
|
30
30
|
-----END CERTIFICATE-----
|
31
|
-
date:
|
31
|
+
date: 2022-01-01 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: dry-container
|
@@ -50,14 +50,28 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0
|
53
|
+
version: '1.0'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '0
|
60
|
+
version: '1.0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: milestoner
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '13.0'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '13.0'
|
61
75
|
- !ruby/object:Gem::Dependency
|
62
76
|
name: pastel
|
63
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,70 +92,70 @@ dependencies:
|
|
78
92
|
requirements:
|
79
93
|
- - "~>"
|
80
94
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
95
|
+
version: '10.0'
|
82
96
|
type: :runtime
|
83
97
|
prerelease: false
|
84
98
|
version_requirements: !ruby/object:Gem::Requirement
|
85
99
|
requirements:
|
86
100
|
- - "~>"
|
87
101
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
102
|
+
version: '10.0'
|
89
103
|
- !ruby/object:Gem::Dependency
|
90
104
|
name: refinements
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
92
106
|
requirements:
|
93
107
|
- - "~>"
|
94
108
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
109
|
+
version: '9.0'
|
96
110
|
type: :runtime
|
97
111
|
prerelease: false
|
98
112
|
version_requirements: !ruby/object:Gem::Requirement
|
99
113
|
requirements:
|
100
114
|
- - "~>"
|
101
115
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
116
|
+
version: '9.0'
|
103
117
|
- !ruby/object:Gem::Dependency
|
104
118
|
name: rubocop
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
106
120
|
requirements:
|
107
121
|
- - "~>"
|
108
122
|
- !ruby/object:Gem::Version
|
109
|
-
version: '1.
|
123
|
+
version: '1.24'
|
110
124
|
type: :runtime
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
113
127
|
requirements:
|
114
128
|
- - "~>"
|
115
129
|
- !ruby/object:Gem::Version
|
116
|
-
version: '1.
|
130
|
+
version: '1.24'
|
117
131
|
- !ruby/object:Gem::Dependency
|
118
132
|
name: runcom
|
119
133
|
requirement: !ruby/object:Gem::Requirement
|
120
134
|
requirements:
|
121
135
|
- - "~>"
|
122
136
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
137
|
+
version: '8.0'
|
124
138
|
type: :runtime
|
125
139
|
prerelease: false
|
126
140
|
version_requirements: !ruby/object:Gem::Requirement
|
127
141
|
requirements:
|
128
142
|
- - "~>"
|
129
143
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
144
|
+
version: '8.0'
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
146
|
name: tocer
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
134
148
|
requirements:
|
135
149
|
- - "~>"
|
136
150
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
151
|
+
version: '13.0'
|
138
152
|
type: :runtime
|
139
153
|
prerelease: false
|
140
154
|
version_requirements: !ruby/object:Gem::Requirement
|
141
155
|
requirements:
|
142
156
|
- - "~>"
|
143
157
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
158
|
+
version: '13.0'
|
145
159
|
- !ruby/object:Gem::Dependency
|
146
160
|
name: zeitwerk
|
147
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,37 +189,40 @@ files:
|
|
175
189
|
- lib/rubysmith/builders/circle_ci.rb
|
176
190
|
- lib/rubysmith/builders/console.rb
|
177
191
|
- lib/rubysmith/builders/core.rb
|
178
|
-
- lib/rubysmith/builders/documentation/
|
179
|
-
- lib/rubysmith/builders/documentation/conduct.rb
|
180
|
-
- lib/rubysmith/builders/documentation/contribution.rb
|
192
|
+
- lib/rubysmith/builders/documentation/citation.rb
|
181
193
|
- lib/rubysmith/builders/documentation/license.rb
|
182
194
|
- lib/rubysmith/builders/documentation/readme.rb
|
195
|
+
- lib/rubysmith/builders/documentation/version.rb
|
183
196
|
- lib/rubysmith/builders/git/commit.rb
|
184
197
|
- lib/rubysmith/builders/git/setup.rb
|
185
198
|
- lib/rubysmith/builders/git_hub.rb
|
186
199
|
- lib/rubysmith/builders/guard.rb
|
187
|
-
- lib/rubysmith/builders/pragma.rb
|
188
200
|
- lib/rubysmith/builders/rake.rb
|
189
201
|
- lib/rubysmith/builders/reek.rb
|
190
202
|
- lib/rubysmith/builders/rspec/context.rb
|
191
203
|
- lib/rubysmith/builders/rspec/helper.rb
|
192
|
-
- lib/rubysmith/builders/rubocop
|
193
|
-
- lib/rubysmith/builders/rubocop/setup.rb
|
204
|
+
- lib/rubysmith/builders/rubocop.rb
|
194
205
|
- lib/rubysmith/builders/setup.rb
|
195
206
|
- lib/rubysmith/cli/actions/build.rb
|
196
207
|
- lib/rubysmith/cli/actions/config.rb
|
197
|
-
- lib/rubysmith/cli/
|
198
|
-
- lib/rubysmith/cli/
|
199
|
-
- lib/rubysmith/cli/configuration/enhancers/current_time.rb
|
200
|
-
- lib/rubysmith/cli/configuration/enhancers/git_hub_user.rb
|
201
|
-
- lib/rubysmith/cli/configuration/enhancers/version.rb
|
202
|
-
- lib/rubysmith/cli/configuration/loader.rb
|
203
|
-
- lib/rubysmith/cli/parsers.rb
|
204
|
-
- lib/rubysmith/cli/parsers/assembler.rb
|
208
|
+
- lib/rubysmith/cli/actions/publish.rb
|
209
|
+
- lib/rubysmith/cli/parser.rb
|
205
210
|
- lib/rubysmith/cli/parsers/build.rb
|
206
211
|
- lib/rubysmith/cli/parsers/core.rb
|
207
212
|
- lib/rubysmith/cli/shell.rb
|
213
|
+
- lib/rubysmith/configuration/content.rb
|
214
|
+
- lib/rubysmith/configuration/defaults.yml
|
215
|
+
- lib/rubysmith/configuration/enhancers/current_time.rb
|
216
|
+
- lib/rubysmith/configuration/enhancers/git_email.rb
|
217
|
+
- lib/rubysmith/configuration/enhancers/git_hub_user.rb
|
218
|
+
- lib/rubysmith/configuration/enhancers/git_user.rb
|
219
|
+
- lib/rubysmith/configuration/loader.rb
|
208
220
|
- lib/rubysmith/container.rb
|
221
|
+
- lib/rubysmith/extensions/bundler.rb
|
222
|
+
- lib/rubysmith/extensions/milestoner.rb
|
223
|
+
- lib/rubysmith/extensions/pragmater.rb
|
224
|
+
- lib/rubysmith/extensions/rubocop.rb
|
225
|
+
- lib/rubysmith/extensions/tocer.rb
|
209
226
|
- lib/rubysmith/identity.rb
|
210
227
|
- lib/rubysmith/pathway.rb
|
211
228
|
- lib/rubysmith/renderers/erb.rb
|
@@ -216,21 +233,20 @@ files:
|
|
216
233
|
- lib/rubysmith/templates/%project_name%/.reek.yml.erb
|
217
234
|
- lib/rubysmith/templates/%project_name%/.rubocop.yml.erb
|
218
235
|
- lib/rubysmith/templates/%project_name%/.ruby-version.erb
|
219
|
-
- lib/rubysmith/templates/%project_name%/
|
220
|
-
- lib/rubysmith/templates/%project_name%/CHANGES.md.erb
|
221
|
-
- lib/rubysmith/templates/%project_name%/CODE_OF_CONDUCT.adoc.erb
|
222
|
-
- lib/rubysmith/templates/%project_name%/CODE_OF_CONDUCT.md.erb
|
223
|
-
- lib/rubysmith/templates/%project_name%/CONTRIBUTING.adoc.erb
|
224
|
-
- lib/rubysmith/templates/%project_name%/CONTRIBUTING.md.erb
|
236
|
+
- lib/rubysmith/templates/%project_name%/CITATION.cff.erb
|
225
237
|
- lib/rubysmith/templates/%project_name%/Gemfile.erb
|
226
238
|
- lib/rubysmith/templates/%project_name%/Guardfile.erb
|
227
239
|
- lib/rubysmith/templates/%project_name%/LICENSE-apache.adoc.erb
|
228
240
|
- lib/rubysmith/templates/%project_name%/LICENSE-apache.md.erb
|
241
|
+
- lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.adoc.erb
|
242
|
+
- lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.md.erb
|
229
243
|
- lib/rubysmith/templates/%project_name%/LICENSE-mit.adoc.erb
|
230
244
|
- lib/rubysmith/templates/%project_name%/LICENSE-mit.md.erb
|
231
245
|
- lib/rubysmith/templates/%project_name%/README.adoc.erb
|
232
246
|
- lib/rubysmith/templates/%project_name%/README.md.erb
|
233
247
|
- lib/rubysmith/templates/%project_name%/Rakefile.erb
|
248
|
+
- lib/rubysmith/templates/%project_name%/VERSIONS.adoc.erb
|
249
|
+
- lib/rubysmith/templates/%project_name%/VERSIONS.md.erb
|
234
250
|
- lib/rubysmith/templates/%project_name%/bin/console.erb
|
235
251
|
- lib/rubysmith/templates/%project_name%/bin/guard.erb
|
236
252
|
- lib/rubysmith/templates/%project_name%/bin/rubocop.erb
|
@@ -241,10 +257,10 @@ files:
|
|
241
257
|
- lib/rubysmith/text/inserter.rb
|
242
258
|
homepage: https://github.com/bkuhlmann/rubysmith
|
243
259
|
licenses:
|
244
|
-
-
|
260
|
+
- Hippocratic-3.0
|
245
261
|
metadata:
|
246
262
|
bug_tracker_uri: https://github.com/bkuhlmann/rubysmith/issues
|
247
|
-
changelog_uri: https://www.alchemists.io/projects/rubysmith/
|
263
|
+
changelog_uri: https://www.alchemists.io/projects/rubysmith/versions
|
248
264
|
documentation_uri: https://www.alchemists.io/projects/rubysmith
|
249
265
|
rubygems_mfa_required: 'true'
|
250
266
|
source_code_uri: https://github.com/bkuhlmann/rubysmith
|
@@ -256,14 +272,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
256
272
|
requirements:
|
257
273
|
- - "~>"
|
258
274
|
- !ruby/object:Gem::Version
|
259
|
-
version: '3.
|
275
|
+
version: '3.1'
|
260
276
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
261
277
|
requirements:
|
262
278
|
- - ">="
|
263
279
|
- !ruby/object:Gem::Version
|
264
280
|
version: '0'
|
265
281
|
requirements: []
|
266
|
-
rubygems_version: 3.
|
282
|
+
rubygems_version: 3.3.4
|
267
283
|
signing_key:
|
268
284
|
specification_version: 4
|
269
285
|
summary: A command line interface for smithing Ruby projects.
|
metadata.gz.sig
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
���x
|
2
|
+
�
|
3
|
+
���˪DS����R_���� \hq>hapZWң!��ucӯ�C�
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "tocer"
|
4
|
-
|
5
|
-
module Rubysmith
|
6
|
-
module Builders
|
7
|
-
module Documentation
|
8
|
-
# Builds project skeleton CODE_OF_CONDUCT documentation.
|
9
|
-
class Conduct
|
10
|
-
def self.call(...) = new(...).call
|
11
|
-
|
12
|
-
def initialize configuration, builder: Builder
|
13
|
-
@configuration = configuration
|
14
|
-
@builder = builder
|
15
|
-
end
|
16
|
-
|
17
|
-
def call
|
18
|
-
return unless configuration.build_conduct
|
19
|
-
|
20
|
-
configuration.with(template_path: "%project_name%/CODE_OF_CONDUCT.#{kind}.erb")
|
21
|
-
.then { |updated_configuration| builder.call(updated_configuration).render }
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
attr_reader :configuration, :builder
|
27
|
-
|
28
|
-
def kind = configuration.documentation_format || "md"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "pragmater"
|
4
|
-
|
5
|
-
module Rubysmith
|
6
|
-
module Builders
|
7
|
-
# Builds project skeleton pragmas so all Ruby strings are frozen by default.
|
8
|
-
class Pragma
|
9
|
-
def self.call(...) = new(...).call
|
10
|
-
|
11
|
-
def initialize configuration, client: Pragmater::Runner
|
12
|
-
@configuration = configuration
|
13
|
-
@client = client
|
14
|
-
end
|
15
|
-
|
16
|
-
def call = client.for(**attributes).call && nil
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
attr_reader :configuration, :client
|
21
|
-
|
22
|
-
def attributes
|
23
|
-
{
|
24
|
-
action: :insert,
|
25
|
-
root_dir: configuration.project_root,
|
26
|
-
comments: configuration.builders_pragmater_comments,
|
27
|
-
includes: configuration.builders_pragmater_includes
|
28
|
-
}
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rubocop"
|
4
|
-
require "refinements/ios"
|
5
|
-
|
6
|
-
module Rubysmith
|
7
|
-
module Builders
|
8
|
-
module Rubocop
|
9
|
-
# Executes Rubocop auto-correct on newly generated project.
|
10
|
-
class Formatter
|
11
|
-
using Refinements::IOs
|
12
|
-
|
13
|
-
def self.call(...) = new(...).call
|
14
|
-
|
15
|
-
def initialize configuration, client: RuboCop::CLI.new
|
16
|
-
@configuration = configuration
|
17
|
-
@client = client
|
18
|
-
end
|
19
|
-
|
20
|
-
def call
|
21
|
-
STDOUT.squelch { client.run ["--auto-correct", configuration.project_root.to_s] }
|
22
|
-
nil
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
attr_reader :configuration, :client
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Rubysmith
|
4
|
-
module Builders
|
5
|
-
module Rubocop
|
6
|
-
# Builds project skeleton for Rubocop code quality support.
|
7
|
-
class Setup
|
8
|
-
def self.call(...) = new(...).call
|
9
|
-
|
10
|
-
def initialize configuration, builder: Builder
|
11
|
-
@configuration = configuration
|
12
|
-
@builder = builder
|
13
|
-
end
|
14
|
-
|
15
|
-
def call
|
16
|
-
return unless configuration.build_rubocop
|
17
|
-
|
18
|
-
builder.call(configuration.with(template_path: "%project_name%/bin/rubocop.erb"))
|
19
|
-
.render
|
20
|
-
.permit 0o755
|
21
|
-
|
22
|
-
builder.call(configuration.with(template_path: "%project_name%/.rubocop.yml.erb")).render
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
attr_reader :configuration, :builder
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "pathname"
|
4
|
-
require "refinements/strings"
|
5
|
-
|
6
|
-
module Rubysmith
|
7
|
-
module CLI
|
8
|
-
module Configuration
|
9
|
-
# Defines the common configuration content for use throughout the gem.
|
10
|
-
Content = Struct.new(
|
11
|
-
:action_build,
|
12
|
-
:action_config,
|
13
|
-
:action_help,
|
14
|
-
:action_version,
|
15
|
-
:author_email,
|
16
|
-
:author_name,
|
17
|
-
:author_url,
|
18
|
-
:build_amazing_print,
|
19
|
-
:build_bundler_leak,
|
20
|
-
:build_changes,
|
21
|
-
:build_circle_ci,
|
22
|
-
:build_conduct,
|
23
|
-
:build_console,
|
24
|
-
:build_contributions,
|
25
|
-
:build_debug,
|
26
|
-
:build_git,
|
27
|
-
:build_git_hub,
|
28
|
-
:build_git_lint,
|
29
|
-
:build_guard,
|
30
|
-
:build_license,
|
31
|
-
:build_maximum,
|
32
|
-
:build_minimum,
|
33
|
-
:build_rake,
|
34
|
-
:build_readme,
|
35
|
-
:build_reek,
|
36
|
-
:build_refinements,
|
37
|
-
:build_rspec,
|
38
|
-
:build_rubocop,
|
39
|
-
:build_setup,
|
40
|
-
:build_simple_cov,
|
41
|
-
:build_zeitwerk,
|
42
|
-
:builders_pragmater_comments,
|
43
|
-
:builders_pragmater_includes,
|
44
|
-
:documentation_format,
|
45
|
-
:documentation_license,
|
46
|
-
:git_hub_user,
|
47
|
-
:now,
|
48
|
-
:project_name,
|
49
|
-
:target_root,
|
50
|
-
:template_path,
|
51
|
-
:template_root,
|
52
|
-
:version,
|
53
|
-
keyword_init: true
|
54
|
-
) do
|
55
|
-
using Refinements::Strings
|
56
|
-
|
57
|
-
def initialize *arguments
|
58
|
-
super
|
59
|
-
|
60
|
-
self[:template_root] ||= Pathname(__dir__).join("../../templates").expand_path
|
61
|
-
self[:target_root] ||= Pathname.pwd
|
62
|
-
end
|
63
|
-
|
64
|
-
def with(attributes) = self.class.new(to_h.merge(attributes))
|
65
|
-
|
66
|
-
def maximize = update_build_options(true)
|
67
|
-
|
68
|
-
def minimize = update_build_options(false)
|
69
|
-
|
70
|
-
def project_label = project_name.titleize
|
71
|
-
|
72
|
-
def project_class = project_name.camelcase
|
73
|
-
|
74
|
-
def project_root = target_root.join(project_name)
|
75
|
-
|
76
|
-
def project_path = project_name.snakecase
|
77
|
-
|
78
|
-
def ascii_doc? = documentation_format == "adoc"
|
79
|
-
|
80
|
-
def markdown? = documentation_format == "md"
|
81
|
-
|
82
|
-
def to_pathway
|
83
|
-
Pathway[start_root: template_root, start_path: template_path, end_root: target_root]
|
84
|
-
end
|
85
|
-
|
86
|
-
private
|
87
|
-
|
88
|
-
def update_build_options value
|
89
|
-
to_h.except(:build_minimum)
|
90
|
-
.select { |key, _value| key.start_with? "build_" }
|
91
|
-
.each { |key, _value| self[key] = value }
|
92
|
-
.then { self }
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
:author:
|
2
|
-
:name:
|
3
|
-
:email:
|
4
|
-
:url:
|
5
|
-
:build:
|
6
|
-
:amazing_print: true
|
7
|
-
:bundler_leak: true
|
8
|
-
:changes: true
|
9
|
-
:circle_ci: false
|
10
|
-
:conduct: true
|
11
|
-
:console: true
|
12
|
-
:contributions: true
|
13
|
-
:debug: true
|
14
|
-
:git: true
|
15
|
-
:git_hub: false
|
16
|
-
:git_lint: true
|
17
|
-
:guard: true
|
18
|
-
:license: true
|
19
|
-
:maximum: false
|
20
|
-
:minimum: false
|
21
|
-
:rake: true
|
22
|
-
:readme: true
|
23
|
-
:reek: true
|
24
|
-
:refinements: true
|
25
|
-
:rspec: true
|
26
|
-
:rubocop: true
|
27
|
-
:setup: true
|
28
|
-
:simple_cov: true
|
29
|
-
:zeitwerk: true
|
30
|
-
:builders:
|
31
|
-
:pragmater:
|
32
|
-
:comments:
|
33
|
-
- "# frozen_string_literal: true"
|
34
|
-
:includes:
|
35
|
-
- "**/*.rb"
|
36
|
-
- "**/*bin/console"
|
37
|
-
- "**/*bin/guard"
|
38
|
-
- "**/*bin/rubocop"
|
39
|
-
- "**/*Gemfile"
|
40
|
-
- "**/*Guardfile"
|
41
|
-
- "**/*Rakefile"
|
42
|
-
:documentation:
|
43
|
-
:format: "md"
|
44
|
-
:license: "mit"
|
45
|
-
:git_hub:
|
46
|
-
:user:
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "refinements/structs"
|
4
|
-
|
5
|
-
module Rubysmith
|
6
|
-
module CLI
|
7
|
-
module Configuration
|
8
|
-
module Enhancers
|
9
|
-
# Adds current time to content.
|
10
|
-
class CurrentTime
|
11
|
-
using Refinements::Structs
|
12
|
-
|
13
|
-
def initialize now = Time.now
|
14
|
-
@now = now
|
15
|
-
end
|
16
|
-
|
17
|
-
def call(content) = content.merge(now: now)
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
attr_reader :now
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "git_plus"
|
4
|
-
require "refinements/strings"
|
5
|
-
require "refinements/structs"
|
6
|
-
|
7
|
-
module Rubysmith
|
8
|
-
module CLI
|
9
|
-
module Configuration
|
10
|
-
module Enhancers
|
11
|
-
# Dynamically adds GitHub user if user is defined.
|
12
|
-
class GitHubUser
|
13
|
-
using Refinements::Strings
|
14
|
-
using Refinements::Structs
|
15
|
-
|
16
|
-
def initialize repository: GitPlus::Repository.new
|
17
|
-
@repository = repository
|
18
|
-
end
|
19
|
-
|
20
|
-
def call content
|
21
|
-
String(content.git_hub_user).blank? ? content.merge(git_hub_user: user) : content
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
attr_reader :repository
|
27
|
-
|
28
|
-
def user = repository.config_get("github.user")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "refinements/structs"
|
4
|
-
|
5
|
-
module Rubysmith
|
6
|
-
module CLI
|
7
|
-
module Configuration
|
8
|
-
module Enhancers
|
9
|
-
# Adds this gem's version to content.
|
10
|
-
class Version
|
11
|
-
using Refinements::Structs
|
12
|
-
|
13
|
-
def initialize version = Identity::VERSION_LABEL
|
14
|
-
@version = version
|
15
|
-
end
|
16
|
-
|
17
|
-
def call(content) = content.merge(version: version)
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
attr_reader :version
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "pathname"
|
4
|
-
require "refinements/hashes"
|
5
|
-
require "refinements/structs"
|
6
|
-
require "runcom"
|
7
|
-
require "yaml"
|
8
|
-
|
9
|
-
module Rubysmith
|
10
|
-
module CLI
|
11
|
-
module Configuration
|
12
|
-
# Represents the fully assembled Command Line Interface (CLI) configuration.
|
13
|
-
class Loader
|
14
|
-
using Refinements::Hashes
|
15
|
-
using Refinements::Structs
|
16
|
-
|
17
|
-
DEFAULTS = YAML.load_file(Pathname(__dir__).join("defaults.yml")).freeze
|
18
|
-
CLIENT = Runcom::Config.new "#{Identity::NAME}/configuration.yml", defaults: DEFAULTS
|
19
|
-
|
20
|
-
ENHANCERS = [
|
21
|
-
Enhancers::GitHubUser.new,
|
22
|
-
Enhancers::CurrentTime.new,
|
23
|
-
Enhancers::Version.new
|
24
|
-
].freeze
|
25
|
-
|
26
|
-
def self.call(...) = new(...).call
|
27
|
-
|
28
|
-
def self.with_defaults = new(client: DEFAULTS, enhancers: [])
|
29
|
-
|
30
|
-
def initialize content: Content.new, client: CLIENT, enhancers: ENHANCERS
|
31
|
-
@content = content
|
32
|
-
@client = client
|
33
|
-
@enhancers = enhancers
|
34
|
-
end
|
35
|
-
|
36
|
-
def call = enhancers.reduce(preload_content) { |preload, enhancer| enhancer.call preload }
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
attr_reader :content, :client, :enhancers
|
41
|
-
|
42
|
-
def preload_content = content.merge(**client.to_h.flatten_keys)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Rubysmith
|
4
|
-
module CLI
|
5
|
-
module Parsers
|
6
|
-
# Assembles and parses all Command Line Interface (CLI) options.
|
7
|
-
class Assembler
|
8
|
-
SECTIONS = [Core, Build].freeze # Order is important.
|
9
|
-
|
10
|
-
def initialize sections: SECTIONS, client: CLIENT, container: Container
|
11
|
-
@sections = sections
|
12
|
-
@client = client
|
13
|
-
@container = container
|
14
|
-
end
|
15
|
-
|
16
|
-
def call arguments = []
|
17
|
-
sections.each { |parser| parser.call client: client }
|
18
|
-
client.parse! arguments
|
19
|
-
configuration
|
20
|
-
end
|
21
|
-
|
22
|
-
def to_s = client.to_s
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
attr_reader :sections, :client, :container
|
27
|
-
|
28
|
-
def configuration = container[__method__]
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|