ruby-repo-kit 0.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 (60) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +14 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +174 -0
  5. data/config/rubocop.yml +55 -0
  6. data/exe/ruby-repo-kit +6 -0
  7. data/lib/ruby_repo_kit/checks/commits.rb +84 -0
  8. data/lib/ruby_repo_kit/checks.rb +114 -0
  9. data/lib/ruby_repo_kit/cli.rb +128 -0
  10. data/lib/ruby_repo_kit/commands.rb +43 -0
  11. data/lib/ruby_repo_kit/github/client.rb +91 -0
  12. data/lib/ruby_repo_kit/github/configuration.rb +180 -0
  13. data/lib/ruby_repo_kit/github/policy.rb +52 -0
  14. data/lib/ruby_repo_kit/github.rb +14 -0
  15. data/lib/ruby_repo_kit/package.rb +100 -0
  16. data/lib/ruby_repo_kit/project.rb +100 -0
  17. data/lib/ruby_repo_kit/rake_tasks.rb +98 -0
  18. data/lib/ruby_repo_kit/release/artifact.rb +47 -0
  19. data/lib/ruby_repo_kit/release/metadata.rb +157 -0
  20. data/lib/ruby_repo_kit/release/preparation.rb +81 -0
  21. data/lib/ruby_repo_kit/release/publication.rb +146 -0
  22. data/lib/ruby_repo_kit/release/publisher.rb +27 -0
  23. data/lib/ruby_repo_kit/release/workflow.rb +182 -0
  24. data/lib/ruby_repo_kit/release.rb +20 -0
  25. data/lib/ruby_repo_kit/scaffold.rb +115 -0
  26. data/lib/ruby_repo_kit/specification.rb +44 -0
  27. data/lib/ruby_repo_kit/version.rb +5 -0
  28. data/lib/ruby_repo_kit.rb +10 -0
  29. data/templates/cli/.editorconfig.erb +12 -0
  30. data/templates/cli/.github/ISSUE_TEMPLATE/bug_report.yml.erb +18 -0
  31. data/templates/cli/.github/ISSUE_TEMPLATE/config.yml.erb +5 -0
  32. data/templates/cli/.github/ISSUE_TEMPLATE/feature_request.yml.erb +13 -0
  33. data/templates/cli/.github/PULL_REQUEST_TEMPLATE.md.erb +5 -0
  34. data/templates/cli/.github/dependabot.yml.erb +27 -0
  35. data/templates/cli/.github/workflows/ci.yml.erb +106 -0
  36. data/templates/cli/.github/workflows/release.yml.erb +139 -0
  37. data/templates/cli/.gitignore.erb +6 -0
  38. data/templates/cli/.rubocop.yml.erb +5 -0
  39. data/templates/cli/.ruby-repo.yml.erb +1 -0
  40. data/templates/cli/.ruby-version.erb +1 -0
  41. data/templates/cli/ARCHITECTURE.md.erb +25 -0
  42. data/templates/cli/CHANGELOG.md.erb +14 -0
  43. data/templates/cli/CODE_OF_CONDUCT.md.erb +14 -0
  44. data/templates/cli/CONTRIBUTING.md.erb +33 -0
  45. data/templates/cli/Gemfile.erb +17 -0
  46. data/templates/cli/LICENSE.txt.erb +21 -0
  47. data/templates/cli/README.md.erb +53 -0
  48. data/templates/cli/Rakefile.erb +38 -0
  49. data/templates/cli/SECURITY.md.erb +11 -0
  50. data/templates/cli/__name__.gemspec.erb +31 -0
  51. data/templates/cli/bin/release.erb +7 -0
  52. data/templates/cli/bin/setup.erb +8 -0
  53. data/templates/cli/docs/releasing.md.erb +42 -0
  54. data/templates/cli/exe/__name__.erb +6 -0
  55. data/templates/cli/lib/__require_path__/cli.rb.erb +50 -0
  56. data/templates/cli/lib/__require_path__/version.rb.erb +5 -0
  57. data/templates/cli/lib/__require_path__.rb.erb +4 -0
  58. data/templates/cli/test/cli_test.rb.erb +62 -0
  59. data/templates/cli/test/test_helper.rb.erb +15 -0
  60. metadata +252 -0
@@ -0,0 +1,53 @@
1
+ # <%= @name %>
2
+
3
+ A small Ruby CLI that prints its text arguments separated by spaces.
4
+
5
+ Requires Ruby 3.4 or newer. This initial implementation has no external service
6
+ dependencies.
7
+
8
+ ## Usage
9
+
10
+ <%= @name %> hello world
11
+ <%= @name %> --help
12
+ <%= @name %> --version
13
+ <%= @name %> -- --text-starting-with-a-dash
14
+
15
+ Successful output goes to stdout. Invalid options and missing text go to stderr
16
+ with exit status 2. A closed output pipe exits cleanly.
17
+
18
+ ## Install from source
19
+
20
+ gem build <%= @name %>.gemspec
21
+ gem install ./<%= @name %>-0.1.0.gem
22
+
23
+ This repository's creation does not publish the gem or reserve its name.
24
+ After a release has actually been published, RubyGems installation is available:
25
+
26
+ gem install <%= @name %>
27
+
28
+ ## Development
29
+
30
+ bin/setup
31
+ bundle exec rake check
32
+ bundle exec rake audit
33
+
34
+ Commit Gemfile.lock after dependency installation. It pins development tools;
35
+ users installing the gem resolve the dependencies declared in its gemspec.
36
+ The versioned ruby-repo-kit development dependency supplies repository and release
37
+ operations. That gem version must be available from the configured source before
38
+ contributors or hosted CI can install the development bundle.
39
+
40
+ Local checks include Ruby linting, tests with coverage (90% lines, 80% branches),
41
+ repository checks and installation of the built package.
42
+ The separate audit task updates a vulnerability database and
43
+ needs network access. CI additionally checks pull-request commits and exercises
44
+ Ruby 3.4/4.0 on Linux and Ruby 4.0 on macOS. These are configured checks, not a
45
+ claim that a new repository has already passed them.
46
+
47
+ See [contributing](CONTRIBUTING.md), [architecture](ARCHITECTURE.md),
48
+ [security](SECURITY.md), [conduct](CODE_OF_CONDUCT.md), and
49
+ [release setup](docs/releasing.md).
50
+
51
+ ## License
52
+
53
+ MIT. See [LICENSE.txt](LICENSE.txt).
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rake/testtask"
4
+ require "rubocop/rake_task"
5
+ require "fileutils"
6
+ require "ruby_repo_kit"
7
+ require "ruby_repo_kit/rake_tasks"
8
+
9
+ RubyRepoKit::RakeTasks.install(project: RubyRepoKit::Project.load(root: __dir__))
10
+
11
+ Rake::TestTask.new(:test) do |task|
12
+ task.libs << "lib" << "test"
13
+ task.pattern = "test/**/*_test.rb"
14
+ task.warning = true
15
+ end
16
+
17
+ RuboCop::RakeTask.new(:rubocop)
18
+
19
+ namespace :test do
20
+ desc "Run tests with line and branch coverage"
21
+ task :cov do
22
+ FileUtils.rm_f("coverage/.resultset.json")
23
+ sh({ "COVERAGE" => "1" }, "bundle", "exec", "rake", "test")
24
+ end
25
+ end
26
+
27
+ desc "Regenerate project-owned artifacts (none are configured yet)"
28
+ task :generate
29
+
30
+ namespace :generate do
31
+ desc "Check generated artifacts (none are configured yet)"
32
+ task :check
33
+ end
34
+
35
+ desc "Run local lint, tests, repository and installed-package checks"
36
+ task check: %w[rubocop test:cov repo:check generate:check package:check]
37
+
38
+ task default: :check
@@ -0,0 +1,11 @@
1
+ # Security
2
+
3
+ Report suspected vulnerabilities privately to <%= @email %>. Include the affected
4
+ version, impact and a minimal reproduction; do not disclose private credentials.
5
+ Please avoid a public issue until maintainers have coordinated a fix.
6
+
7
+ Security fixes target the latest released version. If no version has been
8
+ published yet, report issues against the current main branch.
9
+
10
+ The project does not promise a response deadline. Maintainers will assess the
11
+ report, agree on disclosure where possible, and document any published fix.
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/<%= @require_path %>/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = <%= ruby_literal(@name) %>
7
+ spec.version = <%= @namespace %>::VERSION
8
+ spec.authors = [<%= ruby_literal(@author) %>]
9
+ spec.email = [<%= ruby_literal(@email) %>]
10
+ spec.summary = "A small command-line tool that prints text"
11
+ spec.description = "Prints positional arguments separated by spaces; includes help and version commands."
12
+ spec.homepage = "https://github.com/<%= @repository %>"
13
+ spec.license = "MIT"
14
+ spec.required_ruby_version = ">= 3.4"
15
+ spec.metadata = {
16
+ "source_code_uri" => spec.homepage,
17
+ "bug_tracker_uri" => "#{spec.homepage}/issues",
18
+ "changelog_uri" => "#{spec.homepage}/blob/main/CHANGELOG.md",
19
+ "documentation_uri" => "#{spec.homepage}#readme",
20
+ "rubygems_mfa_required" => "true",
21
+ "allowed_push_host" => "https://rubygems.org"
22
+ }
23
+ # Build from a source archive too; development infrastructure is not shipped.
24
+ spec.files = Dir.chdir(__dir__) do
25
+ Dir.glob("lib/**/*.rb") + %w[exe/<%= @name %> README.md CHANGELOG.md LICENSE.txt SECURITY.md]
26
+ end
27
+ spec.bindir = "exe"
28
+ spec.executables = [<%= ruby_literal(@name) %>]
29
+ spec.require_paths = ["lib"]
30
+ spec.add_dependency "optparse", ">= 0.6", "< 1"
31
+ end
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ require "ruby_repo_kit/cli"
6
+
7
+ exit RubyRepoKit::CLI.run(["release", *ARGV], root: File.expand_path("..", __dir__))
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "rbconfig"
5
+
6
+ Dir.chdir(File.expand_path("..", __dir__)) do
7
+ abort "Dependency installation failed" unless system(RbConfig.ruby, "-S", "bundle", "install")
8
+ end
@@ -0,0 +1,42 @@
1
+ # Release setup and operation
2
+
3
+ The scaffold does not create a GitHub repository, rulesets, environments, labels
4
+ or RubyGems publisher. It does not reserve a public gem name or publish anything.
5
+ The configured repository identity is <%= @repository %>.
6
+
7
+ Before the first release:
8
+
9
+ 1. Confirm the repository and public gem name.
10
+ 2. Make the configured ruby-repo-kit version available to hosted dependency
11
+ installation and commit the generated Gemfile.lock.
12
+ 3. Push the repository and confirm every configured CI job passes.
13
+ 4. Configure branch protection or a ruleset using the required_checks values in
14
+ .ruby-repo.yml. Create the skip-changelog label if using that workflow.
15
+ 5. Create the GitHub release environment and its intended protection rules.
16
+ 6. Configure a RubyGems pending trusted publisher for this gem, repository,
17
+ release.yml workflow and release environment. For an existing gem, configure
18
+ its trusted publisher instead. No long-lived RubyGems API token is required.
19
+ 7. Run the Release workflow manually with dry_run enabled and inspect its
20
+ checks, package, digest and provenance before publishing.
21
+
22
+ The toolkit's release CLI exposes preparation, PR and recovery operations:
23
+
24
+ bin/release --help
25
+
26
+ Use its help for the installed version's commands and options. A protected
27
+ release is prepared and reviewed before an immutable version tag is pushed.
28
+ Do not push a release tag as an experiment: a matching tag authorizes publication
29
+ once the hosted publisher is configured.
30
+
31
+ The Release workflow runs CI, builds one artifact, tests that artifact and
32
+ records its SHA-256 digest. Attestation, RubyGems publication and the GitHub
33
+ release consume that same downloaded artifact, checking its digest again.
34
+ The publish job uses OIDC credentials in the release environment. A branch
35
+ dry-run builds and verifies without publishing.
36
+
37
+ If a run stops after publishing, inspect both RubyGems and GitHub before retrying.
38
+ Never move a published tag or replace a published gem version. Preserve the
39
+ original artifact and use the toolkit's recovery diagnostics.
40
+
41
+ Local package tests and a hosted dry-run do not prove RubyGems authentication.
42
+ Record the actual successful publication and installation separately.
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "<%= @require_path %>"
5
+
6
+ exit <%= @namespace %>::CLI.run(ARGV)
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "optparse"
4
+
5
+ require_relative "version"
6
+
7
+ module <%= @namespace %>
8
+ class CLI
9
+ def self.run(argv, out: $stdout, err: $stderr)
10
+ new(out: out, err: err).run(argv)
11
+ end
12
+
13
+ def initialize(out:, err:)
14
+ @out = out
15
+ @err = err
16
+ end
17
+
18
+ def run(argv)
19
+ arguments = argv.dup
20
+ requested = nil
21
+ parser = OptionParser.new do |options|
22
+ options.banner = "Usage: <%= @name %> [options] TEXT..."
23
+ options.separator ""
24
+ options.separator "Print text, separating arguments with spaces."
25
+ options.on("-h", "--help", "Show this help") { requested = :help }
26
+ options.on("-v", "--version", "Show the version") { requested = :version }
27
+ end
28
+ parser.parse!(arguments)
29
+ return print_result(parser.to_s) if requested == :help
30
+ return print_result(VERSION) if requested == :version
31
+
32
+ raise OptionParser::MissingArgument, "TEXT (see --help)" if arguments.empty?
33
+
34
+ print_result(arguments.join(" "))
35
+ rescue OptionParser::ParseError => e
36
+ @err.puts "<%= @name %>: #{e.message}"
37
+ 2
38
+ rescue Errno::EPIPE
39
+ 0
40
+ end
41
+
42
+ private
43
+
44
+ def print_result(value)
45
+ @out.puts value
46
+ @out.flush
47
+ 0
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module <%= @namespace %>
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "<%= @require_path %>/version"
4
+ require_relative "<%= @require_path %>/cli"
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ class CLITest < Minitest::Test
6
+ def setup
7
+ @out = StringIO.new
8
+ @err = StringIO.new
9
+ end
10
+
11
+ def test_prints_text_without_changing_the_argument_array
12
+ arguments = %w[hello world]
13
+
14
+ assert_equal 0, run_cli(arguments)
15
+ assert_equal "hello world\n", @out.string
16
+ assert_empty @err.string
17
+ assert_equal %w[hello world], arguments
18
+ end
19
+
20
+ def test_help
21
+ assert_equal 0, run_cli(["--help"])
22
+ assert_includes @out.string, "Usage: <%= @name %>"
23
+ assert_empty @err.string
24
+ end
25
+
26
+ def test_version
27
+ assert_equal 0, run_cli(["--version"])
28
+ assert_equal "#{<%= @namespace %>::VERSION}\n", @out.string
29
+ assert_empty @err.string
30
+ end
31
+
32
+ def test_invalid_flag_uses_stderr
33
+ assert_equal 2, run_cli(["--not-an-option"])
34
+ assert_empty @out.string
35
+ assert_includes @err.string, "invalid option"
36
+ end
37
+
38
+ def test_missing_text_is_an_error
39
+ assert_equal 2, run_cli([])
40
+ assert_empty @out.string
41
+ assert_includes @err.string, "TEXT"
42
+ end
43
+
44
+ def test_option_separator_allows_text_beginning_with_a_dash
45
+ assert_equal 0, run_cli(["--", "--text"])
46
+ assert_equal "--text\n", @out.string
47
+ end
48
+
49
+ def test_a_closed_output_pipe_exits_cleanly
50
+ output = Object.new
51
+ def output.puts(*) = raise Errno::EPIPE
52
+
53
+ assert_equal 0, <%= @namespace %>::CLI.run(["hello"], out: output, err: @err)
54
+ assert_empty @err.string
55
+ end
56
+
57
+ private
58
+
59
+ def run_cli(arguments)
60
+ <%= @namespace %>::CLI.run(arguments, out: @out, err: @err)
61
+ end
62
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ if ENV["COVERAGE"] == "1"
4
+ require "simplecov"
5
+
6
+ SimpleCov.start do
7
+ enable_coverage :branch
8
+ minimum_coverage line: 90, branch: 80
9
+ skip "/test/"
10
+ end
11
+ end
12
+
13
+ require "minitest/autorun"
14
+ require "stringio"
15
+ require "<%= @require_path %>"
metadata ADDED
@@ -0,0 +1,252 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-repo-kit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Highlander Paiva
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: bundler
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '2.6'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '5'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '2.6'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '5'
32
+ - !ruby/object:Gem::Dependency
33
+ name: date
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '3.4'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '4'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '3.4'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '4'
52
+ - !ruby/object:Gem::Dependency
53
+ name: erb
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '4.0'
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: '7'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '7'
72
+ - !ruby/object:Gem::Dependency
73
+ name: json
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '2.9'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '4'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '2.9'
89
+ - - "<"
90
+ - !ruby/object:Gem::Version
91
+ version: '4'
92
+ - !ruby/object:Gem::Dependency
93
+ name: open3
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '0.2'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '0.2'
106
+ - !ruby/object:Gem::Dependency
107
+ name: optparse
108
+ requirement: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0.6'
113
+ - - "<"
114
+ - !ruby/object:Gem::Version
115
+ version: '1'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0.6'
123
+ - - "<"
124
+ - !ruby/object:Gem::Version
125
+ version: '1'
126
+ - !ruby/object:Gem::Dependency
127
+ name: psych
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '5.2'
133
+ - - "<"
134
+ - !ruby/object:Gem::Version
135
+ version: '6'
136
+ type: :runtime
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '5.2'
143
+ - - "<"
144
+ - !ruby/object:Gem::Version
145
+ version: '6'
146
+ - !ruby/object:Gem::Dependency
147
+ name: rake
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '13.4'
153
+ type: :runtime
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '13.4'
160
+ description: Shared release, repository checks and focused Ruby CLI generation, installed
161
+ as a development dependency.
162
+ email:
163
+ - contact@hvpaiva.dev
164
+ executables:
165
+ - ruby-repo-kit
166
+ extensions: []
167
+ extra_rdoc_files: []
168
+ files:
169
+ - CHANGELOG.md
170
+ - LICENSE.txt
171
+ - README.md
172
+ - config/rubocop.yml
173
+ - exe/ruby-repo-kit
174
+ - lib/ruby_repo_kit.rb
175
+ - lib/ruby_repo_kit/checks.rb
176
+ - lib/ruby_repo_kit/checks/commits.rb
177
+ - lib/ruby_repo_kit/cli.rb
178
+ - lib/ruby_repo_kit/commands.rb
179
+ - lib/ruby_repo_kit/github.rb
180
+ - lib/ruby_repo_kit/github/client.rb
181
+ - lib/ruby_repo_kit/github/configuration.rb
182
+ - lib/ruby_repo_kit/github/policy.rb
183
+ - lib/ruby_repo_kit/package.rb
184
+ - lib/ruby_repo_kit/project.rb
185
+ - lib/ruby_repo_kit/rake_tasks.rb
186
+ - lib/ruby_repo_kit/release.rb
187
+ - lib/ruby_repo_kit/release/artifact.rb
188
+ - lib/ruby_repo_kit/release/metadata.rb
189
+ - lib/ruby_repo_kit/release/preparation.rb
190
+ - lib/ruby_repo_kit/release/publication.rb
191
+ - lib/ruby_repo_kit/release/publisher.rb
192
+ - lib/ruby_repo_kit/release/workflow.rb
193
+ - lib/ruby_repo_kit/scaffold.rb
194
+ - lib/ruby_repo_kit/specification.rb
195
+ - lib/ruby_repo_kit/version.rb
196
+ - templates/cli/.editorconfig.erb
197
+ - templates/cli/.github/ISSUE_TEMPLATE/bug_report.yml.erb
198
+ - templates/cli/.github/ISSUE_TEMPLATE/config.yml.erb
199
+ - templates/cli/.github/ISSUE_TEMPLATE/feature_request.yml.erb
200
+ - templates/cli/.github/PULL_REQUEST_TEMPLATE.md.erb
201
+ - templates/cli/.github/dependabot.yml.erb
202
+ - templates/cli/.github/workflows/ci.yml.erb
203
+ - templates/cli/.github/workflows/release.yml.erb
204
+ - templates/cli/.gitignore.erb
205
+ - templates/cli/.rubocop.yml.erb
206
+ - templates/cli/.ruby-repo.yml.erb
207
+ - templates/cli/.ruby-version.erb
208
+ - templates/cli/ARCHITECTURE.md.erb
209
+ - templates/cli/CHANGELOG.md.erb
210
+ - templates/cli/CODE_OF_CONDUCT.md.erb
211
+ - templates/cli/CONTRIBUTING.md.erb
212
+ - templates/cli/Gemfile.erb
213
+ - templates/cli/LICENSE.txt.erb
214
+ - templates/cli/README.md.erb
215
+ - templates/cli/Rakefile.erb
216
+ - templates/cli/SECURITY.md.erb
217
+ - templates/cli/__name__.gemspec.erb
218
+ - templates/cli/bin/release.erb
219
+ - templates/cli/bin/setup.erb
220
+ - templates/cli/docs/releasing.md.erb
221
+ - templates/cli/exe/__name__.erb
222
+ - templates/cli/lib/__require_path__.rb.erb
223
+ - templates/cli/lib/__require_path__/cli.rb.erb
224
+ - templates/cli/lib/__require_path__/version.rb.erb
225
+ - templates/cli/test/cli_test.rb.erb
226
+ - templates/cli/test/test_helper.rb.erb
227
+ homepage: https://github.com/hvpaiva/ruby-repo-kit
228
+ licenses:
229
+ - MIT
230
+ metadata:
231
+ source_code_uri: https://github.com/hvpaiva/ruby-repo-kit
232
+ changelog_uri: https://github.com/hvpaiva/ruby-repo-kit/blob/main/CHANGELOG.md
233
+ rubygems_mfa_required: 'true'
234
+ allowed_push_host: https://rubygems.org
235
+ rdoc_options: []
236
+ require_paths:
237
+ - lib
238
+ required_ruby_version: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: '3.4'
243
+ required_rubygems_version: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - ">="
246
+ - !ruby/object:Gem::Version
247
+ version: '0'
248
+ requirements: []
249
+ rubygems_version: 4.0.20
250
+ specification_version: 4
251
+ summary: Versioned maintenance tools and scaffolding for Ruby CLI repositories
252
+ test_files: []