rubysmith 0.15.0 → 1.1.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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/LICENSE.adoc +207 -155
  4. data/README.adoc +352 -93
  5. data/{bin → exe}/rubysmith +0 -0
  6. data/lib/rubysmith/builder.rb +2 -3
  7. data/lib/rubysmith/builders/bundler.rb +7 -11
  8. data/lib/rubysmith/builders/circle_ci.rb +8 -2
  9. data/lib/rubysmith/builders/console.rb +8 -2
  10. data/lib/rubysmith/builders/core.rb +7 -3
  11. data/lib/rubysmith/builders/documentation/{change.rb → citation.rb} +8 -8
  12. data/lib/rubysmith/builders/documentation/license.rb +9 -4
  13. data/lib/rubysmith/builders/documentation/readme.rb +12 -18
  14. data/lib/rubysmith/builders/documentation/{contribution.rb → version.rb} +10 -5
  15. data/lib/rubysmith/builders/git/commit.rb +3 -1
  16. data/lib/rubysmith/builders/{rubocop/setup.rb → git/ignore.rb} +11 -7
  17. data/lib/rubysmith/builders/git/setup.rb +2 -1
  18. data/lib/rubysmith/builders/git_hub.rb +8 -3
  19. data/lib/rubysmith/builders/guard.rb +9 -3
  20. data/lib/rubysmith/builders/rake.rb +9 -3
  21. data/lib/rubysmith/builders/reek.rb +7 -2
  22. data/lib/rubysmith/builders/rspec/context.rb +8 -2
  23. data/lib/rubysmith/builders/rspec/helper.rb +8 -2
  24. data/lib/rubysmith/builders/rubocop.rb +34 -0
  25. data/lib/rubysmith/builders/setup.rb +8 -2
  26. data/lib/rubysmith/cli/actions/build.rb +11 -12
  27. data/lib/rubysmith/cli/actions/config.rb +4 -2
  28. data/lib/rubysmith/cli/actions/publish.rb +21 -0
  29. data/lib/rubysmith/cli/parser.rb +31 -0
  30. data/lib/rubysmith/cli/parsers/build.rb +89 -45
  31. data/lib/rubysmith/cli/parsers/core.rb +14 -10
  32. data/lib/rubysmith/cli/shell.rb +22 -15
  33. data/lib/rubysmith/configuration/content.rb +174 -0
  34. data/lib/rubysmith/configuration/defaults.yml +89 -0
  35. data/lib/rubysmith/configuration/enhancers/current_time.rb +24 -0
  36. data/lib/rubysmith/configuration/enhancers/git_email.rb +31 -0
  37. data/lib/rubysmith/configuration/enhancers/git_hub_user.rb +31 -0
  38. data/lib/rubysmith/configuration/enhancers/git_user.rb +33 -0
  39. data/lib/rubysmith/configuration/loader.rb +48 -0
  40. data/lib/rubysmith/container.rb +1 -1
  41. data/lib/rubysmith/extensions/bundler.rb +30 -0
  42. data/lib/rubysmith/extensions/milestoner.rb +35 -0
  43. data/lib/rubysmith/extensions/pragmater.rb +35 -0
  44. data/lib/rubysmith/extensions/rubocop.rb +29 -0
  45. data/lib/rubysmith/extensions/tocer.rb +37 -0
  46. data/lib/rubysmith/identity.rb +1 -1
  47. data/lib/rubysmith/templates/%project_name%/.github/ISSUE_TEMPLATE.md.erb +1 -4
  48. data/lib/rubysmith/templates/%project_name%/.github/PULL_REQUEST_TEMPLATE.md.erb +0 -3
  49. data/lib/rubysmith/templates/%project_name%/.gitignore.erb +11 -0
  50. data/lib/rubysmith/templates/%project_name%/.rubocop.yml.erb +2 -0
  51. data/lib/rubysmith/templates/%project_name%/CITATION.cff.erb +16 -0
  52. data/lib/rubysmith/templates/%project_name%/Gemfile.erb +19 -10
  53. data/lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.adoc.erb +214 -0
  54. data/lib/rubysmith/templates/%project_name%/LICENSE-hippocratic.md.erb +214 -0
  55. data/lib/rubysmith/templates/%project_name%/README.adoc.erb +20 -21
  56. data/lib/rubysmith/templates/%project_name%/README.md.erb +20 -21
  57. data/lib/rubysmith/templates/%project_name%/Rakefile.erb +9 -0
  58. data/lib/rubysmith/templates/%project_name%/VERSIONS.adoc.erb +5 -0
  59. data/lib/rubysmith/templates/%project_name%/VERSIONS.md.erb +5 -0
  60. data/lib/rubysmith/templates/%project_name%/bin/rubocop.erb +0 -1
  61. data.tar.gz.sig +0 -0
  62. metadata +61 -42
  63. metadata.gz.sig +0 -0
  64. data/lib/rubysmith/builders/documentation/conduct.rb +0 -32
  65. data/lib/rubysmith/builders/pragma.rb +0 -32
  66. data/lib/rubysmith/builders/rubocop/formatter.rb +0 -31
  67. data/lib/rubysmith/cli/configuration/content.rb +0 -97
  68. data/lib/rubysmith/cli/configuration/defaults.yml +0 -46
  69. data/lib/rubysmith/cli/configuration/enhancers/current_time.rb +0 -26
  70. data/lib/rubysmith/cli/configuration/enhancers/git_hub_user.rb +0 -33
  71. data/lib/rubysmith/cli/configuration/enhancers/version.rb +0 -26
  72. data/lib/rubysmith/cli/configuration/loader.rb +0 -46
  73. data/lib/rubysmith/cli/parsers/assembler.rb +0 -32
  74. data/lib/rubysmith/cli/parsers.rb +0 -11
  75. data/lib/rubysmith/templates/%project_name%/CHANGES.adoc.erb +0 -5
  76. data/lib/rubysmith/templates/%project_name%/CHANGES.md.erb +0 -5
  77. data/lib/rubysmith/templates/%project_name%/CODE_OF_CONDUCT.adoc.erb +0 -114
  78. data/lib/rubysmith/templates/%project_name%/CODE_OF_CONDUCT.md.erb +0 -115
  79. data/lib/rubysmith/templates/%project_name%/CONTRIBUTING.adoc.erb +0 -22
  80. data/lib/rubysmith/templates/%project_name%/CONTRIBUTING.md.erb +0 -22
@@ -0,0 +1,174 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
4
+ require "refinements/arrays"
5
+ require "refinements/strings"
6
+ require "refinements/structs"
7
+
8
+ module Rubysmith
9
+ # rubocop:disable Metrics/ModuleLength
10
+ module Configuration
11
+ # Defines the common configuration content for use throughout the gem.
12
+ Content = Struct.new(
13
+ :action_build,
14
+ :action_config,
15
+ :action_edit,
16
+ :action_help,
17
+ :action_install,
18
+ :action_publish,
19
+ :action_version,
20
+ :action_view,
21
+ :author_email,
22
+ :author_family_name,
23
+ :author_given_name,
24
+ :author_url,
25
+ :build_amazing_print,
26
+ :build_bundler_leak,
27
+ :build_circle_ci,
28
+ :build_citation,
29
+ :build_cli,
30
+ :build_community,
31
+ :build_conduct,
32
+ :build_console,
33
+ :build_contributions,
34
+ :build_dead_end,
35
+ :build_debug,
36
+ :build_git,
37
+ :build_git_hub,
38
+ :build_git_lint,
39
+ :build_guard,
40
+ :build_license,
41
+ :build_maximum,
42
+ :build_minimum,
43
+ :build_rake,
44
+ :build_readme,
45
+ :build_reek,
46
+ :build_refinements,
47
+ :build_rspec,
48
+ :build_rubocop,
49
+ :build_security,
50
+ :build_setup,
51
+ :build_simple_cov,
52
+ :build_versions,
53
+ :build_yard,
54
+ :build_zeitwerk,
55
+ :citation_affiliation,
56
+ :citation_message,
57
+ :citation_orcid,
58
+ :documentation_format,
59
+ :extensions_milestoner_documentation_format,
60
+ :extensions_milestoner_prefixes,
61
+ :extensions_milestoner_sign,
62
+ :extensions_pragmater_comments,
63
+ :extensions_pragmater_includes,
64
+ :extensions_tocer_includes,
65
+ :extensions_tocer_label,
66
+ :git_hub_user,
67
+ :license_label,
68
+ :license_name,
69
+ :license_version,
70
+ :now,
71
+ :project_name,
72
+ :project_url_community,
73
+ :project_url_conduct,
74
+ :project_url_contributions,
75
+ :project_url_download,
76
+ :project_url_home,
77
+ :project_url_issues,
78
+ :project_url_license,
79
+ :project_url_security,
80
+ :project_url_source,
81
+ :project_url_versions,
82
+ :project_version,
83
+ :target_root,
84
+ :template_path,
85
+ :template_roots,
86
+ keyword_init: true
87
+ ) do
88
+ using Refinements::Arrays
89
+ using Refinements::Strings
90
+ using Refinements::Structs
91
+
92
+ def initialize *arguments
93
+ super
94
+
95
+ self[:template_roots] ||= [Pathname(__dir__).join("../templates")]
96
+ self[:target_root] ||= Pathname.pwd
97
+ freeze
98
+ end
99
+
100
+ def add_template_roots paths
101
+ Array(paths).map { |path| Pathname path }
102
+ .including(template_roots)
103
+ .then { |roots| dup.merge! template_roots: roots }
104
+ end
105
+
106
+ def maximize = update_build_options(true)
107
+
108
+ def minimize = update_build_options(false)
109
+
110
+ def author_name = [author_given_name, author_family_name].compress.join(" ")
111
+
112
+ def license_label_version = [license_label, license_version].compress.join("-")
113
+
114
+ def project_label = project_name.titleize
115
+
116
+ def project_class = project_name.camelcase
117
+
118
+ def project_root = target_root.join(project_name)
119
+
120
+ def project_path = project_name.snakecase
121
+
122
+ def computed_project_url_community = format_url(__method__)
123
+
124
+ def computed_project_url_conduct = format_url(__method__)
125
+
126
+ def computed_project_url_contributions = format_url(__method__)
127
+
128
+ def computed_project_url_download = format_url(__method__)
129
+
130
+ def computed_project_url_home = format_url(__method__)
131
+
132
+ def computed_project_url_issues = format_url(__method__)
133
+
134
+ def computed_project_url_license = format_url(__method__)
135
+
136
+ def computed_project_url_security = format_url(__method__)
137
+
138
+ def computed_project_url_source = format_url(__method__)
139
+
140
+ def computed_project_url_versions = format_url(__method__)
141
+
142
+ def ascii_doc? = documentation_format == "adoc"
143
+
144
+ def markdown? = documentation_format == "md"
145
+
146
+ def pathway
147
+ Pathway[start_root: template_root, start_path: template_path, end_root: target_root]
148
+ end
149
+
150
+ def template_root
151
+ template_roots.map(&:expand_path)
152
+ .find { |path| path.join(String(template_path)).exist? }
153
+ end
154
+
155
+ private
156
+
157
+ def format_url kind
158
+ kind.to_s
159
+ .sub("computed_", "")
160
+ .then { |method| public_send method }
161
+ .then { |url| String url }
162
+ .then { |url| url.sub "%project_name%", project_name }
163
+ end
164
+
165
+ def update_build_options value
166
+ to_h.select { |key, _value| key.start_with? "build_" }
167
+ .transform_values { value }
168
+ .then { |attributes| dup.merge!(**attributes, build_minimum: !value) }
169
+ .freeze
170
+ end
171
+ end
172
+ end
173
+ # rubocop:enable Metrics/ModuleLength
174
+ end
@@ -0,0 +1,89 @@
1
+ :author:
2
+ :email:
3
+ :family_name:
4
+ :given_name:
5
+ :url:
6
+ :build:
7
+ :amazing_print: true
8
+ :bundler_leak: true
9
+ :circle_ci: false
10
+ :citation: true
11
+ :cli: false
12
+ :community: false
13
+ :conduct: true
14
+ :console: true
15
+ :contributions: true
16
+ :dead_end: true
17
+ :debug: true
18
+ :git: true
19
+ :git_hub: false
20
+ :git_lint: true
21
+ :guard: true
22
+ :license: true
23
+ :maximum: false
24
+ :minimum: false
25
+ :rake: true
26
+ :readme: true
27
+ :reek: true
28
+ :refinements: true
29
+ :rspec: true
30
+ :rubocop: true
31
+ :security: true
32
+ :setup: true
33
+ :simple_cov: true
34
+ :versions: true
35
+ :yard: false
36
+ :zeitwerk: true
37
+ :citation:
38
+ :affiliation:
39
+ :message: Please use the following metadata when citing this project in your work.
40
+ :orcid:
41
+ :documentation:
42
+ :format: "adoc"
43
+ :extensions:
44
+ :milestoner:
45
+ :documentation:
46
+ :format: "md"
47
+ :prefixes:
48
+ - Fixed
49
+ - Added
50
+ - Updated
51
+ - Removed
52
+ - Refactored
53
+ :sign: false
54
+ :pragmater:
55
+ :comments:
56
+ - "# frozen_string_literal: true"
57
+ :includes:
58
+ - "**/*.gemspec"
59
+ - "**/*.rake"
60
+ - "**/*.rb"
61
+ - "**/*bin/console"
62
+ - "**/*bin/guard"
63
+ - "**/*bin/rubocop"
64
+ - "**/*Gemfile"
65
+ - "**/*Guardfile"
66
+ - "**/*Rakefile"
67
+ :tocer:
68
+ :includes:
69
+ - "README.md"
70
+ :label: "## Table of Contents"
71
+ :git_hub:
72
+ :user:
73
+ :license:
74
+ :label: Hippocratic
75
+ :name: hippocratic
76
+ :version: 3.0
77
+ :project:
78
+ :url:
79
+ :community:
80
+ :conduct:
81
+ :contributions:
82
+ :download:
83
+ :home:
84
+ :issues:
85
+ :license:
86
+ :security:
87
+ :source:
88
+ :versions:
89
+ :version: 0.0.0
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "refinements/structs"
4
+
5
+ module Rubysmith
6
+ module Configuration
7
+ module Enhancers
8
+ # Adds current time to content.
9
+ class CurrentTime
10
+ using Refinements::Structs
11
+
12
+ def initialize now = Time.now
13
+ @now = now
14
+ end
15
+
16
+ def call(content) = content.merge(now:)
17
+
18
+ private
19
+
20
+ attr_reader :now
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "git_plus"
4
+ require "refinements/strings"
5
+ require "refinements/structs"
6
+
7
+ module Rubysmith
8
+ module Configuration
9
+ module Enhancers
10
+ # Dynamically adds Git email if defined.
11
+ class GitEmail
12
+ using Refinements::Strings
13
+ using Refinements::Structs
14
+
15
+ def initialize repository: GitPlus::Repository.new
16
+ @repository = repository
17
+ end
18
+
19
+ def call content
20
+ String(content.author_email).blank? ? content.merge(author_email: email) : content
21
+ end
22
+
23
+ private
24
+
25
+ attr_reader :repository
26
+
27
+ def email = repository.config_get("user.email")
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "git_plus"
4
+ require "refinements/strings"
5
+ require "refinements/structs"
6
+
7
+ module Rubysmith
8
+ module Configuration
9
+ module Enhancers
10
+ # Dynamically adds GitHub user if user is defined.
11
+ class GitHubUser
12
+ using Refinements::Strings
13
+ using Refinements::Structs
14
+
15
+ def initialize repository: GitPlus::Repository.new
16
+ @repository = repository
17
+ end
18
+
19
+ def call content
20
+ String(content.git_hub_user).blank? ? content.merge(git_hub_user: user) : content
21
+ end
22
+
23
+ private
24
+
25
+ attr_reader :repository
26
+
27
+ def user = repository.config_get("github.user")
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "git_plus"
4
+ require "refinements/strings"
5
+ require "refinements/structs"
6
+
7
+ module Rubysmith
8
+ module Configuration
9
+ module Enhancers
10
+ # Dynamically adds Git user if defined.
11
+ class GitUser
12
+ using Refinements::Strings
13
+ using Refinements::Structs
14
+
15
+ def initialize repository: GitPlus::Repository.new
16
+ @repository = repository
17
+ end
18
+
19
+ def call(content) = String(content.author_name).blank? ? content.merge(**user) : content
20
+
21
+ private
22
+
23
+ attr_reader :repository
24
+
25
+ def user
26
+ repository.config_get("user.name")
27
+ .then { |name| String(name).split }
28
+ .then { |first, last| {author_given_name: first, author_family_name: last} }
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,48 @@
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 Configuration
11
+ # Represents the fully assembled Command Line Interface (CLI) configuration.
12
+ class Loader
13
+ using Refinements::Hashes
14
+ using Refinements::Structs
15
+
16
+ DEFAULTS = YAML.load_file(Pathname(__dir__).join("defaults.yml")).freeze
17
+ CLIENT = Runcom::Config.new "#{Identity::NAME}/configuration.yml", defaults: DEFAULTS
18
+
19
+ ENHANCERS = [
20
+ Enhancers::CurrentTime.new,
21
+ Enhancers::GitEmail.new,
22
+ Enhancers::GitHubUser.new,
23
+ Enhancers::GitUser.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
37
+ enhancers.reduce(preload_content) { |preload, enhancer| enhancer.call preload }
38
+ .freeze
39
+ end
40
+
41
+ private
42
+
43
+ attr_reader :content, :client, :enhancers
44
+
45
+ def preload_content = content.merge(**client.to_h.flatten_keys)
46
+ end
47
+ end
48
+ end
@@ -9,7 +9,7 @@ module Rubysmith
9
9
  module Container
10
10
  extend Dry::Container::Mixin
11
11
 
12
- register(:configuration, memoize: true) { CLI::Configuration::Loader.call }
12
+ register(:configuration) { Configuration::Loader.call }
13
13
  register(:colorizer) { Pastel.new enabled: $stdout.tty? }
14
14
  register(:kernel) { Kernel }
15
15
 
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler"
4
+ require "bundler/cli"
5
+ require "refinements/pathnames"
6
+
7
+ module Rubysmith
8
+ module Extensions
9
+ # Ensures gem dependencies are installed.
10
+ class Bundler
11
+ using Refinements::Pathnames
12
+
13
+ def self.call(...) = new(...).call
14
+
15
+ def initialize configuration, client: ::Bundler::CLI
16
+ @configuration = configuration
17
+ @client = client
18
+ end
19
+
20
+ def call
21
+ configuration.project_root.change_dir { client.start %w[install --quiet] }
22
+ configuration
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :configuration, :client
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "milestoner"
4
+
5
+ module Rubysmith
6
+ module Extensions
7
+ # Ensures project can be published (tagged) in a reliable and consistent fashion.
8
+ class Milestoner
9
+ def self.call(...) = new(...).call
10
+
11
+ def initialize configuration,
12
+ client: ::Milestoner::Tags::Publisher.new,
13
+ content: ::Milestoner::Configuration::Content
14
+ @configuration = configuration
15
+ @client = client
16
+ @content = content
17
+ end
18
+
19
+ def call = client.call(settings) && configuration
20
+
21
+ private
22
+
23
+ attr_reader :configuration, :client, :content
24
+
25
+ def settings
26
+ content[
27
+ documentation_format: configuration.extensions_milestoner_documentation_format,
28
+ prefixes: configuration.extensions_milestoner_prefixes,
29
+ sign: configuration.extensions_milestoner_sign,
30
+ version: configuration.project_version
31
+ ]
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pragmater"
4
+
5
+ module Rubysmith
6
+ module Extensions
7
+ # Ensures project skeleton has pragmas.
8
+ class Pragmater
9
+ def self.call(...) = new(...).call
10
+
11
+ def initialize configuration,
12
+ client: ::Pragmater::Runner.new,
13
+ content: ::Pragmater::Configuration::Content
14
+ @configuration = configuration
15
+ @client = client
16
+ @content = content
17
+ end
18
+
19
+ def call = client.call(settings) && configuration
20
+
21
+ private
22
+
23
+ attr_reader :configuration, :client, :content
24
+
25
+ def settings
26
+ content[
27
+ action_insert: true,
28
+ comments: configuration.extensions_pragmater_comments,
29
+ includes: configuration.extensions_pragmater_includes,
30
+ root_dir: configuration.project_root
31
+ ]
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubocop"
4
+ require "refinements/ios"
5
+
6
+ module Rubysmith
7
+ module Extensions
8
+ # Ensures project skeleton adheres to style guide.
9
+ class Rubocop
10
+ using Refinements::IOs
11
+
12
+ def self.call(...) = new(...).call
13
+
14
+ def initialize configuration, client: ::RuboCop::CLI.new
15
+ @configuration = configuration
16
+ @client = client
17
+ end
18
+
19
+ def call
20
+ STDOUT.squelch { client.run ["--auto-correct", configuration.project_root.to_s] }
21
+ configuration
22
+ end
23
+
24
+ private
25
+
26
+ attr_reader :configuration, :client
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "tocer"
4
+
5
+ module Rubysmith
6
+ module Extensions
7
+ # Ensures project skeleton documentation has table of contents.
8
+ class Tocer
9
+ def self.call(...) = new(...).call
10
+
11
+ def initialize configuration,
12
+ client: ::Tocer::Runner.new,
13
+ content: ::Tocer::Configuration::Content
14
+ @configuration = configuration
15
+ @client = client
16
+ @content = content
17
+ end
18
+
19
+ def call
20
+ client.call(settings) if configuration.build_readme
21
+ configuration
22
+ end
23
+
24
+ private
25
+
26
+ attr_reader :configuration, :client, :content
27
+
28
+ def settings
29
+ content[
30
+ includes: configuration.extensions_tocer_includes,
31
+ label: configuration.extensions_tocer_label,
32
+ root_dir: configuration.project_root
33
+ ]
34
+ end
35
+ end
36
+ end
37
+ end
@@ -4,7 +4,7 @@ module Rubysmith
4
4
  module Identity
5
5
  NAME = "rubysmith"
6
6
  LABEL = "Rubysmith"
7
- VERSION = "0.15.0"
7
+ VERSION = "1.1.0"
8
8
  VERSION_LABEL = "#{LABEL} #{VERSION}".freeze
9
9
  SUMMARY = "A command line interface for smithing Ruby projects."
10
10
  end
@@ -1,5 +1,5 @@
1
1
  ## Overview
2
- <!-- Required. Describe, briefly, the behavior experienced. -->
2
+ <!-- Required. Describe, briefly, the behavior experienced and desired. -->
3
3
 
4
4
  ## Screenshots/Screencasts
5
5
  <!-- Optional. Attach screenshot(s) and/or screencast(s) that demo the behavior. -->
@@ -7,8 +7,5 @@
7
7
  ## Steps to Recreate
8
8
  <!-- Required. List exact steps (numbered list) to reproduce errant behavior. -->
9
9
 
10
- ## Desired Behavior
11
- <!-- Required. Describe the behavior you'd like to see or your idea of a proposed solution. -->
12
-
13
10
  ## Environment
14
11
  <!-- Required. What is your operating system, software version(s), etc. -->
@@ -6,6 +6,3 @@
6
6
 
7
7
  ## Details
8
8
  <!-- Optional. List the key features/highlights as bullet points. -->
9
-
10
- ## Notes
11
- <!-- Optional. List additional notes/references as bullet points. -->
@@ -0,0 +1,11 @@
1
+ .bundle
2
+ <% if configuration.build_rubocop %>
3
+ .rubocop-http*
4
+ <% end %>
5
+ <% if configuration.build_yard %>
6
+ .yardoc
7
+ <% end %>
8
+ <% if configuration.build_yard %>
9
+ doc/yard
10
+ <% end %>
11
+ tmp
@@ -1,6 +1,8 @@
1
1
  inherit_from:
2
2
  - https://raw.githubusercontent.com/bkuhlmann/code_quality/main/configurations/rubocop/ruby.yml
3
+ <% if configuration.build_rake %>
3
4
  - https://raw.githubusercontent.com/bkuhlmann/code_quality/main/configurations/rubocop/rake.yml
5
+ <% end %>
4
6
  - https://raw.githubusercontent.com/bkuhlmann/code_quality/main/configurations/rubocop/performance.yml
5
7
  <% if configuration.build_rspec %>
6
8
  - https://raw.githubusercontent.com/bkuhlmann/code_quality/main/configurations/rubocop/rspec.yml
@@ -0,0 +1,16 @@
1
+ cff-version: 1.2.0
2
+ message: <%= configuration.citation_message %>
3
+ title: <%= configuration.project_label %>
4
+ abstract:
5
+ version: <%= configuration.project_version %>
6
+ license: <%= configuration.license_label_version %>
7
+ date-released: <%= configuration.now.strftime "%Y-%m-%d" %>
8
+ authors:
9
+ - family-names: <%= configuration.author_family_name %>
10
+ given-names: <%= configuration.author_given_name %>
11
+ affiliation: <%= configuration.citation_affiliation %>
12
+ orcid: https://orcid.org/<%= configuration.citation_orcid %>
13
+ keywords:
14
+ - ruby
15
+ repository-code: <%= configuration.computed_project_url_source %>
16
+ repository-artifact: <%= configuration.computed_project_url_download %>