@ecmaos/coreutils 0.2.1 → 0.3.1

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 (150) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +37 -0
  3. package/LICENSE +1 -1
  4. package/dist/commands/cal.js +2 -2
  5. package/dist/commands/cal.js.map +1 -1
  6. package/dist/commands/cat.js +2 -2
  7. package/dist/commands/cd.js +2 -2
  8. package/dist/commands/chmod.d.ts.map +1 -1
  9. package/dist/commands/chmod.js +16 -11
  10. package/dist/commands/chmod.js.map +1 -1
  11. package/dist/commands/cp.js +2 -2
  12. package/dist/commands/cp.js.map +1 -1
  13. package/dist/commands/cron.d.ts +4 -0
  14. package/dist/commands/cron.d.ts.map +1 -0
  15. package/dist/commands/cron.js +439 -0
  16. package/dist/commands/cron.js.map +1 -0
  17. package/dist/commands/date.js +2 -2
  18. package/dist/commands/date.js.map +1 -1
  19. package/dist/commands/echo.js +2 -2
  20. package/dist/commands/echo.js.map +1 -1
  21. package/dist/commands/false.js +2 -2
  22. package/dist/commands/fetch.d.ts +4 -0
  23. package/dist/commands/fetch.d.ts.map +1 -0
  24. package/dist/commands/fetch.js +210 -0
  25. package/dist/commands/fetch.js.map +1 -0
  26. package/dist/commands/format.d.ts +4 -0
  27. package/dist/commands/format.d.ts.map +1 -0
  28. package/dist/commands/format.js +178 -0
  29. package/dist/commands/format.js.map +1 -0
  30. package/dist/commands/hash.d.ts +4 -0
  31. package/dist/commands/hash.d.ts.map +1 -0
  32. package/dist/commands/hash.js +200 -0
  33. package/dist/commands/hash.js.map +1 -0
  34. package/dist/commands/head.js +2 -2
  35. package/dist/commands/id.js +2 -2
  36. package/dist/commands/id.js.map +1 -1
  37. package/dist/commands/less.d.ts.map +1 -1
  38. package/dist/commands/less.js +53 -2
  39. package/dist/commands/less.js.map +1 -1
  40. package/dist/commands/ls.d.ts.map +1 -1
  41. package/dist/commands/ls.js +41 -15
  42. package/dist/commands/ls.js.map +1 -1
  43. package/dist/commands/man.d.ts +4 -0
  44. package/dist/commands/man.d.ts.map +1 -0
  45. package/dist/commands/man.js +564 -0
  46. package/dist/commands/man.js.map +1 -0
  47. package/dist/commands/mkdir.js +2 -2
  48. package/dist/commands/mkdir.js.map +1 -1
  49. package/dist/commands/mktemp.d.ts +4 -0
  50. package/dist/commands/mktemp.d.ts.map +1 -0
  51. package/dist/commands/mktemp.js +229 -0
  52. package/dist/commands/mktemp.js.map +1 -0
  53. package/dist/commands/nc.js +2 -2
  54. package/dist/commands/nc.js.map +1 -1
  55. package/dist/commands/open.d.ts +4 -0
  56. package/dist/commands/open.d.ts.map +1 -0
  57. package/dist/commands/open.js +74 -0
  58. package/dist/commands/open.js.map +1 -0
  59. package/dist/commands/passkey.js +3 -3
  60. package/dist/commands/play.d.ts +4 -0
  61. package/dist/commands/play.d.ts.map +1 -0
  62. package/dist/commands/play.js +231 -0
  63. package/dist/commands/play.js.map +1 -0
  64. package/dist/commands/pwd.js +2 -2
  65. package/dist/commands/pwd.js.map +1 -1
  66. package/dist/commands/rm.d.ts.map +1 -1
  67. package/dist/commands/rm.js +57 -12
  68. package/dist/commands/rm.js.map +1 -1
  69. package/dist/commands/rmdir.js +2 -2
  70. package/dist/commands/rmdir.js.map +1 -1
  71. package/dist/commands/sockets.js +1 -1
  72. package/dist/commands/stat.d.ts.map +1 -1
  73. package/dist/commands/stat.js +37 -15
  74. package/dist/commands/stat.js.map +1 -1
  75. package/dist/commands/tail.js +2 -2
  76. package/dist/commands/tar.d.ts +4 -0
  77. package/dist/commands/tar.d.ts.map +1 -0
  78. package/dist/commands/tar.js +743 -0
  79. package/dist/commands/tar.js.map +1 -0
  80. package/dist/commands/touch.js +2 -2
  81. package/dist/commands/touch.js.map +1 -1
  82. package/dist/commands/true.js +2 -2
  83. package/dist/commands/unzip.d.ts +4 -0
  84. package/dist/commands/unzip.d.ts.map +1 -0
  85. package/dist/commands/unzip.js +443 -0
  86. package/dist/commands/unzip.js.map +1 -0
  87. package/dist/commands/user.js +1 -1
  88. package/dist/commands/video.d.ts +4 -0
  89. package/dist/commands/video.d.ts.map +1 -0
  90. package/dist/commands/video.js +250 -0
  91. package/dist/commands/video.js.map +1 -0
  92. package/dist/commands/view.d.ts +4 -0
  93. package/dist/commands/view.d.ts.map +1 -0
  94. package/dist/commands/view.js +488 -0
  95. package/dist/commands/view.js.map +1 -0
  96. package/dist/commands/web.d.ts +4 -0
  97. package/dist/commands/web.d.ts.map +1 -0
  98. package/dist/commands/web.js +348 -0
  99. package/dist/commands/web.js.map +1 -0
  100. package/dist/commands/whoami.js +2 -2
  101. package/dist/commands/whoami.js.map +1 -1
  102. package/dist/commands/zip.d.ts +4 -0
  103. package/dist/commands/zip.d.ts.map +1 -0
  104. package/dist/commands/zip.js +264 -0
  105. package/dist/commands/zip.js.map +1 -0
  106. package/dist/index.d.ts +14 -0
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +44 -2
  109. package/dist/index.js.map +1 -1
  110. package/package.json +7 -4
  111. package/src/commands/cal.ts +2 -2
  112. package/src/commands/cat.ts +2 -2
  113. package/src/commands/cd.ts +2 -2
  114. package/src/commands/chmod.ts +19 -11
  115. package/src/commands/cp.ts +2 -2
  116. package/src/commands/cron.ts +499 -0
  117. package/src/commands/date.ts +2 -2
  118. package/src/commands/echo.ts +2 -2
  119. package/src/commands/false.ts +2 -2
  120. package/src/commands/fetch.ts +205 -0
  121. package/src/commands/format.ts +204 -0
  122. package/src/commands/hash.ts +215 -0
  123. package/src/commands/head.ts +2 -2
  124. package/src/commands/id.ts +2 -2
  125. package/src/commands/less.ts +50 -2
  126. package/src/commands/ls.ts +40 -14
  127. package/src/commands/man.ts +651 -0
  128. package/src/commands/mkdir.ts +2 -2
  129. package/src/commands/mktemp.ts +235 -0
  130. package/src/commands/nc.ts +2 -2
  131. package/src/commands/open.ts +84 -0
  132. package/src/commands/passkey.ts +3 -3
  133. package/src/commands/play.ts +249 -0
  134. package/src/commands/pwd.ts +2 -2
  135. package/src/commands/rm.ts +54 -12
  136. package/src/commands/rmdir.ts +2 -2
  137. package/src/commands/sockets.ts +1 -1
  138. package/src/commands/stat.ts +44 -16
  139. package/src/commands/tail.ts +2 -2
  140. package/src/commands/tar.ts +780 -0
  141. package/src/commands/touch.ts +2 -2
  142. package/src/commands/true.ts +2 -2
  143. package/src/commands/unzip.ts +517 -0
  144. package/src/commands/user.ts +1 -1
  145. package/src/commands/video.ts +267 -0
  146. package/src/commands/view.ts +526 -0
  147. package/src/commands/web.ts +377 -0
  148. package/src/commands/whoami.ts +2 -2
  149. package/src/commands/zip.ts +319 -0
  150. package/src/index.ts +44 -2
@@ -0,0 +1,439 @@
1
+ import path from 'path';
2
+ import { TerminalCommand } from '../shared/terminal-command.js';
3
+ import { writelnStdout, writelnStderr } from '../shared/helpers.js';
4
+ import { parseCronExpression } from 'cron-schedule';
5
+ /**
6
+ * Parse a single crontab line
7
+ * @param line - The line to parse
8
+ * @returns Parsed entry or null if line is empty/comment
9
+ */
10
+ function parseCrontabLine(line) {
11
+ const trimmed = line.trim();
12
+ // Skip empty lines and comments
13
+ if (trimmed === '' || trimmed.startsWith('#')) {
14
+ return null;
15
+ }
16
+ // Split by whitespace - cron expression is first 5 or 6 fields
17
+ const parts = trimmed.split(/\s+/);
18
+ if (parts.length < 6) {
19
+ // Need at least 5 fields for cron expression + command
20
+ return null;
21
+ }
22
+ // Standard format: minute hour day month weekday command (5 fields + command)
23
+ // Extended format: second minute hour day month weekday command (6 fields + command)
24
+ // We need to determine which format is being used
25
+ let expression;
26
+ let command;
27
+ // If we have exactly 6 parts, it must be 5-field format (5 cron fields + 1 command word)
28
+ if (parts.length === 6) {
29
+ // 5-field format: minute hour day month weekday command
30
+ expression = parts.slice(0, 5).join(' ');
31
+ command = parts[5] || '';
32
+ }
33
+ else {
34
+ // 7+ parts: could be 5-field with multi-word command or 6-field format
35
+ // Try parsing as 5-field first (more common), then 6-field if that fails
36
+ const potential5Field = parts.slice(0, 5).join(' ');
37
+ const potential6Field = parts.slice(0, 6).join(' ');
38
+ let valid5Field = false;
39
+ let valid6Field = false;
40
+ // Try to validate 5-field format
41
+ try {
42
+ parseCronExpression(potential5Field);
43
+ valid5Field = true;
44
+ }
45
+ catch {
46
+ // Not a valid 5-field expression
47
+ }
48
+ // Try to validate 6-field format
49
+ try {
50
+ parseCronExpression(potential6Field);
51
+ valid6Field = true;
52
+ }
53
+ catch {
54
+ // Not a valid 6-field expression
55
+ }
56
+ // Prefer 5-field format if both are valid (more common)
57
+ // Only use 6-field if 5-field is invalid but 6-field is valid
58
+ if (valid5Field) {
59
+ expression = potential5Field;
60
+ command = parts.slice(5).join(' ');
61
+ }
62
+ else if (valid6Field) {
63
+ expression = potential6Field;
64
+ command = parts.slice(6).join(' ');
65
+ }
66
+ else {
67
+ // Neither format is valid, return null
68
+ return null;
69
+ }
70
+ }
71
+ // Validate the expression
72
+ try {
73
+ parseCronExpression(expression);
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ command = command.trim();
79
+ return { expression, command };
80
+ }
81
+ /**
82
+ * Parse a complete crontab file
83
+ * @param content - The crontab file content
84
+ * @returns Array of parsed crontab entries
85
+ */
86
+ function parseCrontabFile(content) {
87
+ const lines = content.split('\n');
88
+ const entries = [];
89
+ for (let i = 0; i < lines.length; i++) {
90
+ const line = lines[i]?.trim();
91
+ if (!line)
92
+ continue;
93
+ const parsed = parseCrontabLine(line);
94
+ if (parsed) {
95
+ entries.push({
96
+ expression: parsed.expression,
97
+ command: parsed.command,
98
+ lineNumber: i + 1
99
+ });
100
+ }
101
+ }
102
+ return entries;
103
+ }
104
+ function printUsage(process, terminal) {
105
+ const usage = `Usage: cron [COMMAND] [OPTIONS]
106
+
107
+ Manage scheduled tasks (crontabs).
108
+
109
+ Commands:
110
+ list List all active cron jobs
111
+ add <schedule> <cmd> Add a new cron job to user crontab
112
+ remove <id> Remove a cron job by ID
113
+ edit Open user crontab in editor
114
+ validate <expression> Validate a cron expression
115
+ next <expression> [N] Show next N execution times (default: 1)
116
+ test <expression> Test if expression matches current time
117
+ reload Reload crontabs from files
118
+
119
+ Examples:
120
+ cron list List all cron jobs
121
+ cron add "*/5 * * * *" "echo hello" Add job to run every 5 minutes
122
+ cron add "0 0 * * *" "echo daily" Add daily job at midnight
123
+ cron remove cron:user:1 Remove user cron job #1
124
+ cron validate "*/5 * * * *" Validate cron expression
125
+ cron next "*/5 * * * *" 5 Show next 5 execution times
126
+ cron test "*/5 * * * *" Test if expression matches now
127
+
128
+ Crontab format:
129
+ Standard: minute hour day month weekday command
130
+ Extended: second minute hour day month weekday command
131
+
132
+ --help display this help and exit`;
133
+ writelnStderr(process, terminal, usage);
134
+ }
135
+ export function createCommand(kernel, shell, terminal) {
136
+ return new TerminalCommand({
137
+ command: 'cron',
138
+ description: 'Manage scheduled tasks (crontabs)',
139
+ kernel,
140
+ shell,
141
+ terminal,
142
+ run: async (pid, argv) => {
143
+ const process = kernel.processes.get(pid);
144
+ if (argv.length === 0 || (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h'))) {
145
+ printUsage(process, terminal);
146
+ return 0;
147
+ }
148
+ const subcommand = argv[0];
149
+ try {
150
+ switch (subcommand) {
151
+ case 'list': {
152
+ const cronJobs = kernel.intervals.listCrons();
153
+ if (cronJobs.length === 0) {
154
+ await writelnStdout(process, terminal, 'No active cron jobs.');
155
+ return 0;
156
+ }
157
+ await writelnStdout(process, terminal, 'Active cron jobs:');
158
+ for (const jobName of cronJobs) {
159
+ await writelnStdout(process, terminal, ` ${jobName}`);
160
+ }
161
+ return 0;
162
+ }
163
+ case 'add': {
164
+ if (argv.length < 3) {
165
+ await writelnStderr(process, terminal, 'cron add: missing arguments');
166
+ await writelnStderr(process, terminal, 'Usage: cron add <schedule> <command>');
167
+ return 1;
168
+ }
169
+ const schedule = argv[1];
170
+ if (!schedule) {
171
+ await writelnStderr(process, terminal, 'cron add: missing schedule');
172
+ await writelnStderr(process, terminal, 'Usage: cron add <schedule> <command>');
173
+ return 1;
174
+ }
175
+ const command = argv.slice(2).join(' ');
176
+ // Validate the cron expression
177
+ try {
178
+ parseCronExpression(schedule);
179
+ }
180
+ catch (error) {
181
+ await writelnStderr(process, terminal, `cron add: invalid cron expression: ${schedule}`);
182
+ return 1;
183
+ }
184
+ // Get user home directory
185
+ const home = shell.env.get('HOME') ?? '/root';
186
+ const configDir = path.join(home, '.config');
187
+ const crontabPath = path.join(configDir, 'crontab');
188
+ // Ensure .config directory exists
189
+ try {
190
+ if (!await shell.context.fs.promises.exists(configDir)) {
191
+ await shell.context.fs.promises.mkdir(configDir, { recursive: true });
192
+ }
193
+ }
194
+ catch (error) {
195
+ await writelnStderr(process, terminal, `cron add: failed to create .config directory: ${error}`);
196
+ return 1;
197
+ }
198
+ // Read existing crontab or create new
199
+ let crontabContent = '';
200
+ try {
201
+ if (await shell.context.fs.promises.exists(crontabPath)) {
202
+ crontabContent = await shell.context.fs.promises.readFile(crontabPath, 'utf-8');
203
+ if (!crontabContent.endsWith('\n') && crontabContent.length > 0) {
204
+ crontabContent += '\n';
205
+ }
206
+ }
207
+ }
208
+ catch (error) {
209
+ // File doesn't exist or can't be read, start fresh
210
+ crontabContent = '';
211
+ }
212
+ // Add new entry
213
+ crontabContent += `${schedule} ${command}\n`;
214
+ // Write back to file
215
+ try {
216
+ await shell.context.fs.promises.writeFile(crontabPath, crontabContent, { encoding: 'utf-8' });
217
+ }
218
+ catch (error) {
219
+ await writelnStderr(process, terminal, `cron add: failed to write crontab: ${error}`);
220
+ return 1;
221
+ }
222
+ await writelnStdout(process, terminal, `Added cron job: ${schedule} ${command}`);
223
+ await writelnStdout(process, terminal, 'Run "cron reload" to activate the new job.');
224
+ return 0;
225
+ }
226
+ case 'remove': {
227
+ if (argv.length < 2) {
228
+ await writelnStderr(process, terminal, 'cron remove: missing job ID');
229
+ await writelnStderr(process, terminal, 'Usage: cron remove <id>');
230
+ return 1;
231
+ }
232
+ const jobId = argv[1];
233
+ if (!jobId) {
234
+ await writelnStderr(process, terminal, 'cron remove: missing job ID');
235
+ return 1;
236
+ }
237
+ const handle = kernel.intervals.getCron(jobId);
238
+ if (!handle) {
239
+ await writelnStderr(process, terminal, `cron remove: job not found: ${jobId}`);
240
+ return 1;
241
+ }
242
+ kernel.intervals.clearCron(jobId);
243
+ // Also remove from crontab file if it's a user job
244
+ if (jobId.startsWith('cron:user:')) {
245
+ const home = shell.env.get('HOME') ?? '/root';
246
+ const crontabPath = path.join(home, '.config', 'crontab');
247
+ try {
248
+ if (await shell.context.fs.promises.exists(crontabPath)) {
249
+ const content = await shell.context.fs.promises.readFile(crontabPath, 'utf-8');
250
+ const lines = content.split('\n');
251
+ const lineNumber = parseInt(jobId.replace('cron:user:', ''), 10);
252
+ if (lineNumber > 0 && lineNumber <= lines.length) {
253
+ // Remove the line (1-indexed to 0-indexed)
254
+ const entries = parseCrontabFile(content);
255
+ const entryToRemove = entries.find((e) => e.lineNumber === lineNumber);
256
+ if (entryToRemove) {
257
+ const newLines = lines.filter((_, idx) => idx + 1 !== lineNumber);
258
+ await shell.context.fs.promises.writeFile(crontabPath, newLines.join('\n'), { encoding: 'utf-8' });
259
+ }
260
+ }
261
+ }
262
+ }
263
+ catch (error) {
264
+ // Continue even if file update fails
265
+ kernel.log.warn(`Failed to update crontab file: ${error}`);
266
+ }
267
+ }
268
+ await writelnStdout(process, terminal, `Removed cron job: ${jobId}`);
269
+ return 0;
270
+ }
271
+ case 'edit': {
272
+ const home = shell.env.get('HOME') ?? '/root';
273
+ const crontabPath = path.join(home, '.config', 'crontab');
274
+ // Use view command to edit (or create if doesn't exist)
275
+ const result = await kernel.execute({
276
+ command: '/bin/view',
277
+ args: [crontabPath],
278
+ shell,
279
+ terminal
280
+ });
281
+ if (result === 0) {
282
+ await writelnStdout(process, terminal, 'Crontab edited. Run "cron reload" to apply changes.');
283
+ }
284
+ return result;
285
+ }
286
+ case 'validate': {
287
+ if (argv.length < 2) {
288
+ await writelnStderr(process, terminal, 'cron validate: missing expression');
289
+ await writelnStderr(process, terminal, 'Usage: cron validate <expression>');
290
+ return 1;
291
+ }
292
+ const expression = argv[1];
293
+ if (!expression) {
294
+ await writelnStderr(process, terminal, 'cron validate: missing expression');
295
+ return 1;
296
+ }
297
+ try {
298
+ parseCronExpression(expression);
299
+ await writelnStdout(process, terminal, `Valid cron expression: ${expression}`);
300
+ return 0;
301
+ }
302
+ catch (error) {
303
+ await writelnStderr(process, terminal, `Invalid cron expression: ${expression}`);
304
+ await writelnStderr(process, terminal, `Error: ${error instanceof Error ? error.message : String(error)}`);
305
+ return 1;
306
+ }
307
+ }
308
+ case 'next': {
309
+ if (argv.length < 2) {
310
+ await writelnStderr(process, terminal, 'cron next: missing expression');
311
+ await writelnStderr(process, terminal, 'Usage: cron next <expression> [count]');
312
+ return 1;
313
+ }
314
+ const expression = argv[1];
315
+ if (!expression) {
316
+ await writelnStderr(process, terminal, 'cron next: missing expression');
317
+ return 1;
318
+ }
319
+ const count = argv.length > 2 && argv[2] ? parseInt(argv[2], 10) : 1;
320
+ if (isNaN(count) || count < 1) {
321
+ await writelnStderr(process, terminal, 'cron next: invalid count (must be >= 1)');
322
+ return 1;
323
+ }
324
+ try {
325
+ const cron = parseCronExpression(expression);
326
+ const now = new Date();
327
+ const dates = cron.getNextDates(count, now);
328
+ await writelnStdout(process, terminal, `Next ${count} execution time(s) for "${expression}":`);
329
+ for (let i = 0; i < dates.length; i++) {
330
+ const date = dates[i];
331
+ if (date) {
332
+ await writelnStdout(process, terminal, ` ${i + 1}. ${date.toISOString()}`);
333
+ }
334
+ }
335
+ return 0;
336
+ }
337
+ catch (error) {
338
+ await writelnStderr(process, terminal, `Invalid cron expression: ${expression}`);
339
+ await writelnStderr(process, terminal, `Error: ${error instanceof Error ? error.message : String(error)}`);
340
+ return 1;
341
+ }
342
+ }
343
+ case 'test': {
344
+ if (argv.length < 2) {
345
+ await writelnStderr(process, terminal, 'cron test: missing expression');
346
+ await writelnStderr(process, terminal, 'Usage: cron test <expression>');
347
+ return 1;
348
+ }
349
+ const expression = argv[1];
350
+ if (!expression) {
351
+ await writelnStderr(process, terminal, 'cron test: missing expression');
352
+ return 1;
353
+ }
354
+ try {
355
+ const cron = parseCronExpression(expression);
356
+ const now = new Date();
357
+ const matches = cron.matchDate(now);
358
+ if (matches) {
359
+ await writelnStdout(process, terminal, `Expression "${expression}" matches current time: ${now.toISOString()}`);
360
+ }
361
+ else {
362
+ await writelnStdout(process, terminal, `Expression "${expression}" does not match current time: ${now.toISOString()}`);
363
+ }
364
+ return 0;
365
+ }
366
+ catch (error) {
367
+ await writelnStderr(process, terminal, `Invalid cron expression: ${expression}`);
368
+ await writelnStderr(process, terminal, `Error: ${error instanceof Error ? error.message : String(error)}`);
369
+ return 1;
370
+ }
371
+ }
372
+ case 'reload': {
373
+ // Clear all existing cron jobs
374
+ const existingJobs = kernel.intervals.listCrons();
375
+ for (const jobName of existingJobs) {
376
+ kernel.intervals.clearCron(jobName);
377
+ }
378
+ // Reload system crontab
379
+ try {
380
+ const systemCrontabPath = '/etc/crontab';
381
+ if (await kernel.filesystem.fs.exists(systemCrontabPath)) {
382
+ const content = await kernel.filesystem.fs.readFile(systemCrontabPath, 'utf-8');
383
+ const entries = parseCrontabFile(content);
384
+ for (const entry of entries) {
385
+ const jobName = `cron:system:${entry.lineNumber}`;
386
+ kernel.intervals.setCron(jobName, entry.expression, async () => {
387
+ await kernel.shell.execute(entry.command);
388
+ }, {
389
+ errorHandler: (err) => {
390
+ kernel.log.error(`Cron job ${jobName} failed: ${err instanceof Error ? err.message : String(err)}`);
391
+ }
392
+ });
393
+ }
394
+ }
395
+ }
396
+ catch (error) {
397
+ kernel.log.warn(`Failed to load system crontab: ${error}`);
398
+ }
399
+ // Reload user crontab
400
+ try {
401
+ const home = shell.env.get('HOME') ?? '/root';
402
+ const userCrontabPath = path.join(home, '.config', 'crontab');
403
+ if (await shell.context.fs.promises.exists(userCrontabPath)) {
404
+ const content = await shell.context.fs.promises.readFile(userCrontabPath, 'utf-8');
405
+ const entries = parseCrontabFile(content);
406
+ for (const entry of entries) {
407
+ const jobName = `cron:user:${entry.lineNumber}`;
408
+ // Ensure command is properly trimmed and preserved
409
+ const command = entry.command.trim();
410
+ kernel.intervals.setCron(jobName, entry.expression, async () => {
411
+ await kernel.shell.execute(command);
412
+ }, {
413
+ errorHandler: (err) => {
414
+ kernel.log.error(`Cron job ${jobName} failed: ${err instanceof Error ? err.message : String(err)}`);
415
+ }
416
+ });
417
+ }
418
+ }
419
+ }
420
+ catch (error) {
421
+ kernel.log.warn(`Failed to load user crontab: ${error}`);
422
+ }
423
+ await writelnStdout(process, terminal, 'Crontabs reloaded.');
424
+ return 0;
425
+ }
426
+ default:
427
+ await writelnStderr(process, terminal, `cron: unknown command: ${subcommand}`);
428
+ await writelnStderr(process, terminal, "Try 'cron --help' for more information.");
429
+ return 1;
430
+ }
431
+ }
432
+ catch (error) {
433
+ await writelnStderr(process, terminal, `cron: error: ${error instanceof Error ? error.message : String(error)}`);
434
+ return 1;
435
+ }
436
+ }
437
+ });
438
+ }
439
+ //# sourceMappingURL=cron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/commands/cron.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { TerminalCommand } from '../shared/terminal-command.js';
2
- import { writelnStdout } from '../shared/helpers.js';
2
+ import { writelnStdout, writelnStderr } from '../shared/helpers.js';
3
3
  function printUsage(process, terminal) {
4
4
  const usage = `Usage: date [OPTION]... [+FORMAT]
5
5
  Print or set the system date and time.
@@ -8,7 +8,7 @@ Print or set the system date and time.
8
8
  -R, --rfc-2822 output date and time in RFC 2822 format
9
9
  -f, --format=FORMAT output date/time in specified format (strftime-like)
10
10
  --help display this help and exit`;
11
- writelnStdout(process, terminal, usage);
11
+ writelnStderr(process, terminal, usage);
12
12
  }
13
13
  export function createCommand(kernel, shell, terminal) {
14
14
  return new TerminalCommand({
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/commands/date.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/commands/date.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { TerminalCommand } from '../shared/terminal-command.js';
2
- import { writelnStdout } from '../shared/helpers.js';
2
+ import { writelnStdout, writelnStderr } from '../shared/helpers.js';
3
3
  function printUsage(process, terminal) {
4
4
  const usage = `Usage: echo [OPTION]... [STRING]...
5
5
  Echo the STRING(s) to standard output.
6
6
 
7
7
  -n do not output the trailing newline
8
8
  --help display this help and exit`;
9
- writelnStdout(process, terminal, usage);
9
+ writelnStderr(process, terminal, usage);
10
10
  }
11
11
  export function createCommand(kernel, shell, terminal) {
12
12
  return new TerminalCommand({
@@ -1 +1 @@
1
- {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/commands/echo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,SAAS,UAAU,CAAC,OAA4B,EAAE,QAAkB;IAClE,MAAM,KAAK,GAAG;;;;oCAIoB,CAAA;IAClC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAY,EAAE,QAAkB;IAC5E,OAAO,IAAI,eAAe,CAAC;QACzB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,wCAAwC;QACrD,MAAM;QACN,KAAK;QACL,QAAQ;QACR,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,IAAc,EAAE,EAAE;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAwB,CAAA;YAEhE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;gBAC1C,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,MAAM,SAAS,GAAa,EAAE,CAAA;YAC9B,IAAI,CAAC,GAAG,CAAC,CAAA;YAET,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,CAAC,EAAE,CAAA;oBACH,SAAQ;gBACV,CAAC;gBACD,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACrC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;oBAC7B,OAAO,CAAC,CAAA;gBACV,CAAC;qBAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACxB,SAAS,GAAG,IAAI,CAAA;gBAClB,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxB,SAAS,GAAG,IAAI,CAAA;oBAClB,CAAC;oBACD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA;oBAC9C,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,WAAW,GAAG,CAAC,CAAA;wBAClF,OAAO,CAAC,CAAA;oBACV,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACrB,CAAC;gBACD,CAAC,EAAE,CAAA;YACL,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAA;YAE7C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;gBACzC,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;gBACtD,CAAC;wBAAS,CAAC;oBACT,MAAM,CAAC,WAAW,EAAE,CAAA;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACxB,CAAC;YAED,OAAO,CAAC,CAAA;QACV,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/commands/echo.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { TerminalCommand } from '../shared/terminal-command.js';
2
- import { writelnStdout } from '../shared/helpers.js';
2
+ import { writelnStderr } from '../shared/helpers.js';
3
3
  function printUsage(process, terminal) {
4
4
  const usage = `Usage: false
5
5
  Return an unsuccessful exit status.
6
6
 
7
7
  --help display this help and exit`;
8
- writelnStdout(process, terminal, usage);
8
+ writelnStderr(process, terminal, usage);
9
9
  }
10
10
  export function createCommand(kernel, shell, terminal) {
11
11
  return new TerminalCommand({
@@ -0,0 +1,4 @@
1
+ import type { Kernel, Shell, Terminal } from '@ecmaos/types';
2
+ import { TerminalCommand } from '../shared/terminal-command.js';
3
+ export declare function createCommand(kernel: Kernel, shell: Shell, terminal: Terminal): TerminalCommand;
4
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/commands/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAoB/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAqL/F"}