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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +14 -0
- data/LICENSE.txt +21 -0
- data/README.md +174 -0
- data/config/rubocop.yml +55 -0
- data/exe/ruby-repo-kit +6 -0
- data/lib/ruby_repo_kit/checks/commits.rb +84 -0
- data/lib/ruby_repo_kit/checks.rb +114 -0
- data/lib/ruby_repo_kit/cli.rb +128 -0
- data/lib/ruby_repo_kit/commands.rb +43 -0
- data/lib/ruby_repo_kit/github/client.rb +91 -0
- data/lib/ruby_repo_kit/github/configuration.rb +180 -0
- data/lib/ruby_repo_kit/github/policy.rb +52 -0
- data/lib/ruby_repo_kit/github.rb +14 -0
- data/lib/ruby_repo_kit/package.rb +100 -0
- data/lib/ruby_repo_kit/project.rb +100 -0
- data/lib/ruby_repo_kit/rake_tasks.rb +98 -0
- data/lib/ruby_repo_kit/release/artifact.rb +47 -0
- data/lib/ruby_repo_kit/release/metadata.rb +157 -0
- data/lib/ruby_repo_kit/release/preparation.rb +81 -0
- data/lib/ruby_repo_kit/release/publication.rb +146 -0
- data/lib/ruby_repo_kit/release/publisher.rb +27 -0
- data/lib/ruby_repo_kit/release/workflow.rb +182 -0
- data/lib/ruby_repo_kit/release.rb +20 -0
- data/lib/ruby_repo_kit/scaffold.rb +115 -0
- data/lib/ruby_repo_kit/specification.rb +44 -0
- data/lib/ruby_repo_kit/version.rb +5 -0
- data/lib/ruby_repo_kit.rb +10 -0
- data/templates/cli/.editorconfig.erb +12 -0
- data/templates/cli/.github/ISSUE_TEMPLATE/bug_report.yml.erb +18 -0
- data/templates/cli/.github/ISSUE_TEMPLATE/config.yml.erb +5 -0
- data/templates/cli/.github/ISSUE_TEMPLATE/feature_request.yml.erb +13 -0
- data/templates/cli/.github/PULL_REQUEST_TEMPLATE.md.erb +5 -0
- data/templates/cli/.github/dependabot.yml.erb +27 -0
- data/templates/cli/.github/workflows/ci.yml.erb +106 -0
- data/templates/cli/.github/workflows/release.yml.erb +139 -0
- data/templates/cli/.gitignore.erb +6 -0
- data/templates/cli/.rubocop.yml.erb +5 -0
- data/templates/cli/.ruby-repo.yml.erb +1 -0
- data/templates/cli/.ruby-version.erb +1 -0
- data/templates/cli/ARCHITECTURE.md.erb +25 -0
- data/templates/cli/CHANGELOG.md.erb +14 -0
- data/templates/cli/CODE_OF_CONDUCT.md.erb +14 -0
- data/templates/cli/CONTRIBUTING.md.erb +33 -0
- data/templates/cli/Gemfile.erb +17 -0
- data/templates/cli/LICENSE.txt.erb +21 -0
- data/templates/cli/README.md.erb +53 -0
- data/templates/cli/Rakefile.erb +38 -0
- data/templates/cli/SECURITY.md.erb +11 -0
- data/templates/cli/__name__.gemspec.erb +31 -0
- data/templates/cli/bin/release.erb +7 -0
- data/templates/cli/bin/setup.erb +8 -0
- data/templates/cli/docs/releasing.md.erb +42 -0
- data/templates/cli/exe/__name__.erb +6 -0
- data/templates/cli/lib/__require_path__/cli.rb.erb +50 -0
- data/templates/cli/lib/__require_path__/version.rb.erb +5 -0
- data/templates/cli/lib/__require_path__.rb.erb +4 -0
- data/templates/cli/test/cli_test.rb.erb +62 -0
- data/templates/cli/test/test_helper.rb.erb +15 -0
- 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,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,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,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: []
|