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,174 @@
|
|
|
1
|
+
<%#
|
|
2
|
+
SPDX-FileCopyrightText: <%= Time.now.year %> <%= copyright_holder %>
|
|
3
|
+
REUSE-IgnoreStart
|
|
4
|
+
SPDX-License-Identifier: <%= license %>
|
|
5
|
+
REUSE-IgnoreEnd
|
|
6
|
+
%>
|
|
7
|
+
<!DOCTYPE html>
|
|
8
|
+
<html lang="en">
|
|
9
|
+
<head>
|
|
10
|
+
<meta charset="UTF-8">
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
12
|
+
<title><%= page_title %> - Example Viewer</title>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
var rdoc_rel_prefix = "<%= doc_root_link.sub('index.html', '') %>";
|
|
16
|
+
var index_rel_prefix = "<%= '../' * (relative_path.split('/').size - 1) %>";
|
|
17
|
+
</script>
|
|
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>
|
|
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">
|
|
27
|
+
</head>
|
|
28
|
+
<body class="file<%= ' has-toc' unless toc_items.empty? %>">
|
|
29
|
+
<%= icons_svg %>
|
|
30
|
+
<header class="top-navbar">
|
|
31
|
+
<div class="navbar-brand">
|
|
32
|
+
Example Viewer
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<!-- Desktop search bar -->
|
|
36
|
+
<div class="navbar-search navbar-search-desktop" role="search">
|
|
37
|
+
<form action="#" method="get" accept-charset="utf-8">
|
|
38
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
|
39
|
+
aria-autocomplete="list" aria-controls="search-results-desktop"
|
|
40
|
+
type="text" name="search" placeholder="Search (/) examples..."
|
|
41
|
+
spellcheck="false" autocomplete="off"
|
|
42
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
|
43
|
+
<ul id="search-results-desktop" aria-label="Search Results"
|
|
44
|
+
aria-busy="false" aria-expanded="false"
|
|
45
|
+
aria-atomic="false" class="initially-hidden search-results"></ul>
|
|
46
|
+
</form>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<!-- Mobile search icon button -->
|
|
50
|
+
<button id="search-toggle" class="navbar-search-mobile" aria-label="Open search" type="button">
|
|
51
|
+
<span aria-hidden="true">🔍</span>
|
|
52
|
+
</button>
|
|
53
|
+
|
|
54
|
+
<button id="theme-toggle" class="theme-toggle" aria-label="Switch to dark mode" type="button" onclick="cycleColorMode()">
|
|
55
|
+
<span class="theme-toggle-icon" aria-hidden="true">🌙</span>
|
|
56
|
+
</button>
|
|
57
|
+
</header>
|
|
58
|
+
|
|
59
|
+
<!-- Search Modal (Mobile) -->
|
|
60
|
+
<div id="search-modal" class="search-modal" hidden aria-modal="true" role="dialog" aria-label="Search">
|
|
61
|
+
<div class="search-modal-backdrop"></div>
|
|
62
|
+
<div class="search-modal-content">
|
|
63
|
+
<div class="search-modal-header">
|
|
64
|
+
<form class="search-modal-form" action="#" method="get" accept-charset="utf-8">
|
|
65
|
+
<span class="search-modal-icon" aria-hidden="true">🔍</span>
|
|
66
|
+
<input id="search-field-mobile" role="combobox" aria-label="Search"
|
|
67
|
+
aria-autocomplete="list" aria-controls="search-results-mobile"
|
|
68
|
+
type="text" name="search" placeholder="Search examples"
|
|
69
|
+
spellcheck="false" autocomplete="off">
|
|
70
|
+
<button type="button" class="search-modal-close" aria-label="Close search" id="search-modal-close">
|
|
71
|
+
<span aria-hidden="true">esc</span>
|
|
72
|
+
</button>
|
|
73
|
+
</form>
|
|
74
|
+
</div>
|
|
75
|
+
<div class="search-modal-body">
|
|
76
|
+
<ul id="search-results-mobile" aria-label="Search Results"
|
|
77
|
+
aria-busy="false" aria-expanded="false"
|
|
78
|
+
aria-atomic="false" class="search-results search-modal-results initially-hidden"></ul>
|
|
79
|
+
<div class="search-modal-empty">
|
|
80
|
+
<p>No recent searches</p>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
<nav id="navigation" role="navigation">
|
|
87
|
+
<div id="fileindex-section" class="nav-section">
|
|
88
|
+
<details class="nav-section-collapsible" open>
|
|
89
|
+
<summary class="nav-section-header">
|
|
90
|
+
<span class="nav-section-icon">
|
|
91
|
+
<svg><use href="#icon-file"></use></svg>
|
|
92
|
+
</span>
|
|
93
|
+
<span class="nav-section-title">Examples</span>
|
|
94
|
+
<span class="nav-section-chevron">
|
|
95
|
+
<svg><use href="#icon-chevron"></use></svg>
|
|
96
|
+
</span>
|
|
97
|
+
</summary>
|
|
98
|
+
<ul class="nav-list">
|
|
99
|
+
<li><a href="<%= doc_root_link %>">← Back to Docs</a></li>
|
|
100
|
+
</ul>
|
|
101
|
+
</details>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="nav-section">
|
|
104
|
+
<details class="nav-section-collapsible" open>
|
|
105
|
+
<summary class="nav-section-header">
|
|
106
|
+
<span class="nav-section-icon">
|
|
107
|
+
<svg><use href="#icon-layers"></use></svg>
|
|
108
|
+
</span>
|
|
109
|
+
<span class="nav-section-title">Files</span>
|
|
110
|
+
<span class="nav-section-chevron">
|
|
111
|
+
<svg><use href="#icon-chevron"></use></svg>
|
|
112
|
+
</span>
|
|
113
|
+
</summary>
|
|
114
|
+
<ul class="link-list nav-list">
|
|
115
|
+
<%= render_tree(tree_data, relative_path, current_file_html) %>
|
|
116
|
+
</ul>
|
|
117
|
+
</details>
|
|
118
|
+
</div>
|
|
119
|
+
</nav>
|
|
120
|
+
|
|
121
|
+
<main role="main">
|
|
122
|
+
<div class="breadcrumb">
|
|
123
|
+
<%= breadcrumb_path %>
|
|
124
|
+
</div>
|
|
125
|
+
<%= file_header_html %>
|
|
126
|
+
<div class="content">
|
|
127
|
+
<%= file_content_html %>
|
|
128
|
+
</div>
|
|
129
|
+
</main>
|
|
130
|
+
|
|
131
|
+
<% unless toc_items.empty? %>
|
|
132
|
+
<aside class="table-of-contents" role="complementary" aria-label="Table of Contents">
|
|
133
|
+
<div class="toc-sticky">
|
|
134
|
+
<div class="toc-list">
|
|
135
|
+
<h3>On This Page</h3>
|
|
136
|
+
<%= render_toc(toc_items) %>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</aside>
|
|
140
|
+
<% end %>
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
<script>
|
|
144
|
+
const modes = ['auto', 'light', 'dark'];
|
|
145
|
+
const icons = { auto: '🌓', light: '☀️', dark: '🌙' };
|
|
146
|
+
|
|
147
|
+
function setColorMode(mode) {
|
|
148
|
+
if (mode === 'auto') {
|
|
149
|
+
document.documentElement.removeAttribute('data-theme');
|
|
150
|
+
const systemTheme = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light';
|
|
151
|
+
document.documentElement.setAttribute('data-theme', systemTheme);
|
|
152
|
+
} else {
|
|
153
|
+
document.documentElement.setAttribute('data-theme', mode);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const icon = icons[mode];
|
|
157
|
+
const toggle = document.getElementById('theme-toggle');
|
|
158
|
+
toggle.querySelector('.theme-toggle-icon').textContent = icon;
|
|
159
|
+
|
|
160
|
+
localStorage.setItem('rdoc-theme', mode);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function cycleColorMode() {
|
|
164
|
+
const current = localStorage.getItem('rdoc-theme') || 'auto';
|
|
165
|
+
const currentIndex = modes.indexOf(current);
|
|
166
|
+
const nextMode = modes[(currentIndex + 1) % modes.length];
|
|
167
|
+
setColorMode(nextMode);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const savedMode = localStorage.getItem('rdoc-theme') || 'auto';
|
|
171
|
+
setColorMode(savedMode);
|
|
172
|
+
</script>
|
|
173
|
+
</body>
|
|
174
|
+
</html>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: <%= Time.now.year %> <%= copyright_holder %>
|
|
2
|
+
# REUSE-IgnoreStart
|
|
3
|
+
# SPDX-License-Identifier: <%= license %>
|
|
4
|
+
# REUSE-IgnoreEnd
|
|
5
|
+
|
|
6
|
+
image: archlinux
|
|
7
|
+
packages:
|
|
8
|
+
- bash
|
|
9
|
+
- base-devel
|
|
10
|
+
- curl
|
|
11
|
+
- openssl
|
|
12
|
+
- libyaml
|
|
13
|
+
- zlib
|
|
14
|
+
- readline
|
|
15
|
+
- gdbm
|
|
16
|
+
- ncurses
|
|
17
|
+
- libffi
|
|
18
|
+
<%- if has_rust -%>
|
|
19
|
+
- clang
|
|
20
|
+
<%- end -%>
|
|
21
|
+
- git
|
|
22
|
+
artifacts:
|
|
23
|
+
- <%= gem_name %>/pkg/<%= gem_filename %>
|
|
24
|
+
sources:
|
|
25
|
+
- https://git.sr.ht/~kerrick/<%= gem_name %>
|
|
26
|
+
tasks:
|
|
27
|
+
- setup: |
|
|
28
|
+
curl https://mise.jdx.dev/install.sh | sh
|
|
29
|
+
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.buildenv
|
|
30
|
+
echo 'eval "$($HOME/.local/bin/mise activate bash)"' >> ~/.buildenv
|
|
31
|
+
echo 'export LANG="en_US.UTF-8"' >> ~/.buildenv
|
|
32
|
+
echo 'export LC_ALL="en_US.UTF-8"' >> ~/.buildenv
|
|
33
|
+
<%- if has_rust -%>
|
|
34
|
+
echo 'export BINDGEN_EXTRA_CLANG_ARGS="-include stdbool.h"' >> ~/.buildenv
|
|
35
|
+
<%- end -%>
|
|
36
|
+
. ~/.buildenv
|
|
37
|
+
export CI="true"
|
|
38
|
+
cd <%= gem_name %>
|
|
39
|
+
sed -i 's/ruby = .*/ruby = "<%= ruby_version %>"/' mise.toml
|
|
40
|
+
mise install
|
|
41
|
+
mise x -- pip install reuse
|
|
42
|
+
mise x -- gem install bundler:<%= bundler_version %>
|
|
43
|
+
mise reshim
|
|
44
|
+
mise x -- bundle config set --local frozen 'true'
|
|
45
|
+
mise x -- bundle install
|
|
46
|
+
<%- if has_rust -%>
|
|
47
|
+
mise x -- bundle exec rake compile
|
|
48
|
+
<%- end -%>
|
|
49
|
+
- test: |
|
|
50
|
+
. ~/.buildenv
|
|
51
|
+
cd <%= gem_name %>
|
|
52
|
+
echo "Testing Ruby <%= ruby_version %>"
|
|
53
|
+
mise x -- bundle exec rake test
|
|
54
|
+
- lint: |
|
|
55
|
+
. ~/.buildenv
|
|
56
|
+
cd <%= gem_name %>
|
|
57
|
+
echo "Linting Ruby <%= ruby_version %>"
|
|
58
|
+
mise x -- bundle exec rake lint
|
|
59
|
+
- package: |
|
|
60
|
+
. ~/.buildenv
|
|
61
|
+
cd <%= gem_name %>
|
|
62
|
+
mise x -- bundle exec rake build
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SPDX-FileCopyrightText: <%= Time.now.year %> <%= copyright_holder %>
|
|
3
|
+
|
|
4
|
+
REUSE-IgnoreStart
|
|
5
|
+
SPDX-License-Identifier: <%= license %>
|
|
6
|
+
REUSE-IgnoreEnd
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
<!DOCTYPE html>
|
|
10
|
+
<html>
|
|
11
|
+
<head>
|
|
12
|
+
<title><%= project_name %> documentation</title>
|
|
13
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
14
|
+
<style>
|
|
15
|
+
:root { color-scheme: light dark; }
|
|
16
|
+
body { font-family: system-ui, sans-serif; max-width: 800px; margin: 0 auto; padding: 2rem; line-height: 1.5; color: light-dark(#111, #eee); background: light-dark(#fff, #111); }
|
|
17
|
+
h1 { border-bottom: 2px solid light-dark(#eee, #333); padding-bottom: 0.5rem; }
|
|
18
|
+
ul { list-style: none; padding: 0; }
|
|
19
|
+
li { margin: 0.5rem 0; border: 1px solid light-dark(#ddd, #444); border-radius: 4px; }
|
|
20
|
+
a { display: block; padding: 1rem; text-decoration: none; color: light-dark(#0055aa, #44aaff); font-weight: bold; }
|
|
21
|
+
a:hover { background: light-dark(#f5f5f5, #222); }
|
|
22
|
+
.meta { font-weight: normal; color: light-dark(#666, #aaa); font-size: 0.9em; float: right; }
|
|
23
|
+
</style>
|
|
24
|
+
</head>
|
|
25
|
+
<body>
|
|
26
|
+
<h1><%= project_name %> documentation</h1>
|
|
27
|
+
<ul>
|
|
28
|
+
<% versions.each do |version| %>
|
|
29
|
+
<li>
|
|
30
|
+
<a href='<%= version.slug %>/index.html'>
|
|
31
|
+
<%= version.name %>
|
|
32
|
+
<span class='meta'>
|
|
33
|
+
<% if version.latest? %>
|
|
34
|
+
Latest
|
|
35
|
+
<% elsif version.edge? %>
|
|
36
|
+
Edge
|
|
37
|
+
<% else %>
|
|
38
|
+
Historical
|
|
39
|
+
<% end %>
|
|
40
|
+
</span>
|
|
41
|
+
</a>
|
|
42
|
+
</li>
|
|
43
|
+
<% end %>
|
|
44
|
+
</ul>
|
|
45
|
+
</body>
|
|
46
|
+
</html>
|