rubysmith 2.0.1 → 3.0.1
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 +134 -214
- data/README.adoc +10 -15
- data/lib/rubysmith/builder.rb +5 -5
- data/lib/rubysmith/cli/actions/config.rb +5 -7
- data/lib/rubysmith/cli/actions/container.rb +22 -0
- data/lib/rubysmith/cli/actions/import.rb +11 -0
- data/lib/rubysmith/cli/actions/publish.rb +2 -3
- data/lib/rubysmith/cli/parser.rb +8 -5
- data/lib/rubysmith/cli/parsers/build.rb +5 -14
- data/lib/rubysmith/cli/parsers/core.rb +5 -5
- data/lib/rubysmith/cli/shell.rb +8 -25
- data/lib/rubysmith/configuration/content.rb +0 -2
- data/lib/rubysmith/configuration/defaults.yml +2 -4
- data/lib/rubysmith/container.rb +3 -23
- data/lib/rubysmith/extensions/milestoner.rb +0 -1
- data/lib/rubysmith/import.rb +7 -0
- data/lib/rubysmith/templates/%project_name%/Gemfile.erb +3 -6
- data/lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.adoc.erb +134 -214
- data/lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.md.erb +17 -198
- data/lib/rubysmith/templates/%project_name%/spec/spec_helper.rb.erb +1 -1
- data/rubysmith.gemspec +10 -8
- data.tar.gz.sig +0 -0
- metadata +57 -26
- metadata.gz.sig +0 -0
data/lib/rubysmith/cli/parser.rb
CHANGED
@@ -6,26 +6,29 @@ module Rubysmith
|
|
6
6
|
module CLI
|
7
7
|
# Assembles and parses all Command Line Interface (CLI) options.
|
8
8
|
class Parser
|
9
|
+
include Import[:configuration]
|
10
|
+
|
9
11
|
CLIENT = OptionParser.new nil, 40, " "
|
10
12
|
SECTIONS = [Parsers::Core, Parsers::Build].freeze # Order is important.
|
11
13
|
|
12
|
-
def initialize sections: SECTIONS, client: CLIENT,
|
14
|
+
def initialize sections: SECTIONS, client: CLIENT, **dependencies
|
15
|
+
super(**dependencies)
|
13
16
|
@sections = sections
|
14
17
|
@client = client
|
15
|
-
@
|
18
|
+
@configuration_duplicate = configuration.dup
|
16
19
|
end
|
17
20
|
|
18
21
|
def call arguments = []
|
19
|
-
sections.each { |section| section.call
|
22
|
+
sections.each { |section| section.call configuration_duplicate, client: }
|
20
23
|
client.parse arguments
|
21
|
-
|
24
|
+
configuration_duplicate.freeze
|
22
25
|
end
|
23
26
|
|
24
27
|
def to_s = client.to_s
|
25
28
|
|
26
29
|
private
|
27
30
|
|
28
|
-
attr_reader :sections, :client, :
|
31
|
+
attr_reader :sections, :client, :configuration_duplicate
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
@@ -7,16 +7,18 @@ module Rubysmith
|
|
7
7
|
module Parsers
|
8
8
|
# Handles parsing of Command Line Interface (CLI) build options.
|
9
9
|
class Build
|
10
|
+
include Import[:colorizer]
|
11
|
+
|
10
12
|
using Refinements::Structs
|
11
13
|
|
12
14
|
def self.call(...) = new(...).call
|
13
15
|
|
14
16
|
def initialize configuration = Container[:configuration],
|
15
17
|
client: Parser::CLIENT,
|
16
|
-
|
18
|
+
**dependencies
|
19
|
+
super(**dependencies)
|
17
20
|
@configuration = configuration
|
18
21
|
@client = client
|
19
|
-
@container = container
|
20
22
|
end
|
21
23
|
|
22
24
|
def call arguments = []
|
@@ -28,7 +30,7 @@ module Rubysmith
|
|
28
30
|
|
29
31
|
private
|
30
32
|
|
31
|
-
attr_reader :configuration, :client
|
33
|
+
attr_reader :configuration, :client
|
32
34
|
|
33
35
|
def collate = private_methods.sort.grep(/add_/).each { |method| __send__ method }
|
34
36
|
|
@@ -113,15 +115,6 @@ module Rubysmith
|
|
113
115
|
end
|
114
116
|
end
|
115
117
|
|
116
|
-
def add_dead_end
|
117
|
-
client.on(
|
118
|
-
"--[no-]dead_end",
|
119
|
-
"Add Dead End gem. #{default __method__}."
|
120
|
-
) do |value|
|
121
|
-
configuration.merge! build_dead_end: value
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
118
|
def add_debug
|
126
119
|
client.on(
|
127
120
|
"--[no-]debug",
|
@@ -300,8 +293,6 @@ module Rubysmith
|
|
300
293
|
.then { |boolean| boolean ? colorizer.green(boolean) : colorizer.red(boolean) }
|
301
294
|
.then { |colored_boolean| "Default: #{colored_boolean}" }
|
302
295
|
end
|
303
|
-
|
304
|
-
def colorizer = container[__method__]
|
305
296
|
end
|
306
297
|
end
|
307
298
|
end
|
@@ -7,16 +7,18 @@ module Rubysmith
|
|
7
7
|
module Parsers
|
8
8
|
# Handles parsing of Command Line Interface (CLI) core options.
|
9
9
|
class Core
|
10
|
+
include Import[:specification]
|
11
|
+
|
10
12
|
using Refinements::Structs
|
11
13
|
|
12
14
|
def self.call(...) = new(...).call
|
13
15
|
|
14
16
|
def initialize configuration = Container[:configuration],
|
15
17
|
client: Parser::CLIENT,
|
16
|
-
|
18
|
+
**dependencies
|
19
|
+
super(**dependencies)
|
17
20
|
@configuration = configuration
|
18
21
|
@client = client
|
19
|
-
@container = container
|
20
22
|
end
|
21
23
|
|
22
24
|
def call arguments = []
|
@@ -29,7 +31,7 @@ module Rubysmith
|
|
29
31
|
|
30
32
|
private
|
31
33
|
|
32
|
-
attr_reader :configuration, :client
|
34
|
+
attr_reader :configuration, :client
|
33
35
|
|
34
36
|
def collate = private_methods.sort.grep(/add_/).each { |method| __send__ method }
|
35
37
|
|
@@ -65,8 +67,6 @@ module Rubysmith
|
|
65
67
|
configuration.merge! action_help: true
|
66
68
|
end
|
67
69
|
end
|
68
|
-
|
69
|
-
def specification = container[__method__]
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
data/lib/rubysmith/cli/shell.rb
CHANGED
@@ -6,16 +6,11 @@ module Rubysmith
|
|
6
6
|
module CLI
|
7
7
|
# The main Command Line Interface (CLI) object.
|
8
8
|
class Shell
|
9
|
-
|
10
|
-
config: Actions::Config.new,
|
11
|
-
build: Actions::Build.new,
|
12
|
-
publish: Actions::Publish.new
|
13
|
-
}.freeze
|
9
|
+
include Actions::Import[:config, :build, :publish, :specification, :logger]
|
14
10
|
|
15
|
-
def initialize parser: Parser.new,
|
11
|
+
def initialize parser: Parser.new, **dependencies
|
12
|
+
super(**dependencies)
|
16
13
|
@parser = parser
|
17
|
-
@actions = actions
|
18
|
-
@container = container
|
19
14
|
end
|
20
15
|
|
21
16
|
def call arguments = []
|
@@ -26,29 +21,17 @@ module Rubysmith
|
|
26
21
|
|
27
22
|
private
|
28
23
|
|
29
|
-
attr_reader :parser
|
24
|
+
attr_reader :parser
|
30
25
|
|
31
26
|
def perform configuration
|
32
27
|
case configuration
|
33
|
-
in action_config: Symbol => action then config action
|
34
|
-
in action_build: true then build configuration
|
35
|
-
in action_publish: true then publish configuration
|
28
|
+
in action_config: Symbol => action then config.call action
|
29
|
+
in action_build: true then build.call configuration
|
30
|
+
in action_publish: true then publish.call configuration
|
36
31
|
in action_version: true then logger.info { specification.labeled_version }
|
37
|
-
else
|
32
|
+
else logger.any { parser.to_s }
|
38
33
|
end
|
39
34
|
end
|
40
|
-
|
41
|
-
def config(action) = actions.fetch(__method__).call(action)
|
42
|
-
|
43
|
-
def build(configuration) = actions.fetch(__method__).call(configuration)
|
44
|
-
|
45
|
-
def publish(configuration) = actions.fetch(__method__).call(configuration)
|
46
|
-
|
47
|
-
def usage = logger.unknown(parser.to_s)
|
48
|
-
|
49
|
-
def specification = container[__method__]
|
50
|
-
|
51
|
-
def logger = container[__method__]
|
52
35
|
end
|
53
36
|
end
|
54
37
|
end
|
@@ -32,7 +32,6 @@ module Rubysmith
|
|
32
32
|
:build_conduct,
|
33
33
|
:build_console,
|
34
34
|
:build_contributions,
|
35
|
-
:build_dead_end,
|
36
35
|
:build_debug,
|
37
36
|
:build_git,
|
38
37
|
:build_git_hub,
|
@@ -58,7 +57,6 @@ module Rubysmith
|
|
58
57
|
:documentation_format,
|
59
58
|
:extensions_milestoner_documentation_format,
|
60
59
|
:extensions_milestoner_prefixes,
|
61
|
-
:extensions_milestoner_sign,
|
62
60
|
:extensions_pragmater_comments,
|
63
61
|
:extensions_pragmater_includes,
|
64
62
|
:extensions_tocer_includes,
|
@@ -14,7 +14,6 @@
|
|
14
14
|
:conduct: true
|
15
15
|
:console: true
|
16
16
|
:contributions: true
|
17
|
-
:dead_end: true
|
18
17
|
:debug: true
|
19
18
|
:git: true
|
20
19
|
:git_hub: false
|
@@ -43,14 +42,13 @@
|
|
43
42
|
:extensions:
|
44
43
|
:milestoner:
|
45
44
|
:documentation:
|
46
|
-
:format: "
|
45
|
+
:format: "adoc"
|
47
46
|
:prefixes:
|
48
47
|
- Fixed
|
49
48
|
- Added
|
50
49
|
- Updated
|
51
50
|
- Removed
|
52
51
|
- Refactored
|
53
|
-
:sign: false
|
54
52
|
:pragmater:
|
55
53
|
:comments:
|
56
54
|
- "# frozen_string_literal: true"
|
@@ -75,7 +73,7 @@
|
|
75
73
|
:license:
|
76
74
|
:label: Hippocratic
|
77
75
|
:name: hippocratic
|
78
|
-
:version:
|
76
|
+
:version: 2.1
|
79
77
|
:project:
|
80
78
|
:url:
|
81
79
|
:community:
|
data/lib/rubysmith/container.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "cogger"
|
3
4
|
require "dry-container"
|
4
|
-
require "logger"
|
5
5
|
require "pastel"
|
6
6
|
require "spek"
|
7
7
|
|
@@ -10,30 +10,10 @@ module Rubysmith
|
|
10
10
|
module Container
|
11
11
|
extend Dry::Container::Mixin
|
12
12
|
|
13
|
+
register(:colorizer) { Pastel.new enabled: $stdout.tty? }
|
13
14
|
register(:configuration) { Configuration::Loader.call }
|
14
15
|
register(:specification) { Spek::Loader.call "#{__dir__}/../../rubysmith.gemspec" }
|
15
|
-
register(:colorizer) { Pastel.new enabled: $stdout.tty? }
|
16
16
|
register(:kernel) { Kernel }
|
17
|
-
|
18
|
-
register :log_colors do
|
19
|
-
{
|
20
|
-
"DEBUG" => self[:colorizer].white.detach,
|
21
|
-
"INFO" => self[:colorizer].green.detach,
|
22
|
-
"WARN" => self[:colorizer].yellow.detach,
|
23
|
-
"ERROR" => self[:colorizer].red.detach,
|
24
|
-
"FATAL" => self[:colorizer].white.bold.on_red.detach,
|
25
|
-
"ANY" => self[:colorizer].white.bold.detach
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
register :logger do
|
30
|
-
Logger.new $stdout,
|
31
|
-
level: Logger.const_get(ENV.fetch("LOG_LEVEL", "INFO")),
|
32
|
-
formatter: (
|
33
|
-
lambda do |severity, _at, _name, message|
|
34
|
-
self[:log_colors][severity].call "#{message}\n"
|
35
|
-
end
|
36
|
-
)
|
37
|
-
end
|
17
|
+
register(:logger) { Cogger::Client.new }
|
38
18
|
end
|
39
19
|
end
|
@@ -14,13 +14,10 @@ group :code_quality do
|
|
14
14
|
gem "bundler-leak", "~> 0.2"
|
15
15
|
<% end %>
|
16
16
|
<% if configuration.build_caliber %>
|
17
|
-
gem "caliber", "~> 0.
|
18
|
-
<% end %>
|
19
|
-
<% if configuration.build_dead_end %>
|
20
|
-
gem "dead_end", "~> 3.1"
|
17
|
+
gem "caliber", "~> 0.7"
|
21
18
|
<% end %>
|
22
19
|
<% if configuration.build_git && configuration.build_git_lint %>
|
23
|
-
gem "git-lint", "~>
|
20
|
+
gem "git-lint", "~> 4.0"
|
24
21
|
<% end %>
|
25
22
|
<% if configuration.build_reek %>
|
26
23
|
gem "reek", "~> 6.1"
|
@@ -59,6 +56,6 @@ group :tools do
|
|
59
56
|
gem "amazing_print", "~> 1.4"
|
60
57
|
<% end %>
|
61
58
|
<% if configuration.build_debug %>
|
62
|
-
gem "debug", "~> 1.
|
59
|
+
gem "debug", "~> 1.5"
|
63
60
|
<% end %>
|
64
61
|
end
|