ratatui_ruby-devtools 0.2.1 → 0.3.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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/AGENTS.md +1 -1
  4. data/CHANGELOG.md +53 -7
  5. data/README.md +49 -21
  6. data/Rakefile +1 -1
  7. data/bin/setup +20 -6
  8. data/bin/setup.ps1 +74 -0
  9. data/doc/contributors/documentation_style.md +3 -4
  10. data/exe/scaffold +8 -342
  11. data/lib/ratatui_ruby/devtools/scaffold/scaffold_config.rb +67 -0
  12. data/lib/ratatui_ruby/devtools/scaffold/template_renderer.rb +282 -0
  13. data/lib/ratatui_ruby/devtools/task_scope.rb +24 -0
  14. data/lib/ratatui_ruby/devtools/tasks/autodoc_tasks.rb +31 -0
  15. data/lib/ratatui_ruby/devtools/tasks/bump/bump_workflow.rb +71 -0
  16. data/lib/ratatui_ruby/devtools/tasks/bump/changelog.rb +60 -3
  17. data/lib/ratatui_ruby/devtools/tasks/bump/github_project.rb +26 -0
  18. data/lib/ratatui_ruby/devtools/tasks/bump/history.rb +3 -3
  19. data/lib/ratatui_ruby/devtools/tasks/bump/links.rb +39 -24
  20. data/lib/ratatui_ruby/devtools/tasks/bump/manifest.rb +9 -17
  21. data/lib/ratatui_ruby/devtools/tasks/bump/no_crate.rb +19 -0
  22. data/lib/ratatui_ruby/devtools/tasks/bump/no_links.rb +22 -0
  23. data/lib/ratatui_ruby/devtools/tasks/bump/patch_release.rb +25 -0
  24. data/lib/ratatui_ruby/devtools/tasks/bump/release_branch.rb +17 -0
  25. data/lib/ratatui_ruby/devtools/tasks/bump/release_from_trunk.rb +48 -0
  26. data/lib/ratatui_ruby/devtools/tasks/bump/repository.rb +143 -0
  27. data/lib/ratatui_ruby/devtools/tasks/bump/ruby_gem.rb +65 -59
  28. data/lib/ratatui_ruby/devtools/tasks/bump/rust_crate.rb +42 -0
  29. data/lib/ratatui_ruby/devtools/tasks/bump/sem_ver.rb +127 -10
  30. data/lib/ratatui_ruby/devtools/tasks/bump/source_hut_project.rb +26 -0
  31. data/lib/ratatui_ruby/devtools/tasks/bump/unbranched_release.rb +20 -0
  32. data/lib/ratatui_ruby/devtools/tasks/bump/unreleased_section.rb +19 -1
  33. data/lib/ratatui_ruby/devtools/tasks/bump_tasks.rb +47 -0
  34. data/lib/ratatui_ruby/devtools/tasks/cargo_tasks.rb +57 -0
  35. data/lib/ratatui_ruby/devtools/tasks/doc/documentation.rb +59 -0
  36. data/lib/ratatui_ruby/devtools/tasks/doc/link/file_url.rb +30 -0
  37. data/lib/ratatui_ruby/devtools/tasks/doc/link/relative_path.rb +61 -0
  38. data/lib/ratatui_ruby/devtools/tasks/doc/link/web_url.rb +55 -0
  39. data/lib/ratatui_ruby/devtools/tasks/doc/link.rb +52 -0
  40. data/lib/ratatui_ruby/devtools/tasks/doc/link_audit.rb +116 -0
  41. data/lib/ratatui_ruby/devtools/tasks/doc/problem.rb +40 -0
  42. data/lib/ratatui_ruby/devtools/tasks/doc/source_file.rb +93 -0
  43. data/lib/ratatui_ruby/devtools/tasks/doc_tasks.rb +937 -0
  44. data/lib/ratatui_ruby/devtools/tasks/license/blame.rb +72 -0
  45. data/lib/ratatui_ruby/devtools/tasks/license/changed_files.rb +34 -0
  46. data/lib/ratatui_ruby/devtools/tasks/license/contribution.rb +12 -0
  47. data/lib/ratatui_ruby/devtools/tasks/license/copyright.rb +47 -0
  48. data/lib/ratatui_ruby/devtools/tasks/license/directory_licensing.rb +42 -0
  49. data/lib/ratatui_ruby/devtools/tasks/license/existing_header.rb +21 -0
  50. data/lib/ratatui_ruby/devtools/tasks/license/header_revision.rb +45 -0
  51. data/lib/ratatui_ruby/devtools/tasks/license/licensed_file.rb +39 -0
  52. data/lib/ratatui_ruby/devtools/tasks/license/licensing.rb +35 -0
  53. data/lib/ratatui_ruby/devtools/tasks/license/markdown_document.rb +23 -0
  54. data/lib/ratatui_ruby/devtools/tasks/license/markdown_files.rb +31 -0
  55. data/lib/ratatui_ruby/devtools/tasks/license/markdown_header_syntax.rb +104 -0
  56. data/lib/ratatui_ruby/devtools/tasks/license/markdown_snippet_syntax.rb +159 -0
  57. data/lib/ratatui_ruby/devtools/tasks/license/missing_header.rb +18 -0
  58. data/lib/ratatui_ruby/devtools/tasks/license/rbs_files.rb +27 -0
  59. data/lib/ratatui_ruby/devtools/tasks/license/rbs_header_syntax.rb +31 -0
  60. data/lib/ratatui_ruby/devtools/tasks/license/rdoc_comment.rb +51 -0
  61. data/lib/ratatui_ruby/devtools/tasks/license/rdoc_examples.rb +41 -0
  62. data/lib/ratatui_ruby/devtools/tasks/license/rdoc_snippet_syntax.rb +119 -0
  63. data/lib/ratatui_ruby/devtools/tasks/license/renewal.rb +17 -0
  64. data/lib/ratatui_ruby/devtools/tasks/license/reuse_annotated_file.rb +12 -0
  65. data/lib/ratatui_ruby/devtools/tasks/license/reuse_tool.rb +34 -0
  66. data/lib/ratatui_ruby/devtools/tasks/license/ruby_comment_header.rb +49 -0
  67. data/lib/ratatui_ruby/devtools/tasks/license/ruby_files.rb +36 -0
  68. data/lib/ratatui_ruby/devtools/tasks/license/ruby_header_syntax.rb +39 -0
  69. data/lib/ratatui_ruby/devtools/tasks/license/rust_files.rb +27 -0
  70. data/lib/ratatui_ruby/devtools/tasks/license/rust_header_syntax.rb +59 -0
  71. data/lib/ratatui_ruby/devtools/tasks/license/snippet.rb +44 -0
  72. data/lib/ratatui_ruby/devtools/tasks/license/snippet_file.rb +29 -0
  73. data/lib/ratatui_ruby/devtools/tasks/license/snippet_opening.rb +39 -0
  74. data/lib/ratatui_ruby/devtools/tasks/license/snippet_revision.rb +75 -0
  75. data/lib/ratatui_ruby/devtools/tasks/license/spdx_header.rb +42 -0
  76. data/lib/ratatui_ruby/devtools/tasks/license/unknown_file.rb +12 -0
  77. data/lib/ratatui_ruby/devtools/tasks/license/unlicensed_files.rb +69 -0
  78. data/lib/ratatui_ruby/devtools/tasks/license/wrapped_snippet.rb +30 -0
  79. data/lib/ratatui_ruby/devtools/tasks/license_tasks.rb +71 -0
  80. data/lib/ratatui_ruby/devtools/tasks/lint/gem_lockfile.rb +29 -0
  81. data/lib/ratatui_ruby/devtools/tasks/lint/supported_rubies.rb +18 -0
  82. data/lib/ratatui_ruby/devtools/tasks/lint_tasks.rb +100 -0
  83. data/lib/ratatui_ruby/devtools/tasks/release/platform_gem.rb +21 -12
  84. data/lib/ratatui_ruby/devtools/tasks/release/versioned_binary.rb +1 -1
  85. data/lib/ratatui_ruby/devtools/tasks/release_tasks.rb +80 -0
  86. data/lib/ratatui_ruby/devtools/tasks/reuse_tasks.rb +39 -0
  87. data/lib/ratatui_ruby/devtools/tasks/{test.rake → test_tasks.rb} +13 -4
  88. data/lib/ratatui_ruby/devtools/tasks/website/hosted_source_tree.rb +24 -0
  89. data/lib/ratatui_ruby/devtools/tasks/website/index_page.rb +1 -4
  90. data/lib/ratatui_ruby/devtools/tasks/website/source_tree.rb +63 -0
  91. data/lib/ratatui_ruby/devtools/tasks/website/versioned_documentation.rb +14 -13
  92. data/lib/ratatui_ruby/devtools/tasks/website_tasks.rb +49 -0
  93. data/lib/ratatui_ruby/devtools/templates/.github/workflows/build-gems.yml.erb +7 -1
  94. data/lib/ratatui_ruby/devtools/templates/.github/workflows/ci.yml.erb +2 -2
  95. data/lib/ratatui_ruby/devtools/templates/.gitignore.erb +2 -1
  96. data/lib/ratatui_ruby/devtools/templates/.rubocop.yml.erb +1 -1
  97. data/lib/ratatui_ruby/devtools/templates/AGENTS.md.erb +1 -1
  98. data/lib/ratatui_ruby/devtools/templates/CHANGELOG.md.erb +3 -1
  99. data/lib/ratatui_ruby/devtools/templates/CONTRIBUTING.md.erb +3 -3
  100. data/lib/ratatui_ruby/devtools/templates/Gemfile.erb +2 -3
  101. data/lib/ratatui_ruby/devtools/templates/README.md.erb +7 -7
  102. data/lib/ratatui_ruby/devtools/templates/REUSE.toml.erb +1 -1
  103. data/lib/ratatui_ruby/devtools/templates/bin/setup.erb +5 -1
  104. data/lib/ratatui_ruby/devtools/templates/bin/setup.ps1.erb +5 -1
  105. data/lib/ratatui_ruby/devtools/templates/doc/concepts/application_architecture.md.erb +2 -2
  106. data/lib/ratatui_ruby/devtools/templates/doc/concepts/application_testing.md.erb +3 -3
  107. data/lib/ratatui_ruby/devtools/templates/doc/getting_started/quickstart.md.erb +4 -4
  108. data/lib/ratatui_ruby/devtools/templates/ext/Cargo.toml.erb +1 -1
  109. data/lib/ratatui_ruby/devtools/templates/gemspec.erb +1 -1
  110. data/lib/ratatui_ruby/devtools/templates/mise.toml.erb +3 -3
  111. data/lib/ratatui_ruby/devtools/version.rb +1 -1
  112. data/lib/ratatui_ruby/devtools.rb +54 -71
  113. data/mise.toml +2 -2
  114. data/sig/ratatui_ruby/devtools.rbs +16 -1
  115. metadata +93 -34
  116. data/.builds/ruby-4.0.yml +0 -38
  117. data/lib/ratatui_ruby/devtools/tasks/autodoc.rake +0 -21
  118. data/lib/ratatui_ruby/devtools/tasks/bump.rake +0 -80
  119. data/lib/ratatui_ruby/devtools/tasks/cargo.rake +0 -47
  120. data/lib/ratatui_ruby/devtools/tasks/doc.rake +0 -887
  121. data/lib/ratatui_ruby/devtools/tasks/license/headers_md.rb +0 -276
  122. data/lib/ratatui_ruby/devtools/tasks/license/headers_rb.rb +0 -236
  123. data/lib/ratatui_ruby/devtools/tasks/license/license_utils.rb +0 -143
  124. data/lib/ratatui_ruby/devtools/tasks/license/snippets_md.rb +0 -353
  125. data/lib/ratatui_ruby/devtools/tasks/license/snippets_rdoc.rb +0 -186
  126. data/lib/ratatui_ruby/devtools/tasks/license.rake +0 -91
  127. data/lib/ratatui_ruby/devtools/tasks/lint.rake +0 -80
  128. data/lib/ratatui_ruby/devtools/tasks/release.rake +0 -87
  129. data/lib/ratatui_ruby/devtools/tasks/resources/rubies.yml +0 -7
  130. data/lib/ratatui_ruby/devtools/tasks/reuse.rake +0 -104
  131. data/lib/ratatui_ruby/devtools/tasks/website.rake +0 -37
  132. data/lib/ratatui_ruby/devtools/templates/.builds/ruby.yml.erb +0 -47
  133. data/lib/ratatui_ruby/devtools/templates/tasks/resources/index.html.erb +0 -45
  134. data/lib/ratatui_ruby/devtools/templates/tasks/resources/rubies.yml.erb +0 -8
@@ -5,6 +5,19 @@
5
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
6
  #++
7
7
 
8
+ require_relative "devtools/task_scope"
9
+ require_relative "devtools/tasks/autodoc_tasks"
10
+ require_relative "devtools/tasks/bump/ruby_gem"
11
+ require_relative "devtools/tasks/bump_tasks"
12
+ require_relative "devtools/tasks/cargo_tasks"
13
+ require_relative "devtools/tasks/doc_tasks"
14
+ require_relative "devtools/tasks/license/licensing"
15
+ require_relative "devtools/tasks/license_tasks"
16
+ require_relative "devtools/tasks/lint_tasks"
17
+ require_relative "devtools/tasks/release_tasks"
18
+ require_relative "devtools/tasks/reuse_tasks"
19
+ require_relative "devtools/tasks/test_tasks"
20
+ require_relative "devtools/tasks/website_tasks"
8
21
  require_relative "devtools/version"
9
22
 
10
23
  # Root namespace for RatatuiRuby ecosystem gems.
@@ -37,21 +50,53 @@ module RatatuiRuby
37
50
  class Error < StandardError; end
38
51
 
39
52
  class << self
40
- # Configuration accessors - auto-discovered if not set
41
- attr_writer :gem_name, :gemspec_file, :version_file
42
-
43
53
  # Loads gem development Rake tasks (test, lint, bump, license, etc.)
44
54
  #
45
55
  # Use this in gem/library Rakefiles. These tasks help with version
46
56
  # management, testing, linting, and releasing gems.
47
57
  #
48
- # === Example
58
+ # The tasks find your gemspec, your gem's name, and its version file
59
+ # from your gem's files. Pass any of them when your gem keeps them
60
+ # elsewhere, and pass how to license the code apps don't link.
61
+ #
62
+ # [gemspec_file] Your gemspec, when your gem has more than one.
63
+ # [gem_name] Your gem's name, when it differs from your gemspec's.
64
+ # [version_file] The file that defines your gem's +VERSION+.
65
+ # [non_runtime_license] The license for code apps don't link: tests,
66
+ # tasks, scripts, type signatures, and examples.
67
+ # <tt>"AGPL-3.0-or-later"</tt> unless you pass another.
68
+ # [snippet_paths] Path prefixes for code licensed MIT-0, like the
69
+ # snippets in your docs. None unless you pass them.
70
+ #
71
+ # === Examples
49
72
  #
50
73
  # require "ratatui_ruby/devtools"
51
74
  # RatatuiRuby::Devtools.install_gem_tasks!
52
75
  #
53
- def install_gem_tasks!
54
- load_tasks_from("tasks")
76
+ # RatatuiRuby::Devtools.install_gem_tasks!(
77
+ # snippet_paths: %w[examples/widget_ examples/verify_],
78
+ # non_runtime_license: "LicenseRef-Commercial"
79
+ # )
80
+ #
81
+ def install_gem_tasks!(
82
+ gemspec_file: nil,
83
+ gem_name: nil,
84
+ version_file: nil,
85
+ non_runtime_license: "AGPL-3.0-or-later",
86
+ snippet_paths: []
87
+ )
88
+ AutodocTasks.new
89
+ CargoTasks.new
90
+ DocTasks.new
91
+ TestTasks.new
92
+ gem = RubyGem.found(gemspec_file:, name: gem_name, version_file:)
93
+ BumpTasks.new(gem)
94
+ ReleaseTasks.new(gem)
95
+ WebsiteTasks.new(gem)
96
+ LintTasks.new(gem)
97
+ licensing = Licensing.of(gem.spec, snippets: snippet_paths, non_runtime: non_runtime_license)
98
+ LicenseTasks.new(licensing)
99
+ ReuseTasks.new(licensing)
55
100
  end
56
101
 
57
102
  # Loads website hosting Rake tasks (build, serve, deploy).
@@ -59,8 +104,8 @@ module RatatuiRuby
59
104
  # Use this in website repository Rakefiles. These tasks help sync docs
60
105
  # from a source gem, update HTML metadata, and deploy.
61
106
  #
62
- # @param source_gem_dir [String] Path to the source gem directory
63
- # (e.g., "~/Developer/ratatui_ruby")
107
+ # [source_gem_dir] Path to the source gem's directory, such as
108
+ # <tt>"~/Developer/ratatui_ruby"</tt>.
64
109
  #
65
110
  # === Example
66
111
  #
@@ -81,38 +126,7 @@ module RatatuiRuby
81
126
  alias install! install_gem_tasks!
82
127
 
83
128
  private def load_tasks_from(subdir)
84
- tasks_dir = File.expand_path("devtools/#{subdir}", __dir__)
85
- Dir.glob("#{tasks_dir}/*.rake").each do |task_file|
86
- Rake.application.add_import(task_file)
87
- end
88
- Rake.application.load_imports
89
- end
90
-
91
- # Returns the gem name, auto-discovered from gemspec if not set.
92
- #
93
- # Tasks need to know which gem they're operating on. Auto-discovery from
94
- # gemspec files means zero configuration for standard layouts. Override
95
- # via <tt>gem_name=</tt> if needed.
96
- def gem_name
97
- @gem_name ||= discover_gem_name
98
- end
99
-
100
- # Returns the path to the gemspec file.
101
- #
102
- # Tasks parse the gemspec for metadata. Auto-discovery finds the single
103
- # <tt>.gemspec</tt> file in the project root. Override via
104
- # <tt>gemspec_file=</tt> for non-standard layouts.
105
- def gemspec_file
106
- @gemspec_file ||= discover_gemspec
107
- end
108
-
109
- # Returns the path to the version.rb file.
110
- #
111
- # Version bumping needs the version file location. Auto-discovery finds
112
- # it in the standard <tt>lib/*/</tt> path. Override via
113
- # <tt>version_file=</tt> for non-standard layouts.
114
- def version_file
115
- @version_file ||= discover_version_file
129
+ TaskScope.new.load(File.expand_path("devtools/#{subdir}", __dir__))
116
130
  end
117
131
 
118
132
  # Returns the path to the templates directory.
@@ -130,37 +144,6 @@ module RatatuiRuby
130
144
  def tasks_path
131
145
  File.expand_path("devtools/tasks", __dir__)
132
146
  end
133
-
134
- private def discover_gemspec
135
- gemspecs = Dir.glob("*.gemspec")
136
- raise Error, "No *.gemspec found in #{Dir.pwd}" if gemspecs.empty?
137
- raise Error, "Multiple gemspecs found: #{gemspecs.join(', ')}" if gemspecs.size > 1
138
-
139
- gemspecs.first
140
- end
141
-
142
- private def discover_gem_name
143
- File.basename(gemspec_file, ".gemspec")
144
- end
145
-
146
- private def discover_version_file
147
- # Convention: lib/gem_name/version.rb (with underscores for namespacing)
148
- # e.g., ratatui_ruby-kit -> lib/ratatui_ruby/kit/version.rb
149
- parts = gem_name.split("-")
150
- if parts.size > 1
151
- # ratatui_ruby-kit -> ratatui_ruby/kit
152
- path = "lib/#{parts.first}/#{parts[1..].join('/')}/version.rb"
153
- else
154
- # ratatui_ruby -> ratatui_ruby
155
- path = "lib/#{gem_name}/version.rb"
156
- end
157
-
158
- return path if File.exist?(path)
159
-
160
- # Fallback: search for any version.rb in lib/
161
- found = Dir.glob("lib/**/version.rb").first
162
- found || path
163
- end
164
147
  end
165
148
  end
166
149
  end
data/mise.toml CHANGED
@@ -2,6 +2,6 @@
2
2
  # SPDX-License-Identifier: AGPL-3.0-or-later
3
3
 
4
4
  [tools]
5
- ruby = "4.0.0"
5
+ ruby = "4.0.7"
6
6
  python = "3.12"
7
- pre-commit = "latest"
7
+ "pipx:pre-commit" = "latest"
@@ -8,7 +8,22 @@ module RatatuiRuby
8
8
  class Error < StandardError
9
9
  end
10
10
 
11
- def self.install!: () -> void
11
+ def self.install_gem_tasks!: (
12
+ ?gemspec_file: String?,
13
+ ?gem_name: String?,
14
+ ?version_file: String?,
15
+ ?non_runtime_license: String,
16
+ ?snippet_paths: Array[String]
17
+ ) -> void
18
+ def self.install!: (
19
+ ?gemspec_file: String?,
20
+ ?gem_name: String?,
21
+ ?version_file: String?,
22
+ ?non_runtime_license: String,
23
+ ?snippet_paths: Array[String]
24
+ ) -> void
25
+ def self.install_website_tasks!: (source_gem_dir: String) -> void
26
+ def self.source_gem_dir: () -> String?
12
27
  def self.templates_path: () -> String
13
28
  def self.tasks_path: () -> String
14
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratatui_ruby-devtools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kerrick Long
@@ -27,16 +27,22 @@ dependencies:
27
27
  name: minitest
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - "~>"
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '5.16'
33
+ - - "<"
31
34
  - !ruby/object:Gem::Version
32
- version: '5.0'
35
+ version: '7'
33
36
  type: :runtime
34
37
  prerelease: false
35
38
  version_requirements: !ruby/object:Gem::Requirement
36
39
  requirements:
37
- - - "~>"
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '5.16'
43
+ - - "<"
38
44
  - !ruby/object:Gem::Version
39
- version: '5.0'
45
+ version: '7'
40
46
  - !ruby/object:Gem::Dependency
41
47
  name: nokogiri
42
48
  requirement: !ruby/object:Gem::Requirement
@@ -85,14 +91,14 @@ dependencies:
85
91
  requirements:
86
92
  - - ">="
87
93
  - !ruby/object:Gem::Version
88
- version: '7.0'
94
+ version: '8.1'
89
95
  type: :runtime
90
96
  prerelease: false
91
97
  version_requirements: !ruby/object:Gem::Requirement
92
98
  requirements:
93
99
  - - ">="
94
100
  - !ruby/object:Gem::Version
95
- version: '7.0'
101
+ version: '8.1'
96
102
  - !ruby/object:Gem::Dependency
97
103
  name: rubocop
98
104
  requirement: !ruby/object:Gem::Requirement
@@ -134,7 +140,6 @@ executables:
134
140
  extensions: []
135
141
  extra_rdoc_files: []
136
142
  files:
137
- - ".builds/ruby-4.0.yml"
138
143
  - ".pre-commit-config.yaml"
139
144
  - ".rubocop.yml"
140
145
  - AGENTS.md
@@ -155,6 +160,7 @@ files:
155
160
  - bin/consolidate_md
156
161
  - bin/hbs
157
162
  - bin/setup
163
+ - bin/setup.ps1
158
164
  - doc/contributors/documentation_style.md
159
165
  - doc/custom.css
160
166
  - exe/agent_rake
@@ -163,51 +169,105 @@ files:
163
169
  - exe/hbs
164
170
  - exe/scaffold
165
171
  - lib/ratatui_ruby/devtools.rb
172
+ - lib/ratatui_ruby/devtools/scaffold/scaffold_config.rb
173
+ - lib/ratatui_ruby/devtools/scaffold/template_renderer.rb
166
174
  - lib/ratatui_ruby/devtools/site_tasks/build.rake
167
175
  - lib/ratatui_ruby/devtools/site_tasks/deploy.rake
168
176
  - lib/ratatui_ruby/devtools/site_tasks/serve.rake
169
- - lib/ratatui_ruby/devtools/tasks/autodoc.rake
177
+ - lib/ratatui_ruby/devtools/task_scope.rb
170
178
  - lib/ratatui_ruby/devtools/tasks/autodoc/examples.rb
171
179
  - lib/ratatui_ruby/devtools/tasks/autodoc/member.rb
172
180
  - lib/ratatui_ruby/devtools/tasks/autodoc/name.rb
173
- - lib/ratatui_ruby/devtools/tasks/bump.rake
181
+ - lib/ratatui_ruby/devtools/tasks/autodoc_tasks.rb
182
+ - lib/ratatui_ruby/devtools/tasks/bump/bump_workflow.rb
174
183
  - lib/ratatui_ruby/devtools/tasks/bump/cargo_lockfile.rb
175
184
  - lib/ratatui_ruby/devtools/tasks/bump/changelog.rb
185
+ - lib/ratatui_ruby/devtools/tasks/bump/github_project.rb
176
186
  - lib/ratatui_ruby/devtools/tasks/bump/header.rb
177
187
  - lib/ratatui_ruby/devtools/tasks/bump/history.rb
178
188
  - lib/ratatui_ruby/devtools/tasks/bump/links.rb
179
189
  - lib/ratatui_ruby/devtools/tasks/bump/manifest.rb
190
+ - lib/ratatui_ruby/devtools/tasks/bump/no_crate.rb
191
+ - lib/ratatui_ruby/devtools/tasks/bump/no_links.rb
192
+ - lib/ratatui_ruby/devtools/tasks/bump/patch_release.rb
193
+ - lib/ratatui_ruby/devtools/tasks/bump/release_branch.rb
194
+ - lib/ratatui_ruby/devtools/tasks/bump/release_from_trunk.rb
195
+ - lib/ratatui_ruby/devtools/tasks/bump/repository.rb
180
196
  - lib/ratatui_ruby/devtools/tasks/bump/ruby_gem.rb
197
+ - lib/ratatui_ruby/devtools/tasks/bump/rust_crate.rb
181
198
  - lib/ratatui_ruby/devtools/tasks/bump/sem_ver.rb
199
+ - lib/ratatui_ruby/devtools/tasks/bump/source_hut_project.rb
200
+ - lib/ratatui_ruby/devtools/tasks/bump/unbranched_release.rb
182
201
  - lib/ratatui_ruby/devtools/tasks/bump/unreleased_section.rb
183
- - lib/ratatui_ruby/devtools/tasks/cargo.rake
184
- - lib/ratatui_ruby/devtools/tasks/doc.rake
202
+ - lib/ratatui_ruby/devtools/tasks/bump_tasks.rb
203
+ - lib/ratatui_ruby/devtools/tasks/cargo_tasks.rb
204
+ - lib/ratatui_ruby/devtools/tasks/doc/documentation.rb
205
+ - lib/ratatui_ruby/devtools/tasks/doc/link.rb
206
+ - lib/ratatui_ruby/devtools/tasks/doc/link/file_url.rb
207
+ - lib/ratatui_ruby/devtools/tasks/doc/link/relative_path.rb
208
+ - lib/ratatui_ruby/devtools/tasks/doc/link/web_url.rb
209
+ - lib/ratatui_ruby/devtools/tasks/doc/link_audit.rb
210
+ - lib/ratatui_ruby/devtools/tasks/doc/problem.rb
211
+ - lib/ratatui_ruby/devtools/tasks/doc/source_file.rb
212
+ - lib/ratatui_ruby/devtools/tasks/doc_tasks.rb
185
213
  - lib/ratatui_ruby/devtools/tasks/example_viewer.html.erb
186
- - lib/ratatui_ruby/devtools/tasks/license.rake
187
- - lib/ratatui_ruby/devtools/tasks/license/headers_md.rb
188
- - lib/ratatui_ruby/devtools/tasks/license/headers_rb.rb
189
- - lib/ratatui_ruby/devtools/tasks/license/license_utils.rb
190
- - lib/ratatui_ruby/devtools/tasks/license/snippets_md.rb
191
- - lib/ratatui_ruby/devtools/tasks/license/snippets_rdoc.rb
192
- - lib/ratatui_ruby/devtools/tasks/lint.rake
214
+ - lib/ratatui_ruby/devtools/tasks/license/blame.rb
215
+ - lib/ratatui_ruby/devtools/tasks/license/changed_files.rb
216
+ - lib/ratatui_ruby/devtools/tasks/license/contribution.rb
217
+ - lib/ratatui_ruby/devtools/tasks/license/copyright.rb
218
+ - lib/ratatui_ruby/devtools/tasks/license/directory_licensing.rb
219
+ - lib/ratatui_ruby/devtools/tasks/license/existing_header.rb
220
+ - lib/ratatui_ruby/devtools/tasks/license/header_revision.rb
221
+ - lib/ratatui_ruby/devtools/tasks/license/licensed_file.rb
222
+ - lib/ratatui_ruby/devtools/tasks/license/licensing.rb
223
+ - lib/ratatui_ruby/devtools/tasks/license/markdown_document.rb
224
+ - lib/ratatui_ruby/devtools/tasks/license/markdown_files.rb
225
+ - lib/ratatui_ruby/devtools/tasks/license/markdown_header_syntax.rb
226
+ - lib/ratatui_ruby/devtools/tasks/license/markdown_snippet_syntax.rb
227
+ - lib/ratatui_ruby/devtools/tasks/license/missing_header.rb
228
+ - lib/ratatui_ruby/devtools/tasks/license/rbs_files.rb
229
+ - lib/ratatui_ruby/devtools/tasks/license/rbs_header_syntax.rb
230
+ - lib/ratatui_ruby/devtools/tasks/license/rdoc_comment.rb
231
+ - lib/ratatui_ruby/devtools/tasks/license/rdoc_examples.rb
232
+ - lib/ratatui_ruby/devtools/tasks/license/rdoc_snippet_syntax.rb
233
+ - lib/ratatui_ruby/devtools/tasks/license/renewal.rb
234
+ - lib/ratatui_ruby/devtools/tasks/license/reuse_annotated_file.rb
235
+ - lib/ratatui_ruby/devtools/tasks/license/reuse_tool.rb
236
+ - lib/ratatui_ruby/devtools/tasks/license/ruby_comment_header.rb
237
+ - lib/ratatui_ruby/devtools/tasks/license/ruby_files.rb
238
+ - lib/ratatui_ruby/devtools/tasks/license/ruby_header_syntax.rb
239
+ - lib/ratatui_ruby/devtools/tasks/license/rust_files.rb
240
+ - lib/ratatui_ruby/devtools/tasks/license/rust_header_syntax.rb
241
+ - lib/ratatui_ruby/devtools/tasks/license/snippet.rb
242
+ - lib/ratatui_ruby/devtools/tasks/license/snippet_file.rb
243
+ - lib/ratatui_ruby/devtools/tasks/license/snippet_opening.rb
244
+ - lib/ratatui_ruby/devtools/tasks/license/snippet_revision.rb
245
+ - lib/ratatui_ruby/devtools/tasks/license/spdx_header.rb
246
+ - lib/ratatui_ruby/devtools/tasks/license/unknown_file.rb
247
+ - lib/ratatui_ruby/devtools/tasks/license/unlicensed_files.rb
248
+ - lib/ratatui_ruby/devtools/tasks/license/wrapped_snippet.rb
249
+ - lib/ratatui_ruby/devtools/tasks/license_tasks.rb
250
+ - lib/ratatui_ruby/devtools/tasks/lint/gem_lockfile.rb
251
+ - lib/ratatui_ruby/devtools/tasks/lint/supported_rubies.rb
252
+ - lib/ratatui_ruby/devtools/tasks/lint_tasks.rb
193
253
  - lib/ratatui_ruby/devtools/tasks/rdoc_config.rb
194
- - lib/ratatui_ruby/devtools/tasks/release.rake
195
254
  - lib/ratatui_ruby/devtools/tasks/release/ci_run.rb
196
255
  - lib/ratatui_ruby/devtools/tasks/release/github_cli.rb
197
256
  - lib/ratatui_ruby/devtools/tasks/release/native_gem_version.rb
198
257
  - lib/ratatui_ruby/devtools/tasks/release/platform_gem.rb
199
258
  - lib/ratatui_ruby/devtools/tasks/release/versioned_binary.rb
259
+ - lib/ratatui_ruby/devtools/tasks/release_tasks.rb
200
260
  - lib/ratatui_ruby/devtools/tasks/resources/index.html.erb
201
- - lib/ratatui_ruby/devtools/tasks/resources/rubies.yml
202
- - lib/ratatui_ruby/devtools/tasks/reuse.rake
203
- - lib/ratatui_ruby/devtools/tasks/test.rake
204
- - lib/ratatui_ruby/devtools/tasks/website.rake
261
+ - lib/ratatui_ruby/devtools/tasks/reuse_tasks.rb
262
+ - lib/ratatui_ruby/devtools/tasks/test_tasks.rb
263
+ - lib/ratatui_ruby/devtools/tasks/website/hosted_source_tree.rb
205
264
  - lib/ratatui_ruby/devtools/tasks/website/index_page.rb
265
+ - lib/ratatui_ruby/devtools/tasks/website/source_tree.rb
206
266
  - lib/ratatui_ruby/devtools/tasks/website/version.rb
207
267
  - lib/ratatui_ruby/devtools/tasks/website/version_menu.rb
208
268
  - lib/ratatui_ruby/devtools/tasks/website/versioned_documentation.rb
209
269
  - lib/ratatui_ruby/devtools/tasks/website/website.rb
210
- - lib/ratatui_ruby/devtools/templates/.builds/ruby.yml.erb
270
+ - lib/ratatui_ruby/devtools/tasks/website_tasks.rb
211
271
  - lib/ratatui_ruby/devtools/templates/.github/workflows/build-gems.yml.erb
212
272
  - lib/ratatui_ruby/devtools/templates/.github/workflows/ci.yml.erb
213
273
  - lib/ratatui_ruby/devtools/templates/.gitignore.erb
@@ -244,22 +304,21 @@ files:
244
304
  - lib/ratatui_ruby/devtools/templates/lib/version.rb.erb
245
305
  - lib/ratatui_ruby/devtools/templates/mise.toml.erb
246
306
  - lib/ratatui_ruby/devtools/templates/tasks/example_viewer.html.erb
247
- - lib/ratatui_ruby/devtools/templates/tasks/resources/index.html.erb
248
- - lib/ratatui_ruby/devtools/templates/tasks/resources/rubies.yml.erb
249
307
  - lib/ratatui_ruby/devtools/templates/test/test_helper.rb.erb
250
308
  - lib/ratatui_ruby/devtools/version.rb
251
309
  - mise.toml
252
310
  - sig/ratatui_ruby/devtools.rbs
253
311
  - vendor/goodcop/base.yml
254
- homepage: https://sr.ht/~kerrick/ratatui_ruby/
312
+ homepage: https://github.com/setdef/ratatui_ruby-devtools
255
313
  licenses:
256
314
  - AGPL-3.0-or-later
257
315
  metadata:
258
316
  allowed_push_host: https://rubygems.org
259
- homepage_uri: https://sr.ht/~kerrick/ratatui_ruby/
260
- bug_tracker_uri: https://todo.sr.ht/~kerrick/ratatui_ruby
261
- mailing_list_uri: https://lists.sr.ht/~kerrick/ratatui_ruby-discuss
262
- source_code_uri: https://git.sr.ht/~kerrick/ratatui_ruby-devtools
317
+ homepage_uri: https://github.com/setdef/ratatui_ruby-devtools
318
+ bug_tracker_uri: https://github.com/setdef/ratatui_ruby-devtools/issues
319
+ changelog_uri: https://github.com/setdef/ratatui_ruby-devtools/blob/stable/CHANGELOG.md
320
+ source_code_uri: https://github.com/setdef/ratatui_ruby-devtools
321
+ wiki_uri: https://man.sr.ht/~kerrick/ratatui_ruby/
263
322
  rubygems_mfa_required: 'true'
264
323
  rdoc_options: []
265
324
  require_paths:
@@ -268,14 +327,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
268
327
  requirements:
269
328
  - - ">="
270
329
  - !ruby/object:Gem::Version
271
- version: 3.2.0
330
+ version: 3.3.11
272
331
  required_rubygems_version: !ruby/object:Gem::Requirement
273
332
  requirements:
274
333
  - - ">="
275
334
  - !ruby/object:Gem::Version
276
335
  version: '0'
277
336
  requirements: []
278
- rubygems_version: 4.0.3
337
+ rubygems_version: 4.0.20
279
338
  specification_version: 4
280
339
  summary: Development tooling for the RatatuiRuby ecosystem.
281
340
  test_files: []
data/.builds/ruby-4.0.yml DELETED
@@ -1,38 +0,0 @@
1
- # SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
2
- # SPDX-License-Identifier: AGPL-3.0-or-later
3
-
4
- image: archlinux
5
- packages:
6
- - bash
7
- - base-devel
8
- - curl
9
- - openssl
10
- - libyaml
11
- - zlib
12
- - readline
13
- - gdbm
14
- - ncurses
15
- - libffi
16
- - git
17
- sources:
18
- - https://git.sr.ht/~kerrick/ratatui_ruby-devtools
19
- tasks:
20
- - setup: |
21
- curl https://mise.jdx.dev/install.sh | sh
22
- echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.buildenv
23
- echo 'eval "$($HOME/.local/bin/mise activate bash)"' >> ~/.buildenv
24
- echo 'export LANG="en_US.UTF-8"' >> ~/.buildenv
25
- echo 'export LC_ALL="en_US.UTF-8"' >> ~/.buildenv
26
- . ~/.buildenv
27
- export CI="true"
28
- cd ratatui_ruby-devtools
29
- mise install
30
- mise x -- pip install reuse
31
- mise x -- gem install bundler:4.0.3
32
- mise reshim
33
- mise x -- bundle config set --local frozen 'true'
34
- mise x -- bundle install
35
- - lint: |
36
- . ~/.buildenv
37
- cd ratatui_ruby-devtools
38
- mise x -- bundle exec rake
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- #--
4
- # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
5
- # SPDX-License-Identifier: AGPL-3.0-or-later
6
- #++
7
-
8
- require_relative "autodoc/examples"
9
-
10
- namespace :autodoc do
11
- desc "Update all automatically generated documentation"
12
- task all: [:examples]
13
-
14
- desc "Sync code snippets in example READMEs with source files"
15
- task :examples do
16
- Autodoc::Examples.sync
17
- end
18
- end
19
-
20
- desc "Update all automatically generated documentation"
21
- task autodoc: "autodoc:all"
@@ -1,80 +0,0 @@
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 "rubygems"
9
-
10
- require_relative "bump/sem_ver"
11
- require_relative "bump/manifest"
12
- require_relative "bump/cargo_lockfile"
13
- require_relative "bump/ruby_gem"
14
- require_relative "bump/changelog"
15
-
16
- # Null lockfile for gems without Rust
17
- class NullLockfile
18
- def refresh
19
- # No-op
20
- end
21
- end
22
-
23
- namespace :bump do
24
- # Auto-discover gem configuration
25
- def devtools_gem
26
- @devtools_gem ||= begin
27
- version_file = RatatuiRuby::Devtools.version_file
28
- gem_name = RatatuiRuby::Devtools.gem_name
29
-
30
- manifests = [
31
- Manifest.new(
32
- path: version_file,
33
- pattern: /(?<=VERSION = ")[^"]+(?=")/,
34
- primary: true
35
- ),
36
- ]
37
-
38
- # Optionally add Cargo.toml if this gem has Rust extensions
39
- cargo_toml = "ext/#{gem_name}/Cargo.toml"
40
- if File.exist?(cargo_toml)
41
- manifests << Manifest.new(
42
- path: cargo_toml,
43
- pattern: /(?<=^version = ")[^"]+(?=")/,
44
- primary: false
45
- )
46
- end
47
-
48
- # Optionally use Cargo lockfile if it exists
49
- cargo_lock = "ext/#{gem_name}/Cargo.lock"
50
- lockfile = if File.exist?(cargo_lock)
51
- CargoLockfile.new(
52
- path: cargo_lock,
53
- dir: "ext/#{gem_name}",
54
- name: gem_name
55
- )
56
- else
57
- # No-op lockfile for pure Ruby gems
58
- NullLockfile.new
59
- end
60
-
61
- RubyGem.new(
62
- manifests:,
63
- lockfile:,
64
- changelog: Changelog.new
65
- )
66
- end
67
- end
68
-
69
- SemVer::SEGMENTS.each do |segment|
70
- desc "Bump #{segment} version"
71
- task segment do
72
- devtools_gem.bump(segment)
73
- end
74
- end
75
-
76
- desc "Set exact version (e.g. rake bump:exact[0.1.0])"
77
- task :exact, [:version] do |_, args|
78
- devtools_gem.set(args[:version])
79
- end
80
- end
@@ -1,47 +0,0 @@
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
- # Cargo tasks for Rust extensions.
9
- # Only registered if ext/ directory exists.
10
-
11
- if Dir.exist?("ext")
12
- namespace :cargo do
13
- desc "Run cargo fmt"
14
- task :fmt do
15
- ext_dirs = Dir.glob("ext/*").select { |d| File.directory?(d) && File.exist?("#{d}/Cargo.toml") }
16
- ext_dirs.each do |dir|
17
- sh "cd #{dir} && cargo fmt --all -- --check"
18
- end
19
- end
20
-
21
- desc "Run cargo clippy"
22
- task :clippy do
23
- ext_dirs = Dir.glob("ext/*").select { |d| File.directory?(d) && File.exist?("#{d}/Cargo.toml") }
24
- ext_dirs.each do |dir|
25
- sh "cd #{dir} && cargo clippy -- -D warnings"
26
- end
27
- end
28
-
29
- desc "Run cargo test"
30
- task :test do
31
- ext_dirs = Dir.glob("ext/*").select { |d| File.directory?(d) && File.exist?("#{d}/Cargo.toml") }
32
- ext_dirs.each do |dir|
33
- sh "cd #{dir} && cargo test"
34
- end
35
- end
36
-
37
- namespace :fix do
38
- desc "Auto-fix Clippy warnings (most aggressive)"
39
- task :clippy do
40
- ext_dirs = Dir.glob("ext/*").select { |d| File.directory?(d) && File.exist?("#{d}/Cargo.toml") }
41
- ext_dirs.each do |dir|
42
- sh "cd #{dir} && cargo clippy --fix --allow-dirty --allow-staged"
43
- end
44
- end
45
- end
46
- end
47
- end