rubysmith 0.15.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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 %>