Skip to main content

kaish_kernel/tools/builtin/
mod.rs

1//! Built-in tools for kaish.
2//!
3//! These tools are always available and provide core functionality.
4
5mod alias;
6mod assert;
7mod awk;
8mod base64_tool;
9mod basename;
10#[cfg(feature = "subprocess")]
11mod bg;
12mod cat;
13mod cd;
14mod checksum;
15mod cmp;
16mod cp;
17mod cut;
18mod date;
19mod dd;
20mod diff;
21mod dirname;
22mod patch;
23mod echo;
24mod env;
25#[cfg(feature = "subprocess")]
26mod exec;
27#[cfg(feature = "subprocess")]
28mod spawn;
29#[cfg(feature = "subprocess")]
30pub use spawn::resolve_in_path;
31mod export;
32#[cfg(feature = "subprocess")]
33mod fg;
34mod glob;
35mod find;
36pub(crate) mod format_string;
37mod gather;
38mod grep;
39mod grep_engine;
40mod rg;
41mod head;
42mod ignore;
43mod help;
44// `hostname` is pure host introspection (reads /proc) — gated behind the host
45// capability. `uname` stays available and reports kaish identity instead.
46#[cfg(feature = "host")]
47mod hostname;
48mod introspect;
49mod jobs;
50mod jq_native;
51mod kaish_ast;
52mod kaish_clear;
53mod kaish_last;
54mod kaish_trash;
55mod kaish_status;
56mod kaish_version;
57mod kaish_vfs;
58mod kill;
59mod ln;
60mod ls;
61mod mkdir;
62mod mktemp;
63mod mv;
64mod output_limit;
65mod printf;
66mod pwd;
67mod read;
68mod readlink;
69mod realpath;
70mod rm;
71mod scatter;
72mod sed;
73mod seq;
74mod split;
75mod set;
76mod sleep;
77mod sort;
78mod stat;
79mod tac;
80mod tail;
81mod tee;
82mod test_builtin;
83mod timeout;
84#[cfg(feature = "tokens")]
85mod tokens;
86mod touch;
87mod tr;
88mod tree;
89mod true_false;
90mod uname;
91mod uniq;
92mod unset;
93mod validate;
94mod vars;
95mod wait;
96mod wc;
97#[cfg(feature = "subprocess")]
98mod which;
99mod write;
100mod xxd;
101
102use super::ToolRegistry;
103
104/// Register all built-in tools with the registry.
105pub fn register_builtins(registry: &mut ToolRegistry) {
106    registry.register(alias::Alias);
107    registry.register(alias::Unalias);
108    registry.register(assert::Assert);
109    registry.register(awk::Awk);
110    registry.register(base64_tool::Base64Tool);
111    registry.register(basename::Basename);
112    #[cfg(feature = "subprocess")]
113    registry.register(bg::Bg);
114    registry.register(cat::Cat);
115    registry.register(cd::Cd);
116    registry.register(checksum::Checksum);
117    registry.register(cmp::Cmp);
118    registry.register(cp::Cp);
119    registry.register(cut::Cut);
120    registry.register(date::Date::new());
121    registry.register(dd::Dd);
122    registry.register(diff::Diff);
123    registry.register(dirname::Dirname);
124    registry.register(echo::Echo);
125    registry.register(env::Env);
126    #[cfg(feature = "subprocess")]
127    registry.register(exec::Exec);
128    #[cfg(feature = "subprocess")]
129    registry.register(spawn::Spawn);
130    registry.register(export::Export);
131    #[cfg(feature = "subprocess")]
132    registry.register(fg::Fg);
133    registry.register(glob::Glob);
134    registry.register(find::Find);
135    registry.register(gather::Gather);
136    #[cfg(feature = "git")]
137    registry.register(kaish_tools_git::Git);
138    registry.register(grep::Grep);
139    registry.register(rg::Rg);
140    registry.register(head::Head);
141    registry.register(help::Help);
142    registry.register(ignore::KaishIgnore);
143    #[cfg(feature = "host")]
144    registry.register(hostname::Hostname);
145    registry.register(introspect::Mounts);
146    registry.register(introspect::Tools);
147    registry.register(jobs::Jobs);
148    registry.register(jq_native::JqNative);
149    registry.register(kaish_ast::KaishAst);
150    registry.register(kaish_clear::KaishClear);
151    registry.register(kaish_last::KaishLast);
152    registry.register(kaish_trash::KaishTrash);
153    registry.register(kaish_status::KaishStatus);
154    registry.register(kaish_version::KaishVersion);
155    registry.register(kaish_vfs::KaishVfs);
156    registry.register(kill::Kill);
157    registry.register(ln::Ln);
158    registry.register(ls::Ls);
159    registry.register(mkdir::Mkdir);
160    registry.register(mktemp::Mktemp);
161    registry.register(mv::Mv);
162    registry.register(output_limit::KaishOutputLimit);
163    registry.register(patch::Patch);
164    registry.register(printf::Printf);
165    #[cfg(all(target_os = "linux", feature = "host"))]
166    registry.register(kaish_tools_host::Ps);
167    registry.register(pwd::Pwd);
168    registry.register(read::Read);
169    registry.register(readlink::Readlink);
170    registry.register(realpath::Realpath);
171    registry.register(rm::Rm);
172    registry.register(scatter::Scatter);
173    registry.register(sed::Sed);
174    registry.register(seq::Seq);
175    registry.register(set::Set);
176    registry.register(split::Split);
177    registry.register(sleep::Sleep);
178    registry.register(sort::Sort);
179    registry.register(stat::Stat);
180    registry.register(tac::Tac);
181    registry.register(tail::Tail);
182    registry.register(tee::Tee);
183    registry.register(test_builtin::Test);
184    registry.register(test_builtin::Bracket);
185    registry.register(timeout::Timeout);
186    #[cfg(feature = "tokens")]
187    registry.register(tokens::Tokens);
188    registry.register(touch::Touch);
189    registry.register(tr::Tr);
190    registry.register(tree::Tree);
191    registry.register(true_false::True);
192    registry.register(true_false::False);
193    registry.register(uname::Uname);
194    registry.register(uniq::Uniq);
195    registry.register(unset::Unset);
196    registry.register(validate::Validate);
197    registry.register(vars::Vars);
198    registry.register(wait::Wait);
199    registry.register(wc::Wc);
200    #[cfg(feature = "subprocess")]
201    registry.register(which::Which);
202    registry.register(write::Write);
203    registry.register(xxd::Xxd);
204}