ratatui_ruby-devtools 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/.builds/ruby-4.0.yml +38 -0
- data/.pre-commit-config.yaml +16 -0
- data/.rubocop.yml +8 -0
- data/AGENTS.md +72 -0
- data/CHANGELOG.md +23 -0
- data/LICENSE +661 -0
- data/LICENSES/AGPL-3.0-or-later.txt +661 -0
- data/LICENSES/CC-BY-SA-4.0.txt +427 -0
- data/LICENSES/CC0-1.0.txt +121 -0
- data/LICENSES/MIT-0.txt +16 -0
- data/LICENSES/MIT.txt +18 -0
- data/README.md +199 -0
- data/REUSE.toml +18 -0
- data/Rakefile +13 -0
- data/bin/agent_rake +13 -0
- data/bin/announce +13 -0
- data/bin/console +14 -0
- data/bin/consolidate_md +13 -0
- data/bin/hbs +13 -0
- data/bin/setup +17 -0
- data/doc/contributors/documentation_style.md +121 -0
- data/doc/custom.css +22 -0
- data/exe/agent_rake +96 -0
- data/exe/announce +1120 -0
- data/exe/consolidate_md +246 -0
- data/exe/hbs +670 -0
- data/exe/scaffold +662 -0
- data/lib/ratatui_ruby/devtools/tasks/autodoc/examples.rb +133 -0
- data/lib/ratatui_ruby/devtools/tasks/autodoc/member.rb +116 -0
- data/lib/ratatui_ruby/devtools/tasks/autodoc/name.rb +33 -0
- data/lib/ratatui_ruby/devtools/tasks/autodoc.rake +21 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/cargo_lockfile.rb +38 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/changelog.rb +67 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/header.rb +43 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/history.rb +50 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/links.rb +78 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/manifest.rb +63 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/ruby_gem.rb +77 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/sem_ver.rb +63 -0
- data/lib/ratatui_ruby/devtools/tasks/bump/unreleased_section.rb +75 -0
- data/lib/ratatui_ruby/devtools/tasks/bump.rake +80 -0
- data/lib/ratatui_ruby/devtools/tasks/cargo.rake +47 -0
- data/lib/ratatui_ruby/devtools/tasks/doc.rake +887 -0
- data/lib/ratatui_ruby/devtools/tasks/example_viewer.html.erb +172 -0
- data/lib/ratatui_ruby/devtools/tasks/license/headers_md.rb +276 -0
- data/lib/ratatui_ruby/devtools/tasks/license/headers_rb.rb +236 -0
- data/lib/ratatui_ruby/devtools/tasks/license/license_utils.rb +143 -0
- data/lib/ratatui_ruby/devtools/tasks/license/snippets_md.rb +353 -0
- data/lib/ratatui_ruby/devtools/tasks/license/snippets_rdoc.rb +186 -0
- data/lib/ratatui_ruby/devtools/tasks/license.rake +91 -0
- data/lib/ratatui_ruby/devtools/tasks/lint.rake +84 -0
- data/lib/ratatui_ruby/devtools/tasks/rdoc_config.rb +45 -0
- data/lib/ratatui_ruby/devtools/tasks/resources/build.yml.erb +54 -0
- data/lib/ratatui_ruby/devtools/tasks/resources/rubies.yml +7 -0
- data/lib/ratatui_ruby/devtools/tasks/reuse.rake +104 -0
- data/lib/ratatui_ruby/devtools/tasks/sourcehut.rake +94 -0
- data/lib/ratatui_ruby/devtools/tasks/test.rake +18 -0
- data/lib/ratatui_ruby/devtools/templates/.builds/ruby.yml.erb +47 -0
- data/lib/ratatui_ruby/devtools/templates/.gitignore.erb +18 -0
- data/lib/ratatui_ruby/devtools/templates/.pre-commit-config.yaml.erb +16 -0
- data/lib/ratatui_ruby/devtools/templates/.rubocop.yml.erb +8 -0
- data/lib/ratatui_ruby/devtools/templates/AGENTS.md.erb +65 -0
- data/lib/ratatui_ruby/devtools/templates/CHANGELOG.md.erb +18 -0
- data/lib/ratatui_ruby/devtools/templates/Gemfile.erb +32 -0
- data/lib/ratatui_ruby/devtools/templates/README.md.erb +127 -0
- data/lib/ratatui_ruby/devtools/templates/REUSE.toml.erb +33 -0
- data/lib/ratatui_ruby/devtools/templates/Rakefile.erb +29 -0
- data/lib/ratatui_ruby/devtools/templates/bin/console.erb +18 -0
- data/lib/ratatui_ruby/devtools/templates/bin/setup.erb +24 -0
- data/lib/ratatui_ruby/devtools/templates/doc/concepts/application_architecture.md.erb +16 -0
- data/lib/ratatui_ruby/devtools/templates/doc/concepts/application_testing.md.erb +49 -0
- data/lib/ratatui_ruby/devtools/templates/doc/custom.css.erb +24 -0
- data/lib/ratatui_ruby/devtools/templates/doc/getting_started/quickstart.md.erb +56 -0
- data/lib/ratatui_ruby/devtools/templates/doc/images/.gitkeep +0 -0
- data/lib/ratatui_ruby/devtools/templates/doc/index.md.erb +25 -0
- data/lib/ratatui_ruby/devtools/templates/exe/.gitkeep +0 -0
- data/lib/ratatui_ruby/devtools/templates/gemspec.erb +58 -0
- data/lib/ratatui_ruby/devtools/templates/mise.toml.erb +12 -0
- data/lib/ratatui_ruby/devtools/templates/tasks/example_viewer.html.erb +174 -0
- data/lib/ratatui_ruby/devtools/templates/tasks/resources/build.yml.erb +62 -0
- data/lib/ratatui_ruby/devtools/templates/tasks/resources/index.html.erb +46 -0
- data/lib/ratatui_ruby/devtools/templates/tasks/resources/rubies.yml.erb +9 -0
- data/lib/ratatui_ruby/devtools/templates/vendor/goodcop/base.yml +1047 -0
- data/lib/ratatui_ruby/devtools/version.rb +13 -0
- data/lib/ratatui_ruby/devtools.rb +137 -0
- data/mise.toml +7 -0
- data/sig/ratatui_ruby/devtools.rbs +15 -0
- data/vendor/goodcop/base.yml +1047 -0
- metadata +252 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#--
|
|
4
|
+
# SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
5
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
7
|
+
|
|
8
|
+
module RatatuiRuby
|
|
9
|
+
module Devtools
|
|
10
|
+
# Current version of the ratatui_ruby-devtools gem.
|
|
11
|
+
VERSION = "0.1.0"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#--
|
|
4
|
+
# SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
5
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
7
|
+
|
|
8
|
+
require_relative "devtools/version"
|
|
9
|
+
|
|
10
|
+
# Root namespace for RatatuiRuby ecosystem gems.
|
|
11
|
+
#
|
|
12
|
+
# This gem provides development tooling shared across the ecosystem. Consumer
|
|
13
|
+
# gems require this and call <tt>Devtools.install!</tt> to load Rake tasks.
|
|
14
|
+
module RatatuiRuby
|
|
15
|
+
# Development tooling for the RatatuiRuby ecosystem.
|
|
16
|
+
#
|
|
17
|
+
# This gem provides shared Rake tasks, linter configurations, and build
|
|
18
|
+
# tooling used across all RatatuiRuby ecosystem gems.
|
|
19
|
+
#
|
|
20
|
+
# == Usage
|
|
21
|
+
#
|
|
22
|
+
# In your Rakefile:
|
|
23
|
+
#
|
|
24
|
+
# require "ratatui_ruby/devtools"
|
|
25
|
+
# RatatuiRuby::Devtools.install!
|
|
26
|
+
#
|
|
27
|
+
# # Optional: import project-specific tasks
|
|
28
|
+
# Dir.glob("tasks/*.rake").each { |r| import r }
|
|
29
|
+
#
|
|
30
|
+
# task default: %w[lint:fix test lint]
|
|
31
|
+
#
|
|
32
|
+
module Devtools
|
|
33
|
+
# Base error class for devtools failures.
|
|
34
|
+
#
|
|
35
|
+
# Rake tasks may encounter errors during configuration discovery or task
|
|
36
|
+
# execution. This class provides a common base for all devtools exceptions.
|
|
37
|
+
class Error < StandardError; end
|
|
38
|
+
|
|
39
|
+
class << self
|
|
40
|
+
# Configuration accessors - auto-discovered if not set
|
|
41
|
+
attr_writer :gem_name, :gemspec_file, :version_file
|
|
42
|
+
|
|
43
|
+
# Loads all devtools Rake tasks into the current application.
|
|
44
|
+
#
|
|
45
|
+
# Consumer gems need shared tasks for linting, testing, and licensing.
|
|
46
|
+
# Manually copying rake files is tedious and leads to drift. Call this
|
|
47
|
+
# once in your Rakefile to import all devtools tasks.
|
|
48
|
+
#
|
|
49
|
+
# === Example
|
|
50
|
+
#
|
|
51
|
+
# require "ratatui_ruby/devtools"
|
|
52
|
+
# RatatuiRuby::Devtools.install!
|
|
53
|
+
#
|
|
54
|
+
def install!
|
|
55
|
+
tasks_dir = File.expand_path("devtools/tasks", __dir__)
|
|
56
|
+
Dir.glob("#{tasks_dir}/*.rake").each do |task_file|
|
|
57
|
+
Rake.application.add_import(task_file)
|
|
58
|
+
end
|
|
59
|
+
Rake.application.load_imports
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Returns the gem name, auto-discovered from gemspec if not set.
|
|
63
|
+
#
|
|
64
|
+
# Tasks need to know which gem they're operating on. Auto-discovery from
|
|
65
|
+
# gemspec files means zero configuration for standard layouts. Override
|
|
66
|
+
# via <tt>gem_name=</tt> if needed.
|
|
67
|
+
def gem_name
|
|
68
|
+
@gem_name ||= discover_gem_name
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Returns the path to the gemspec file.
|
|
72
|
+
#
|
|
73
|
+
# Tasks parse the gemspec for metadata. Auto-discovery finds the single
|
|
74
|
+
# <tt>.gemspec</tt> file in the project root. Override via
|
|
75
|
+
# <tt>gemspec_file=</tt> for non-standard layouts.
|
|
76
|
+
def gemspec_file
|
|
77
|
+
@gemspec_file ||= discover_gemspec
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Returns the path to the version.rb file.
|
|
81
|
+
#
|
|
82
|
+
# Version bumping needs the version file location. Auto-discovery finds
|
|
83
|
+
# it in the standard <tt>lib/*/</tt> path. Override via
|
|
84
|
+
# <tt>version_file=</tt> for non-standard layouts.
|
|
85
|
+
def version_file
|
|
86
|
+
@version_file ||= discover_version_file
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Returns the path to the templates directory.
|
|
90
|
+
#
|
|
91
|
+
# Scaffolding commands copy files from templates. This method provides
|
|
92
|
+
# the absolute path regardless of caller location.
|
|
93
|
+
def templates_path
|
|
94
|
+
File.expand_path("devtools/templates", __dir__)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Returns the path to the tasks directory.
|
|
98
|
+
#
|
|
99
|
+
# Debug and introspection tools may need to list available tasks. This
|
|
100
|
+
# method provides the absolute path regardless of caller location.
|
|
101
|
+
def tasks_path
|
|
102
|
+
File.expand_path("devtools/tasks", __dir__)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
private def discover_gemspec
|
|
106
|
+
gemspecs = Dir.glob("*.gemspec")
|
|
107
|
+
raise Error, "No *.gemspec found in #{Dir.pwd}" if gemspecs.empty?
|
|
108
|
+
raise Error, "Multiple gemspecs found: #{gemspecs.join(', ')}" if gemspecs.size > 1
|
|
109
|
+
|
|
110
|
+
gemspecs.first
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
private def discover_gem_name
|
|
114
|
+
File.basename(gemspec_file, ".gemspec")
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
private def discover_version_file
|
|
118
|
+
# Convention: lib/gem_name/version.rb (with underscores for namespacing)
|
|
119
|
+
# e.g., ratatui_ruby-tea -> lib/ratatui_ruby/tea/version.rb
|
|
120
|
+
parts = gem_name.split("-")
|
|
121
|
+
if parts.size > 1
|
|
122
|
+
# ratatui_ruby-tea -> ratatui_ruby/tea
|
|
123
|
+
path = "lib/#{parts.first}/#{parts[1..].join('/')}/version.rb"
|
|
124
|
+
else
|
|
125
|
+
# ratatui_ruby -> ratatui_ruby
|
|
126
|
+
path = "lib/#{gem_name}/version.rb"
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
return path if File.exist?(path)
|
|
130
|
+
|
|
131
|
+
# Fallback: search for any version.rb in lib/
|
|
132
|
+
found = Dir.glob("lib/**/version.rb").first
|
|
133
|
+
found || path
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
data/mise.toml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
2
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
3
|
+
|
|
4
|
+
module RatatuiRuby
|
|
5
|
+
module Devtools
|
|
6
|
+
VERSION: String
|
|
7
|
+
|
|
8
|
+
class Error < StandardError
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.install!: () -> void
|
|
12
|
+
def self.templates_path: () -> String
|
|
13
|
+
def self.tasks_path: () -> String
|
|
14
|
+
end
|
|
15
|
+
end
|