rubysmith 4.9.0 → 5.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/README.adoc +91 -117
- data/lib/rubysmith/builders/core.rb +0 -1
- data/lib/rubysmith/cli/actions/amazing_print.rb +25 -0
- data/lib/rubysmith/cli/actions/caliber.rb +25 -0
- data/lib/rubysmith/cli/actions/circle_ci.rb +25 -0
- data/lib/rubysmith/cli/actions/citation.rb +25 -0
- data/lib/rubysmith/cli/actions/community.rb +25 -0
- data/lib/rubysmith/cli/actions/conduct.rb +25 -0
- data/lib/rubysmith/cli/actions/console.rb +25 -0
- data/lib/rubysmith/cli/actions/contributions.rb +25 -0
- data/lib/rubysmith/cli/actions/debug.rb +25 -0
- data/lib/rubysmith/cli/actions/funding.rb +25 -0
- data/lib/rubysmith/cli/actions/git.rb +25 -0
- data/lib/rubysmith/cli/actions/git_hub.rb +25 -0
- data/lib/rubysmith/cli/actions/git_hub_ci.rb +25 -0
- data/lib/rubysmith/cli/actions/git_lint.rb +25 -0
- data/lib/rubysmith/cli/actions/guard.rb +25 -0
- data/lib/rubysmith/cli/actions/license.rb +25 -0
- data/lib/rubysmith/cli/actions/maximum.rb +25 -0
- data/lib/rubysmith/cli/actions/minimum.rb +25 -0
- data/lib/rubysmith/cli/actions/name.rb +23 -0
- data/lib/rubysmith/cli/actions/publish.rb +16 -4
- data/lib/rubysmith/cli/actions/rake.rb +25 -0
- data/lib/rubysmith/cli/actions/readme.rb +25 -0
- data/lib/rubysmith/cli/actions/reek.rb +25 -0
- data/lib/rubysmith/cli/actions/refinements.rb +25 -0
- data/lib/rubysmith/cli/actions/rspec.rb +25 -0
- data/lib/rubysmith/cli/actions/security.rb +25 -0
- data/lib/rubysmith/cli/actions/setup.rb +25 -0
- data/lib/rubysmith/cli/actions/simple_cov.rb +25 -0
- data/lib/rubysmith/cli/actions/versions.rb +25 -0
- data/lib/rubysmith/cli/actions/yard.rb +25 -0
- data/lib/rubysmith/cli/actions/zeitwerk.rb +25 -0
- data/lib/rubysmith/cli/{actions → commands}/build.rb +45 -7
- data/lib/rubysmith/cli/shell.rb +20 -18
- data/lib/rubysmith/configuration/contract.rb +78 -0
- data/lib/rubysmith/configuration/defaults.yml +52 -73
- data/lib/rubysmith/configuration/{content.rb → model.rb} +8 -22
- data/lib/rubysmith/configuration/transformers/current_time.rb +18 -0
- data/lib/rubysmith/configuration/transformers/git_email.rb +19 -0
- data/lib/rubysmith/configuration/transformers/git_hub_user.rb +19 -0
- data/lib/rubysmith/configuration/transformers/git_user.rb +24 -0
- data/lib/rubysmith/configuration/transformers/target_root.rb +18 -0
- data/lib/rubysmith/configuration/transformers/template_root.rb +22 -0
- data/lib/rubysmith/container.rb +21 -3
- data/lib/rubysmith/extensions/milestoner.rb +1 -1
- data/lib/rubysmith/extensions/pragmater.rb +8 -8
- data/lib/rubysmith/extensions/tocer.rb +8 -8
- data/lib/rubysmith/pathway.rb +1 -0
- data/lib/rubysmith/templates/%project_name%/Gemfile.erb +4 -4
- data/rubysmith.gemspec +16 -13
- data.tar.gz.sig +0 -0
- metadata +112 -46
- metadata.gz.sig +0 -0
- data/lib/rubysmith/cli/actions/config.rb +0 -33
- data/lib/rubysmith/cli/actions/container.rb +0 -20
- data/lib/rubysmith/cli/actions/import.rb +0 -11
- data/lib/rubysmith/cli/parser.rb +0 -35
- data/lib/rubysmith/cli/parsers/build.rb +0 -307
- data/lib/rubysmith/cli/parsers/core.rb +0 -72
- data/lib/rubysmith/configuration/enhancers/container.rb +0 -20
- data/lib/rubysmith/configuration/enhancers/current_time.rb +0 -14
- data/lib/rubysmith/configuration/enhancers/git_email.rb +0 -21
- data/lib/rubysmith/configuration/enhancers/git_hub_user.rb +0 -21
- data/lib/rubysmith/configuration/enhancers/git_user.rb +0 -25
- data/lib/rubysmith/configuration/enhancers/template_root.rb +0 -12
- data/lib/rubysmith/configuration/loader.rb +0 -44
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores Guard flag.
|
10
|
+
class Guard < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add Guard gem."
|
16
|
+
|
17
|
+
on "--[no-]guard"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_guard }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_guard: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores license flag.
|
10
|
+
class License < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add license documentation."
|
16
|
+
|
17
|
+
on "--[no-]license"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_license }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_license: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Forces maximum configuration.
|
10
|
+
class Maximum < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Use maximum options."
|
16
|
+
|
17
|
+
on "--max"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_maximum }
|
20
|
+
|
21
|
+
def call(*) = input.merge!(input.maximize)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Forces minimum configuration.
|
10
|
+
class Minimum < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Use minimum options."
|
16
|
+
|
17
|
+
on "--min"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_minimum }
|
20
|
+
|
21
|
+
def call(*) = input.merge!(input.minimize)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores project (build) name.
|
10
|
+
class Name < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Set project name."
|
16
|
+
|
17
|
+
on %w[-n --name], argument: "NAME"
|
18
|
+
|
19
|
+
def call(name) = input.merge!(project_name: name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,15 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
3
6
|
module Rubysmith
|
4
7
|
module CLI
|
5
8
|
module Actions
|
6
|
-
#
|
7
|
-
class Publish
|
8
|
-
|
9
|
+
# Publishes project.
|
10
|
+
class Publish < Sod::Action
|
11
|
+
include Import[:configuration]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Publish project."
|
16
|
+
|
17
|
+
on %w[-p --publish], argument: "VERSION"
|
18
|
+
|
19
|
+
def initialize(extension: Extensions::Milestoner, **)
|
20
|
+
super(**)
|
9
21
|
@extension = extension
|
10
22
|
end
|
11
23
|
|
12
|
-
def call(
|
24
|
+
def call(version) = extension.call configuration.merge(project_version: version)
|
13
25
|
|
14
26
|
private
|
15
27
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores Rake flag.
|
10
|
+
class Rake < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add Rake gem."
|
16
|
+
|
17
|
+
on "--[no-]rake"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_rake }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_rake: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores readme flag.
|
10
|
+
class Readme < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add readme documentation."
|
16
|
+
|
17
|
+
on "--[no-]readme"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_readme }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_readme: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores Reek flag.
|
10
|
+
class Reek < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add Reek gem."
|
16
|
+
|
17
|
+
on "--[no-]reek"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_reek }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_reek: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores Refinements flag.
|
10
|
+
class Refinements < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add Refinements gem."
|
16
|
+
|
17
|
+
on "--[no-]refinements"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_refinements }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_refinements: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores RSpec flag.
|
10
|
+
class RSpec < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add RSpec gem."
|
16
|
+
|
17
|
+
on "--[no-]rspec"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_rspec }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_rspec: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores security flag.
|
10
|
+
class Security < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add security."
|
16
|
+
|
17
|
+
on "--[no-]security"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_security }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_security: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores setup flag.
|
10
|
+
class Setup < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add setup script."
|
16
|
+
|
17
|
+
on "--[no-]setup"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_setup }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_setup: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores SimpleCov flag.
|
10
|
+
class SimpleCov < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add SimpleCov gem."
|
16
|
+
|
17
|
+
on "--[no-]simple_cov"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_simple_cov }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_simple_cov: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores versions flag.
|
10
|
+
class Versions < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add version history."
|
16
|
+
|
17
|
+
on "--[no-]versions"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_versions }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_versions: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores Yard flag.
|
10
|
+
class Yard < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add Yard gem."
|
16
|
+
|
17
|
+
on "--[no-]yard"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_yard }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_yard: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
6
|
+
module Rubysmith
|
7
|
+
module CLI
|
8
|
+
module Actions
|
9
|
+
# Stores Zeitwerk flag.
|
10
|
+
class Zeitwerk < Sod::Action
|
11
|
+
include Import[:input]
|
12
|
+
|
13
|
+
using ::Refinements::Structs
|
14
|
+
|
15
|
+
description "Add Zeitwerk gem."
|
16
|
+
|
17
|
+
on "--[no-]zeitwerk"
|
18
|
+
|
19
|
+
default { Container[:configuration].build_zeitwerk }
|
20
|
+
|
21
|
+
def call(value = default) = input.merge!(build_zeitwerk: value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,11 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "refinements/structs"
|
4
|
+
require "sod"
|
5
|
+
|
3
6
|
module Rubysmith
|
4
7
|
module CLI
|
5
|
-
module
|
6
|
-
#
|
7
|
-
class Build
|
8
|
-
include
|
8
|
+
module Commands
|
9
|
+
# Stores table of contents root path.
|
10
|
+
class Build < Sod::Command
|
11
|
+
include Import[:input, :kernel, :logger]
|
9
12
|
|
10
13
|
# Order is important.
|
11
14
|
# rubocop:todo Metrics/CollectionLiteralLength
|
@@ -40,14 +43,49 @@ module Rubysmith
|
|
40
43
|
].freeze
|
41
44
|
# rubocop:enable Metrics/CollectionLiteralLength
|
42
45
|
|
46
|
+
handle "build"
|
47
|
+
|
48
|
+
description "Build new project."
|
49
|
+
|
50
|
+
on Actions::Name
|
51
|
+
on Actions::AmazingPrint
|
52
|
+
on Actions::Caliber
|
53
|
+
on Actions::Console
|
54
|
+
on Actions::Contributions
|
55
|
+
on Actions::CircleCI
|
56
|
+
on Actions::Citation
|
57
|
+
on Actions::Community
|
58
|
+
on Actions::Conduct
|
59
|
+
on Actions::Debug
|
60
|
+
on Actions::Funding
|
61
|
+
on Actions::Git
|
62
|
+
on Actions::GitHub
|
63
|
+
on Actions::GitHubCI
|
64
|
+
on Actions::GitLint
|
65
|
+
on Actions::Guard
|
66
|
+
on Actions::License
|
67
|
+
on Actions::Maximum
|
68
|
+
on Actions::Minimum
|
69
|
+
on Actions::Rake
|
70
|
+
on Actions::Readme
|
71
|
+
on Actions::Reek
|
72
|
+
on Actions::Refinements
|
73
|
+
on Actions::RSpec
|
74
|
+
on Actions::Security
|
75
|
+
on Actions::Setup
|
76
|
+
on Actions::SimpleCov
|
77
|
+
on Actions::Versions
|
78
|
+
on Actions::Yard
|
79
|
+
on Actions::Zeitwerk
|
80
|
+
|
43
81
|
def initialize(builders: BUILDERS, **)
|
44
82
|
super(**)
|
45
83
|
@builders = builders
|
46
84
|
end
|
47
85
|
|
48
|
-
def call
|
49
|
-
log_info "Building project skeleton: #{
|
50
|
-
builders.each { |builder| builder.call
|
86
|
+
def call
|
87
|
+
log_info "Building project skeleton: #{input.project_name}..."
|
88
|
+
builders.each { |builder| builder.call input }
|
51
89
|
log_info "Project skeleton complete!"
|
52
90
|
end
|
53
91
|
|
data/lib/rubysmith/cli/shell.rb
CHANGED
@@ -1,38 +1,40 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
4
|
-
require "milestoner"
|
3
|
+
require "sod"
|
5
4
|
|
6
5
|
module Rubysmith
|
7
6
|
module CLI
|
8
7
|
# The main Command Line Interface (CLI) object.
|
9
8
|
class Shell
|
10
|
-
include
|
9
|
+
include Import[:defaults_path, :xdg_config, :specification]
|
11
10
|
|
12
|
-
def initialize(
|
11
|
+
def initialize(context: Sod::Context, dsl: Sod, **)
|
13
12
|
super(**)
|
14
|
-
@
|
13
|
+
@context = context
|
14
|
+
@dsl = dsl
|
15
15
|
end
|
16
16
|
|
17
|
-
def call
|
18
|
-
act_on parser.call(arguments)
|
19
|
-
rescue OptionParser::ParseError, Milestoner::Error => error
|
20
|
-
logger.error { error.message }
|
21
|
-
end
|
17
|
+
def call(...) = cli.call(...)
|
22
18
|
|
23
19
|
private
|
24
20
|
|
25
|
-
attr_reader :
|
21
|
+
attr_reader :context, :dsl
|
22
|
+
|
23
|
+
def cli
|
24
|
+
context = build_context
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
else kernel.puts parser.to_s
|
26
|
+
dsl.new :rubysmith, banner: specification.banner do
|
27
|
+
on(Sod::Prefabs::Commands::Config, context:)
|
28
|
+
on Commands::Build
|
29
|
+
on Actions::Publish
|
30
|
+
on(Sod::Prefabs::Actions::Version, context:)
|
31
|
+
on Sod::Prefabs::Actions::Help, self
|
34
32
|
end
|
35
33
|
end
|
34
|
+
|
35
|
+
def build_context
|
36
|
+
context[defaults_path:, xdg_config:, version_label: specification.labeled_version]
|
37
|
+
end
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry/schema"
|
4
|
+
require "etcher"
|
5
|
+
|
6
|
+
Dry::Schema.load_extensions :monads
|
7
|
+
|
8
|
+
module Rubysmith
|
9
|
+
module Configuration
|
10
|
+
Contract = Dry::Schema.Params do
|
11
|
+
optional(:author_email).filled :string
|
12
|
+
optional(:author_family_name).filled :string
|
13
|
+
optional(:author_given_name).filled :string
|
14
|
+
optional(:author_url).filled :string
|
15
|
+
required(:build_amazing_print).filled :bool
|
16
|
+
required(:build_caliber).filled :bool
|
17
|
+
required(:build_circle_ci).filled :bool
|
18
|
+
required(:build_citation).filled :bool
|
19
|
+
required(:build_cli).filled :bool
|
20
|
+
required(:build_community).filled :bool
|
21
|
+
required(:build_conduct).filled :bool
|
22
|
+
required(:build_console).filled :bool
|
23
|
+
required(:build_contributions).filled :bool
|
24
|
+
required(:build_debug).filled :bool
|
25
|
+
required(:build_funding).filled :bool
|
26
|
+
required(:build_git).filled :bool
|
27
|
+
required(:build_git_hub).filled :bool
|
28
|
+
required(:build_git_hub_ci).filled :bool
|
29
|
+
required(:build_git_lint).filled :bool
|
30
|
+
required(:build_guard).filled :bool
|
31
|
+
required(:build_license).filled :bool
|
32
|
+
required(:build_maximum).filled :bool
|
33
|
+
required(:build_minimum).filled :bool
|
34
|
+
required(:build_rake).filled :bool
|
35
|
+
required(:build_readme).filled :bool
|
36
|
+
required(:build_reek).filled :bool
|
37
|
+
required(:build_refinements).filled :bool
|
38
|
+
required(:build_rspec).filled :bool
|
39
|
+
required(:build_security).filled :bool
|
40
|
+
required(:build_setup).filled :bool
|
41
|
+
required(:build_simple_cov).filled :bool
|
42
|
+
required(:build_versions).filled :bool
|
43
|
+
required(:build_yard).filled :bool
|
44
|
+
required(:build_zeitwerk).filled :bool
|
45
|
+
optional(:citation_affiliation).filled :string
|
46
|
+
optional(:citation_message).filled :string
|
47
|
+
optional(:citation_orcid).filled :string
|
48
|
+
required(:documentation_format).filled :string
|
49
|
+
required(:extensions_milestoner_documentation_format).filled :string
|
50
|
+
required(:extensions_milestoner_prefixes).array :string
|
51
|
+
required(:extensions_pragmater_comments).array :string
|
52
|
+
required(:extensions_pragmater_patterns).array :string
|
53
|
+
required(:extensions_tocer_label).filled :string
|
54
|
+
required(:extensions_tocer_patterns).array :string
|
55
|
+
optional(:git_hub_user).filled :string
|
56
|
+
required(:license_label).filled :string
|
57
|
+
required(:license_name).filled :string
|
58
|
+
required(:license_version).filled :string
|
59
|
+
optional(:now).filled :time
|
60
|
+
optional(:project_name).filled :string
|
61
|
+
optional(:project_url_community).filled :string
|
62
|
+
optional(:project_url_conduct).filled :string
|
63
|
+
optional(:project_url_contributions).filled :string
|
64
|
+
optional(:project_url_download).filled :string
|
65
|
+
optional(:project_url_funding).filled :string
|
66
|
+
optional(:project_url_home).filled :string
|
67
|
+
optional(:project_url_issues).filled :string
|
68
|
+
optional(:project_url_license).filled :string
|
69
|
+
optional(:project_url_security).filled :string
|
70
|
+
optional(:project_url_source).filled :string
|
71
|
+
optional(:project_url_versions).filled :string
|
72
|
+
required(:project_version).filled :string
|
73
|
+
required(:target_root).filled Etcher::Types::Pathname
|
74
|
+
optional(:template_path).filled Etcher::Types::Pathname
|
75
|
+
required(:template_roots).array Etcher::Types::Pathname
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|