ratatui_ruby-devtools 0.1.3 → 0.2.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/LICENSES/BSD-2-Clause.txt +9 -0
  4. data/README.md +1 -1
  5. data/exe/hbs +149 -209
  6. data/exe/scaffold +169 -282
  7. data/lib/ratatui_ruby/devtools/tasks/lint.rake +3 -7
  8. data/lib/ratatui_ruby/devtools/tasks/release/ci_run.rb +44 -0
  9. data/lib/ratatui_ruby/devtools/tasks/release/github_cli.rb +36 -0
  10. data/lib/ratatui_ruby/devtools/tasks/release/native_gem_version.rb +70 -0
  11. data/lib/ratatui_ruby/devtools/tasks/release/platform_gem.rb +63 -0
  12. data/lib/ratatui_ruby/devtools/tasks/release/versioned_binary.rb +36 -0
  13. data/lib/ratatui_ruby/devtools/tasks/release.rake +87 -0
  14. data/lib/ratatui_ruby/devtools/tasks/resources/rubies.yml +1 -1
  15. data/lib/ratatui_ruby/devtools/templates/.github/workflows/build-gems.yml.erb +124 -0
  16. data/lib/ratatui_ruby/devtools/templates/.github/workflows/ci.yml.erb +77 -0
  17. data/lib/ratatui_ruby/devtools/templates/.gitignore.erb +2 -0
  18. data/lib/ratatui_ruby/devtools/templates/.rubocop.yml.erb +6 -4
  19. data/lib/ratatui_ruby/devtools/templates/AGENTS.md.erb +101 -28
  20. data/lib/ratatui_ruby/devtools/templates/CODE_OF_CONDUCT.md.erb +44 -0
  21. data/lib/ratatui_ruby/devtools/templates/CONTRIBUTING.md.erb +80 -0
  22. data/lib/ratatui_ruby/devtools/templates/Gemfile.erb +2 -2
  23. data/lib/ratatui_ruby/devtools/templates/README.md.erb +46 -13
  24. data/lib/ratatui_ruby/devtools/templates/REUSE.toml.erb +2 -2
  25. data/lib/ratatui_ruby/devtools/templates/Rakefile.erb +4 -4
  26. data/lib/ratatui_ruby/devtools/templates/bin/setup.erb +21 -11
  27. data/lib/ratatui_ruby/devtools/templates/bin/setup.ps1.erb +105 -0
  28. data/lib/ratatui_ruby/devtools/templates/doc/custom.css.erb +3 -3
  29. data/lib/ratatui_ruby/devtools/templates/doc/getting_started/quickstart.md.erb +3 -3
  30. data/lib/ratatui_ruby/devtools/templates/doc/index.md.erb +2 -2
  31. data/lib/ratatui_ruby/devtools/templates/ext/.cargo/config.toml.erb +15 -0
  32. data/lib/ratatui_ruby/devtools/templates/ext/.gitignore.erb +6 -0
  33. data/lib/ratatui_ruby/devtools/templates/ext/Cargo.toml.erb +20 -0
  34. data/lib/ratatui_ruby/devtools/templates/ext/clippy.toml.erb +9 -0
  35. data/lib/ratatui_ruby/devtools/templates/ext/extconf.rb.erb +23 -0
  36. data/lib/ratatui_ruby/devtools/templates/ext/src/lib.rs.erb +13 -0
  37. data/lib/ratatui_ruby/devtools/templates/gemspec.erb +21 -14
  38. data/lib/ratatui_ruby/devtools/templates/lib/main.rb.erb +19 -0
  39. data/lib/ratatui_ruby/devtools/templates/lib/test_helper.rb.erb +26 -0
  40. data/lib/ratatui_ruby/devtools/templates/lib/version.rb.erb +10 -0
  41. data/lib/ratatui_ruby/devtools/templates/mise.toml.erb +3 -3
  42. data/lib/ratatui_ruby/devtools/templates/tasks/example_viewer.html.erb +23 -23
  43. data/lib/ratatui_ruby/devtools/templates/tasks/resources/index.html.erb +15 -16
  44. data/lib/ratatui_ruby/devtools/templates/tasks/resources/rubies.yml.erb +5 -6
  45. data/lib/ratatui_ruby/devtools/templates/test/test_helper.rb.erb +15 -0
  46. data/lib/ratatui_ruby/devtools/version.rb +1 -1
  47. data/lib/ratatui_ruby/devtools.rb +2 -2
  48. metadata +24 -5
  49. data/lib/ratatui_ruby/devtools/tasks/resources/build.yml.erb +0 -54
  50. data/lib/ratatui_ruby/devtools/tasks/sourcehut.rake +0 -94
  51. data/lib/ratatui_ruby/devtools/templates/tasks/resources/build.yml.erb +0 -62
  52. /data/lib/ratatui_ruby/devtools/templates/{vendor/goodcop/base.yml → lib/rubocop.yml} +0 -0
@@ -11,7 +11,7 @@
11
11
 
12
12
  ### Getting Started
13
13
 
14
- - [Why RatatuiRuby?](https://man.sr.ht/~kerrick/ratatui_ruby/why.md): Philosophy, comparisons, and what makes us different
14
+ - [Why RatatuiRuby?](https://www.ratatui-ruby.dev/docs/trunk/doc/getting_started/why_md.html): Philosophy, comparisons, and what makes us different
15
15
  - [Quickstart](./getting_started/quickstart.md): Build your first TUI app
16
16
 
17
17
  ### Concepts
@@ -22,4 +22,4 @@
22
22
 
23
23
  ## Documentation for Contributors
24
24
 
25
- - [Contributing Guidelines](https://man.sr.ht/~kerrick/ratatui_ruby/contributing.md): How to contribute patches and features
25
+ - [Contributing Guidelines](./CONTRIBUTING.md): How to contribute patches and features
@@ -0,0 +1,15 @@
1
+ <%# REUSE-IgnoreStart -%>
2
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
3
+ # SPDX-License-Identifier: <%= license %>
4
+ <%# REUSE-IgnoreEnd -%>
5
+
6
+ [target.aarch64-apple-darwin]
7
+ rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]
8
+
9
+ [target.x86_64-apple-darwin]
10
+ rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]
11
+
12
+ # Force dynamic linking on Alpine (musl) to fix "Dynamic loading not supported"
13
+ # errors when bindgen tries to load libclang.
14
+ [target.'cfg(target_env = "musl")']
15
+ rustflags = ["-C", "target-feature=-crt-static"]
@@ -0,0 +1,6 @@
1
+ <%# REUSE-IgnoreStart -%>
2
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
3
+ # SPDX-License-Identifier: <%= license %>
4
+ <%# REUSE-IgnoreEnd -%>
5
+
6
+ /target/
@@ -0,0 +1,20 @@
1
+ <%# REUSE-IgnoreStart -%>
2
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
3
+ # SPDX-License-Identifier: <%= license %>
4
+ <%# REUSE-IgnoreEnd -%>
5
+
6
+ [package]
7
+ name = "<%= ext_name %>"
8
+ version = "0.1.0"
9
+ edition = "2021"
10
+
11
+ [lib]
12
+ crate-type = ["cdylib", "staticlib"]
13
+
14
+ [dependencies]
15
+ magnus = "0.8"
16
+ ratatui = { version = "0.30", features = ["widget-calendar", "layout-cache", "unstable-rendered-line-info"] }
17
+
18
+ # Optional: Arena allocation to avoid Box::leak for long-lived Ruby objects
19
+ # bumpalo = "3.16"
20
+ # lazy_static = "1.4"
@@ -0,0 +1,9 @@
1
+ <%# REUSE-IgnoreStart -%>
2
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
3
+ # SPDX-License-Identifier: <%= license %>
4
+ <%# REUSE-IgnoreEnd -%>
5
+
6
+ disallowed-methods = [
7
+ { path = "std::boxed::Box::leak", reason = "Use bumpalo arena allocation instead." },
8
+ { path = "std::vec::Vec::leak", reason = "Use bumpalo arena allocation instead." },
9
+ ]
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ #--
4
+ <%# REUSE-IgnoreStart -%>
5
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
6
+ # SPDX-License-Identifier: <%= license %>
7
+ <%# REUSE-IgnoreEnd -%>
8
+ #++
9
+
10
+ require "mkmf"
11
+ require "rb_sys/mkmf"
12
+
13
+ create_rust_makefile("<%= ext_name %>/<%= ext_name %>") do |r|
14
+ # Optional: Force release profile if needed
15
+ # r.profile = ENV.fetch("RB_SYS_CARGO_PROFILE", :release).to_sym
16
+
17
+ # Force static linking on musl to avoid "cdylib" issues
18
+ if RbConfig::CONFIG["target_os"].include?("linux-musl") || RbConfig::CONFIG["host_os"].include?("linux-musl")
19
+ r.extra_rustc_args = ["--crate-type", "staticlib"]
20
+ else
21
+ r.extra_rustc_args = ["--crate-type", "cdylib"]
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ <%# REUSE-IgnoreStart -%>
2
+ // SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
3
+ // SPDX-License-Identifier: <%= license %>
4
+ <%# REUSE-IgnoreEnd -%>
5
+
6
+ use magnus::{define_module, prelude::*, Error};
7
+
8
+ #[magnus::init]
9
+ fn init() -> Result<(), Error> {
10
+ let module = define_module("<%= module_name.split('::').first %>")?;
11
+ // Add your native methods here
12
+ Ok(())
13
+ }
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #--
4
+ <%# REUSE-IgnoreStart -%>
4
5
  # SPDX-FileCopyrightText: <%= Time.now.year %> <%= copyright_holder %>
5
- # REUSE-IgnoreStart
6
6
  # SPDX-License-Identifier: <%= license %>
7
- # REUSE-IgnoreEnd
7
+ <%# REUSE-IgnoreEnd -%>
8
8
  #++
9
9
 
10
10
  require_relative "<%= version_file_require %>"
@@ -17,26 +17,29 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.summary = "<%= summary %>"
19
19
  spec.description = "<%= description %>"
20
- spec.homepage = "https://sr.ht/~kerrick/ratatui_ruby/"
20
+ spec.homepage = "https://TODO.example.com"
21
21
  spec.license = "<%= license %>"
22
22
  spec.required_ruby_version = [">= 3.2.9", "< 5"]
23
23
 
24
24
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
25
25
  spec.metadata["homepage_uri"] = spec.homepage
26
- spec.metadata["bug_tracker_uri"] = "https://todo.sr.ht/~kerrick/ratatui_ruby"
27
- spec.metadata["mailing_list_uri"] = "https://lists.sr.ht/~kerrick/ratatui_ruby-discuss"
28
- spec.metadata["source_code_uri"] = "https://git.sr.ht/~kerrick/<%= gem_name %>"
29
- spec.metadata["changelog_uri"] = "https://git.sr.ht/~kerrick/<%= gem_name %>/tree/stable/item/CHANGELOG.md"
30
- spec.metadata["documentation_uri"] = "https://git.sr.ht/~kerrick/<%= gem_name %>/tree/HEAD/doc/index.md"
31
- spec.metadata["wiki_uri"] = "https://man.sr.ht/~kerrick/ratatui_ruby/"
32
- spec.metadata["funding_uri"] = "https://opencollective.com/ratatui" # Don't fund me, fund the upstream project.
26
+ spec.metadata["bug_tracker_uri"] = "https://forum.setdef.com/tags/c/<%= gem_name.tr('_', '-') %>/bug"
27
+ spec.metadata["mailing_list_uri"] = "https://forum.setdef.com/c/<%= gem_name.tr('_', '-') %>"
28
+ spec.metadata["source_code_uri"] = "https://github.com/<%= github_repo %>"
29
+ spec.metadata["changelog_uri"] = "https://TODO.example.com/docs/trunk/CHANGELOG_md.html"
30
+ spec.metadata["documentation_uri"] = "https://TODO.example.com/docs/"
33
31
  spec.metadata["rubygems_mfa_required"] = "true"
34
32
 
35
33
  gemspec = File.basename(__FILE__)
34
+ root_allowlist = %w[LICENSE REUSE.toml]
35
+ dir_denylist = %w[bin/ test/ spec/ features/ doc/ examples/ tasks/ .git .github appveyor Gemfile]
36
+
36
37
  spec.files = IO.popen(%w[git ls-files -z], chdir: __dir__, err: IO::NULL) do |ls|
37
- ls.readlines("\x0", chomp: true).reject do |f|
38
- (f == gemspec) ||
39
- f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile])
38
+ ls.readlines("\x0", chomp: true).select do |f|
39
+ next false if f == gemspec
40
+ next true if root_allowlist.include?(f)
41
+ next false unless f.include?("/")
42
+ !f.start_with?(*dir_denylist)
40
43
  end
41
44
  end
42
45
  spec.bindir = "exe"
@@ -49,9 +52,13 @@ Gem::Specification.new do |spec|
49
52
  spec.add_development_dependency "rake-compiler", "~> 1.2"
50
53
  <%- end -%>
51
54
 
52
- spec.add_dependency "ostruct", "~> 0.6"
55
+ spec.add_dependency "ratatui_ruby"
56
+ spec.add_development_dependency "ostruct", "~> 0.6"
53
57
  spec.add_development_dependency "rdoc", "~> 7.0"
54
58
  spec.add_development_dependency "faker", "~> 3.5"
59
+ spec.add_development_dependency "minitest-mock"
60
+ spec.add_development_dependency "steep"
61
+ spec.add_development_dependency "debug", ">= 1.0"
55
62
  <%- dependencies.each do |dep| -%>
56
63
  spec.add_dependency "<%= dep[:name] %>", "<%= dep[:version] %>"
57
64
  <%- end -%>
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ #--
4
+ <%# REUSE-IgnoreStart -%>
5
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
6
+ # SPDX-License-Identifier: <%= license %>
7
+ <%# REUSE-IgnoreEnd -%>
8
+ #++
9
+
10
+ require_relative "<%= gem_name.split('-').last %>/version"
11
+
12
+ # Entry point for the <%= gem_name %> gem.
13
+ #
14
+ # Ruby libraries benefit from a clear namespace. Gems need a central module.
15
+ #
16
+ # This module serves as the namespace root. All classes and utilities live here.
17
+ #
18
+ # Require this file to load the library.
19
+ <%= nested_module %>
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ #--
4
+ <%# REUSE-IgnoreStart -%>
5
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
6
+ # SPDX-License-Identifier: <%= license %>
7
+ <%# REUSE-IgnoreEnd -%>
8
+ #++
9
+
10
+ require "ratatui_ruby/test_helper"
11
+
12
+ module <%= module_name %>
13
+ # Test assertions and utilities for <%= gem_name %>.
14
+ #
15
+ # Includes {RatatuiRuby::TestHelper} for terminal test helpers
16
+ # (<tt>with_test_terminal</tt>, <tt>inject_key</tt>, etc.).
17
+ #
18
+ # Include this module in your Minitest classes:
19
+ #
20
+ # class TestMyApp < Minitest::Test
21
+ # include <%= module_name %>::TestHelper
22
+ # end
23
+ module TestHelper
24
+ include RatatuiRuby::TestHelper
25
+ end
26
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ #--
4
+ <%# REUSE-IgnoreStart -%>
5
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
6
+ # SPDX-License-Identifier: <%= license %>
7
+ <%# REUSE-IgnoreEnd -%>
8
+ #++
9
+
10
+ <%= nested_module_with_version %>
@@ -1,10 +1,10 @@
1
+ <%# REUSE-IgnoreStart -%>
1
2
  # SPDX-FileCopyrightText: <%= Time.now.year %> <%= copyright_holder %>
2
- # REUSE-IgnoreStart
3
3
  # SPDX-License-Identifier: <%= license %>
4
- # REUSE-IgnoreEnd
4
+ <%# REUSE-IgnoreEnd -%>
5
5
 
6
6
  [tools]
7
- ruby = "4.0.0"
7
+ ruby = "4.0.1"
8
8
  <%- if has_rust -%>
9
9
  rust = "1.91.1"
10
10
  <%- end -%>
@@ -1,32 +1,32 @@
1
- <%#
1
+ <%# REUSE-IgnoreStart -%>
2
+ <%= "<%#" %>
2
3
  SPDX-FileCopyrightText: <%= Time.now.year %> <%= copyright_holder %>
3
- REUSE-IgnoreStart
4
4
  SPDX-License-Identifier: <%= license %>
5
- REUSE-IgnoreEnd
6
5
  %>
6
+ <%# REUSE-IgnoreEnd -%>
7
7
  <!DOCTYPE html>
8
8
  <html lang="en">
9
9
  <head>
10
10
  <meta charset="UTF-8">
11
11
  <meta name="viewport" content="width=device-width, initial-scale=1">
12
- <title><%= page_title %> - Example Viewer</title>
12
+ <title><%%= page_title %> - Example Viewer</title>
13
13
 
14
14
  <script>
15
- var rdoc_rel_prefix = "<%= doc_root_link.sub('index.html', '') %>";
16
- var index_rel_prefix = "<%= '../' * (relative_path.split('/').size - 1) %>";
15
+ var rdoc_rel_prefix = "<%%= doc_root_link.sub('index.html', '') %>";
16
+ var index_rel_prefix = "<%%= '../' * (relative_path.split('/').size - 1) %>";
17
17
  </script>
18
18
 
19
- <script src="<%= '../' * (relative_path.split('/').size - 1) %>js/search_navigation.js" defer></script>
20
- <script src="<%= '../' * (relative_path.split('/').size - 1) %>js/search_data.js" defer></script>
21
- <script src="<%= '../' * (relative_path.split('/').size - 1) %>js/search_ranker.js" defer></script>
22
- <script src="<%= '../' * (relative_path.split('/').size - 1) %>js/search_controller.js" defer></script>
23
- <script src="<%= '../' * (relative_path.split('/').size - 1) %>js/aliki.js" defer></script>
19
+ <script src="<%%= '../' * (relative_path.split('/').size - 1) %>js/search_navigation.js" defer></script>
20
+ <script src="<%%= '../' * (relative_path.split('/').size - 1) %>js/search_data.js" defer></script>
21
+ <script src="<%%= '../' * (relative_path.split('/').size - 1) %>js/search_ranker.js" defer></script>
22
+ <script src="<%%= '../' * (relative_path.split('/').size - 1) %>js/search_controller.js" defer></script>
23
+ <script src="<%%= '../' * (relative_path.split('/').size - 1) %>js/aliki.js" defer></script>
24
24
 
25
- <link href="<%= doc_root_link.sub('index.html', '') %>css/rdoc.css" rel="stylesheet">
26
- <link href="<%= doc_root_link.sub('index.html', '') %>custom.css" rel="stylesheet">
25
+ <link href="<%%= doc_root_link.sub('index.html', '') %>css/rdoc.css" rel="stylesheet">
26
+ <link href="<%%= doc_root_link.sub('index.html', '') %>custom.css" rel="stylesheet">
27
27
  </head>
28
- <body class="file<%= ' has-toc' unless toc_items.empty? %>">
29
- <%= icons_svg %>
28
+ <body class="file<%%= ' has-toc' unless toc_items.empty? %>">
29
+ <%%= icons_svg %>
30
30
  <header class="top-navbar">
31
31
  <div class="navbar-brand">
32
32
  Example Viewer
@@ -96,7 +96,7 @@ REUSE-IgnoreEnd
96
96
  </span>
97
97
  </summary>
98
98
  <ul class="nav-list">
99
- <li><a href="<%= doc_root_link %>">← Back to Docs</a></li>
99
+ <li><a href="<%%= doc_root_link %>">← Back to Docs</a></li>
100
100
  </ul>
101
101
  </details>
102
102
  </div>
@@ -112,7 +112,7 @@ REUSE-IgnoreEnd
112
112
  </span>
113
113
  </summary>
114
114
  <ul class="link-list nav-list">
115
- <%= render_tree(tree_data, relative_path, current_file_html) %>
115
+ <%%= render_tree(tree_data, relative_path, current_file_html) %>
116
116
  </ul>
117
117
  </details>
118
118
  </div>
@@ -120,24 +120,24 @@ REUSE-IgnoreEnd
120
120
 
121
121
  <main role="main">
122
122
  <div class="breadcrumb">
123
- <%= breadcrumb_path %>
123
+ <%%= breadcrumb_path %>
124
124
  </div>
125
- <%= file_header_html %>
125
+ <%%= file_header_html %>
126
126
  <div class="content">
127
- <%= file_content_html %>
127
+ <%%= file_content_html %>
128
128
  </div>
129
129
  </main>
130
130
 
131
- <% unless toc_items.empty? %>
131
+ <%% unless toc_items.empty? %>
132
132
  <aside class="table-of-contents" role="complementary" aria-label="Table of Contents">
133
133
  <div class="toc-sticky">
134
134
  <div class="toc-list">
135
135
  <h3>On This Page</h3>
136
- <%= render_toc(toc_items) %>
136
+ <%%= render_toc(toc_items) %>
137
137
  </div>
138
138
  </div>
139
139
  </aside>
140
- <% end %>
140
+ <%% end %>
141
141
 
142
142
 
143
143
  <script>
@@ -1,15 +1,14 @@
1
- <!--
1
+ <%# REUSE-IgnoreStart -%>
2
+ <%= "<%#" %>
2
3
  SPDX-FileCopyrightText: <%= Time.now.year %> <%= copyright_holder %>
3
-
4
- REUSE-IgnoreStart
5
4
  SPDX-License-Identifier: <%= license %>
6
- REUSE-IgnoreEnd
7
- -->
5
+ %>
6
+ <%# REUSE-IgnoreEnd -%>
8
7
 
9
8
  <!DOCTYPE html>
10
9
  <html>
11
10
  <head>
12
- <title><%= project_name %> documentation</title>
11
+ <title><%%= project_name %> documentation</title>
13
12
  <meta name="viewport" content="width=device-width, initial-scale=1">
14
13
  <style>
15
14
  :root { color-scheme: light dark; }
@@ -23,24 +22,24 @@ REUSE-IgnoreEnd
23
22
  </style>
24
23
  </head>
25
24
  <body>
26
- <h1><%= project_name %> documentation</h1>
25
+ <h1><%%= project_name %> documentation</h1>
27
26
  <ul>
28
- <% versions.each do |version| %>
27
+ <%% versions.each do |version| %>
29
28
  <li>
30
- <a href='<%= version.slug %>/index.html'>
31
- <%= version.name %>
32
- <span class='meta'>
33
- <% if version.latest? %>
29
+ <a href="<%%= version.slug %>/index.html">
30
+ <%%= version.name %>
31
+ <span class="meta">
32
+ <%% if version.latest? %>
34
33
  Latest
35
- <% elsif version.edge? %>
34
+ <%% elsif version.edge? %>
36
35
  Edge
37
- <% else %>
36
+ <%% else %>
38
37
  Historical
39
- <% end %>
38
+ <%% end %>
40
39
  </span>
41
40
  </a>
42
41
  </li>
43
- <% end %>
42
+ <%% end %>
44
43
  </ul>
45
44
  </body>
46
45
  </html>
@@ -1,9 +1,8 @@
1
+ <%# REUSE-IgnoreStart -%>
1
2
  # SPDX-FileCopyrightText: <%= Time.now.year %> <%= copyright_holder %>
2
- # REUSE-IgnoreStart
3
3
  # SPDX-License-Identifier: <%= license %>
4
- # REUSE-IgnoreEnd
4
+ <%# REUSE-IgnoreEnd -%>
5
5
 
6
- - "3.2"
7
- - "3.3"
8
- - "3.4"
9
- - "4.0.0"
6
+ <% rubies.each do |ruby| -%>
7
+ - "<%= ruby %>"
8
+ <% end -%>
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ #--
4
+ <%# REUSE-IgnoreStart -%>
5
+ # SPDX-FileCopyrightText: <%= year %> <%= copyright_holder %>
6
+ # SPDX-License-Identifier: <%= license %>
7
+ <%# REUSE-IgnoreEnd -%>
8
+ #++
9
+
10
+ $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
11
+ require "<%= require_path %>"
12
+ require "ratatui_ruby"
13
+ require "<%= require_path %>/test_helper"
14
+ require "minitest/autorun"
15
+ require "minitest/mock"
@@ -8,6 +8,6 @@
8
8
  module RatatuiRuby
9
9
  module Devtools
10
10
  # Current version of the ratatui_ruby-devtools gem.
11
- VERSION = "0.1.3"
11
+ VERSION = "0.2.0"
12
12
  end
13
13
  end
@@ -145,10 +145,10 @@ module RatatuiRuby
145
145
 
146
146
  private def discover_version_file
147
147
  # Convention: lib/gem_name/version.rb (with underscores for namespacing)
148
- # e.g., ratatui_ruby-tea -> lib/ratatui_ruby/tea/version.rb
148
+ # e.g., ratatui_ruby-kit -> lib/ratatui_ruby/kit/version.rb
149
149
  parts = gem_name.split("-")
150
150
  if parts.size > 1
151
- # ratatui_ruby-tea -> ratatui_ruby/tea
151
+ # ratatui_ruby-kit -> ratatui_ruby/kit
152
152
  path = "lib/#{parts.first}/#{parts[1..].join('/')}/version.rb"
153
153
  else
154
154
  # ratatui_ruby -> ratatui_ruby
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.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kerrick Long
@@ -141,6 +141,7 @@ files:
141
141
  - CHANGELOG.md
142
142
  - LICENSE
143
143
  - LICENSES/AGPL-3.0-or-later.txt
144
+ - LICENSES/BSD-2-Clause.txt
144
145
  - LICENSES/CC-BY-SA-4.0.txt
145
146
  - LICENSES/CC0-1.0.txt
146
147
  - LICENSES/MIT-0.txt
@@ -190,11 +191,15 @@ files:
190
191
  - lib/ratatui_ruby/devtools/tasks/license/snippets_rdoc.rb
191
192
  - lib/ratatui_ruby/devtools/tasks/lint.rake
192
193
  - lib/ratatui_ruby/devtools/tasks/rdoc_config.rb
193
- - lib/ratatui_ruby/devtools/tasks/resources/build.yml.erb
194
+ - lib/ratatui_ruby/devtools/tasks/release.rake
195
+ - lib/ratatui_ruby/devtools/tasks/release/ci_run.rb
196
+ - lib/ratatui_ruby/devtools/tasks/release/github_cli.rb
197
+ - lib/ratatui_ruby/devtools/tasks/release/native_gem_version.rb
198
+ - lib/ratatui_ruby/devtools/tasks/release/platform_gem.rb
199
+ - lib/ratatui_ruby/devtools/tasks/release/versioned_binary.rb
194
200
  - lib/ratatui_ruby/devtools/tasks/resources/index.html.erb
195
201
  - lib/ratatui_ruby/devtools/tasks/resources/rubies.yml
196
202
  - lib/ratatui_ruby/devtools/tasks/reuse.rake
197
- - lib/ratatui_ruby/devtools/tasks/sourcehut.rake
198
203
  - lib/ratatui_ruby/devtools/tasks/test.rake
199
204
  - lib/ratatui_ruby/devtools/tasks/website.rake
200
205
  - lib/ratatui_ruby/devtools/tasks/website/index_page.rb
@@ -203,17 +208,22 @@ files:
203
208
  - lib/ratatui_ruby/devtools/tasks/website/versioned_documentation.rb
204
209
  - lib/ratatui_ruby/devtools/tasks/website/website.rb
205
210
  - lib/ratatui_ruby/devtools/templates/.builds/ruby.yml.erb
211
+ - lib/ratatui_ruby/devtools/templates/.github/workflows/build-gems.yml.erb
212
+ - lib/ratatui_ruby/devtools/templates/.github/workflows/ci.yml.erb
206
213
  - lib/ratatui_ruby/devtools/templates/.gitignore.erb
207
214
  - lib/ratatui_ruby/devtools/templates/.pre-commit-config.yaml.erb
208
215
  - lib/ratatui_ruby/devtools/templates/.rubocop.yml.erb
209
216
  - lib/ratatui_ruby/devtools/templates/AGENTS.md.erb
210
217
  - lib/ratatui_ruby/devtools/templates/CHANGELOG.md.erb
218
+ - lib/ratatui_ruby/devtools/templates/CODE_OF_CONDUCT.md.erb
219
+ - lib/ratatui_ruby/devtools/templates/CONTRIBUTING.md.erb
211
220
  - lib/ratatui_ruby/devtools/templates/Gemfile.erb
212
221
  - lib/ratatui_ruby/devtools/templates/README.md.erb
213
222
  - lib/ratatui_ruby/devtools/templates/REUSE.toml.erb
214
223
  - lib/ratatui_ruby/devtools/templates/Rakefile.erb
215
224
  - lib/ratatui_ruby/devtools/templates/bin/console.erb
216
225
  - lib/ratatui_ruby/devtools/templates/bin/setup.erb
226
+ - lib/ratatui_ruby/devtools/templates/bin/setup.ps1.erb
217
227
  - lib/ratatui_ruby/devtools/templates/doc/concepts/application_architecture.md.erb
218
228
  - lib/ratatui_ruby/devtools/templates/doc/concepts/application_testing.md.erb
219
229
  - lib/ratatui_ruby/devtools/templates/doc/custom.css.erb
@@ -221,13 +231,22 @@ files:
221
231
  - lib/ratatui_ruby/devtools/templates/doc/images/.gitkeep
222
232
  - lib/ratatui_ruby/devtools/templates/doc/index.md.erb
223
233
  - lib/ratatui_ruby/devtools/templates/exe/.gitkeep
234
+ - lib/ratatui_ruby/devtools/templates/ext/.cargo/config.toml.erb
235
+ - lib/ratatui_ruby/devtools/templates/ext/.gitignore.erb
236
+ - lib/ratatui_ruby/devtools/templates/ext/Cargo.toml.erb
237
+ - lib/ratatui_ruby/devtools/templates/ext/clippy.toml.erb
238
+ - lib/ratatui_ruby/devtools/templates/ext/extconf.rb.erb
239
+ - lib/ratatui_ruby/devtools/templates/ext/src/lib.rs.erb
224
240
  - lib/ratatui_ruby/devtools/templates/gemspec.erb
241
+ - lib/ratatui_ruby/devtools/templates/lib/main.rb.erb
242
+ - lib/ratatui_ruby/devtools/templates/lib/rubocop.yml
243
+ - lib/ratatui_ruby/devtools/templates/lib/test_helper.rb.erb
244
+ - lib/ratatui_ruby/devtools/templates/lib/version.rb.erb
225
245
  - lib/ratatui_ruby/devtools/templates/mise.toml.erb
226
246
  - lib/ratatui_ruby/devtools/templates/tasks/example_viewer.html.erb
227
- - lib/ratatui_ruby/devtools/templates/tasks/resources/build.yml.erb
228
247
  - lib/ratatui_ruby/devtools/templates/tasks/resources/index.html.erb
229
248
  - lib/ratatui_ruby/devtools/templates/tasks/resources/rubies.yml.erb
230
- - lib/ratatui_ruby/devtools/templates/vendor/goodcop/base.yml
249
+ - lib/ratatui_ruby/devtools/templates/test/test_helper.rb.erb
231
250
  - lib/ratatui_ruby/devtools/version.rb
232
251
  - mise.toml
233
252
  - sig/ratatui_ruby/devtools.rbs
@@ -1,54 +0,0 @@
1
- # SPDX-FileCopyrightText: 2025 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
- - clang
17
- - git
18
- artifacts:
19
- - ratatui_ruby/pkg/<%= gem_filename %>
20
- sources:
21
- - https://git.sr.ht/~kerrick/ratatui_ruby
22
- tasks:
23
- - setup: |
24
- curl https://mise.jdx.dev/install.sh | sh
25
- echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.buildenv
26
- echo 'eval "$($HOME/.local/bin/mise activate bash)"' >> ~/.buildenv
27
- echo 'export LANG="en_US.UTF-8"' >> ~/.buildenv
28
- echo 'export LC_ALL="en_US.UTF-8"' >> ~/.buildenv
29
- echo 'export BINDGEN_EXTRA_CLANG_ARGS="-include stdbool.h"' >> ~/.buildenv
30
- . ~/.buildenv
31
- export CI="true"
32
- cd ratatui_ruby
33
- sed -i 's/ruby = .*/ruby = "<%= ruby_version %>"/' mise.toml
34
- mise install
35
- mise x -- pip install reuse
36
- mise x -- gem install bundler:<%= bundler_version %>
37
- mise reshim
38
- mise x -- bundle config set --local frozen 'true'
39
- mise x -- bundle install
40
- mise x -- bundle exec rake compile
41
- - test: |
42
- . ~/.buildenv
43
- cd ratatui_ruby
44
- echo "Testing Ruby <%= ruby_version %>"
45
- mise x -- bundle exec rake test
46
- - lint: |
47
- . ~/.buildenv
48
- cd ratatui_ruby
49
- echo "Linting Ruby <%= ruby_version %>"
50
- mise x -- bundle exec rake lint
51
- - package: |
52
- . ~/.buildenv
53
- cd ratatui_ruby
54
- mise x -- bundle exec rake build