kaish_kernel/tools/builtin/
mod.rs1mod 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 file;
35mod glob;
36mod find;
37pub(crate) mod format_string;
38mod gather;
39mod grep;
40mod grep_engine;
41mod head;
42mod ignore;
43mod help;
44#[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 timeout;
83#[cfg(feature = "tokens")]
84mod tokens;
85mod touch;
86mod tr;
87mod tree;
88mod true_false;
89mod uname;
90mod uniq;
91mod unset;
92mod validate;
93mod vars;
94mod wait;
95mod wc;
96#[cfg(feature = "subprocess")]
97mod which;
98mod write;
99mod xxd;
100
101use super::ToolRegistry;
102
103pub(crate) fn read_repeatable_strings(args: &super::ToolArgs, key: &str) -> Vec<String> {
112 use crate::ast::Value;
113 match args.named.get(key) {
114 Some(Value::Json(serde_json::Value::Array(items))) => items
115 .iter()
116 .filter_map(|v| v.as_str().map(|s| s.to_string()))
117 .collect(),
118 Some(Value::String(s)) => vec![s.clone()],
119 Some(other) => vec![crate::interpreter::value_to_string(other)],
120 None => Vec::new(),
121 }
122}
123
124pub fn register_builtins(registry: &mut ToolRegistry) {
126 registry.register(alias::Alias);
127 registry.register(alias::Unalias);
128 registry.register(assert::Assert);
129 registry.register(awk::Awk);
130 registry.register(base64_tool::Base64Tool);
131 registry.register(basename::Basename);
132 #[cfg(feature = "subprocess")]
133 registry.register(bg::Bg);
134 registry.register(cat::Cat);
135 registry.register(cd::Cd);
136 registry.register(checksum::Checksum);
137 registry.register(cmp::Cmp);
138 registry.register(cp::Cp);
139 registry.register(cut::Cut);
140 registry.register(date::Date::new());
141 registry.register(dd::Dd);
142 registry.register(diff::Diff);
143 registry.register(dirname::Dirname);
144 registry.register(echo::Echo);
145 registry.register(env::Env);
146 #[cfg(feature = "subprocess")]
147 registry.register(exec::Exec);
148 #[cfg(feature = "subprocess")]
149 registry.register(spawn::Spawn);
150 registry.register(export::Export);
151 #[cfg(feature = "subprocess")]
152 registry.register(fg::Fg);
153 registry.register(file::File);
154 registry.register(glob::Glob);
155 registry.register(find::Find);
156 registry.register(gather::Gather);
157 registry.register(grep::Grep);
158 registry.register(head::Head);
159 registry.register(help::Help);
160 registry.register(ignore::KaishIgnore);
161 #[cfg(feature = "host")]
162 registry.register(hostname::Hostname);
163 registry.register(introspect::Mounts);
164 registry.register(introspect::Tools);
165 registry.register(jobs::Jobs);
166 registry.register(jq_native::JqNative);
167 registry.register(kaish_ast::KaishAst);
168 registry.register(kaish_clear::KaishClear);
169 registry.register(kaish_last::KaishLast);
170 registry.register(kaish_trash::KaishTrash);
171 registry.register(kaish_status::KaishStatus);
172 registry.register(kaish_version::KaishVersion);
173 registry.register(kaish_vfs::KaishVfs);
174 registry.register(kill::Kill);
175 registry.register(ln::Ln);
176 registry.register(ls::Ls);
177 registry.register(mkdir::Mkdir);
178 registry.register(mktemp::Mktemp);
179 registry.register(mv::Mv);
180 registry.register(output_limit::KaishOutputLimit);
181 registry.register(patch::Patch);
182 registry.register(printf::Printf);
183 #[cfg(all(target_os = "linux", feature = "host"))]
184 registry.register(kaish_tools_host::Ps);
185 registry.register(pwd::Pwd);
186 registry.register(read::Read);
187 registry.register(readlink::Readlink);
188 registry.register(realpath::Realpath);
189 registry.register(rm::Rm);
190 registry.register(scatter::Scatter);
191 registry.register(sed::Sed);
192 registry.register(seq::Seq);
193 registry.register(set::Set);
194 registry.register(split::Split);
195 registry.register(sleep::Sleep);
196 registry.register(sort::Sort);
197 registry.register(stat::Stat);
198 registry.register(tac::Tac);
199 registry.register(tail::Tail);
200 registry.register(tee::Tee);
201 registry.register(timeout::Timeout);
202 #[cfg(feature = "tokens")]
203 registry.register(tokens::Tokens);
204 registry.register(touch::Touch);
205 registry.register(tr::Tr);
206 registry.register(tree::Tree);
207 registry.register(true_false::True);
208 registry.register(true_false::False);
209 registry.register(uname::Uname);
210 registry.register(uniq::Uniq);
211 registry.register(unset::Unset);
212 registry.register(validate::Validate);
213 registry.register(vars::Vars);
214 registry.register(wait::Wait);
215 registry.register(wc::Wc);
216 #[cfg(feature = "subprocess")]
217 registry.register(which::Which);
218 registry.register(write::Write);
219 registry.register(xxd::Xxd);
220}