@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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +37 -0
- package/LICENSE +1 -1
- package/dist/commands/cal.js +2 -2
- package/dist/commands/cal.js.map +1 -1
- package/dist/commands/cat.js +2 -2
- package/dist/commands/cd.js +2 -2
- package/dist/commands/chmod.d.ts.map +1 -1
- package/dist/commands/chmod.js +16 -11
- package/dist/commands/chmod.js.map +1 -1
- package/dist/commands/cp.js +2 -2
- package/dist/commands/cp.js.map +1 -1
- package/dist/commands/cron.d.ts +4 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +439 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/date.js +2 -2
- package/dist/commands/date.js.map +1 -1
- package/dist/commands/echo.js +2 -2
- package/dist/commands/echo.js.map +1 -1
- package/dist/commands/false.js +2 -2
- package/dist/commands/fetch.d.ts +4 -0
- package/dist/commands/fetch.d.ts.map +1 -0
- package/dist/commands/fetch.js +210 -0
- package/dist/commands/fetch.js.map +1 -0
- package/dist/commands/format.d.ts +4 -0
- package/dist/commands/format.d.ts.map +1 -0
- package/dist/commands/format.js +178 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/hash.d.ts +4 -0
- package/dist/commands/hash.d.ts.map +1 -0
- package/dist/commands/hash.js +200 -0
- package/dist/commands/hash.js.map +1 -0
- package/dist/commands/head.js +2 -2
- package/dist/commands/id.js +2 -2
- package/dist/commands/id.js.map +1 -1
- package/dist/commands/less.d.ts.map +1 -1
- package/dist/commands/less.js +53 -2
- package/dist/commands/less.js.map +1 -1
- package/dist/commands/ls.d.ts.map +1 -1
- package/dist/commands/ls.js +41 -15
- package/dist/commands/ls.js.map +1 -1
- package/dist/commands/man.d.ts +4 -0
- package/dist/commands/man.d.ts.map +1 -0
- package/dist/commands/man.js +564 -0
- package/dist/commands/man.js.map +1 -0
- package/dist/commands/mkdir.js +2 -2
- package/dist/commands/mkdir.js.map +1 -1
- package/dist/commands/mktemp.d.ts +4 -0
- package/dist/commands/mktemp.d.ts.map +1 -0
- package/dist/commands/mktemp.js +229 -0
- package/dist/commands/mktemp.js.map +1 -0
- package/dist/commands/nc.js +2 -2
- package/dist/commands/nc.js.map +1 -1
- package/dist/commands/open.d.ts +4 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +74 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/passkey.js +3 -3
- package/dist/commands/play.d.ts +4 -0
- package/dist/commands/play.d.ts.map +1 -0
- package/dist/commands/play.js +231 -0
- package/dist/commands/play.js.map +1 -0
- package/dist/commands/pwd.js +2 -2
- package/dist/commands/pwd.js.map +1 -1
- package/dist/commands/rm.d.ts.map +1 -1
- package/dist/commands/rm.js +57 -12
- package/dist/commands/rm.js.map +1 -1
- package/dist/commands/rmdir.js +2 -2
- package/dist/commands/rmdir.js.map +1 -1
- package/dist/commands/sockets.js +1 -1
- package/dist/commands/stat.d.ts.map +1 -1
- package/dist/commands/stat.js +37 -15
- package/dist/commands/stat.js.map +1 -1
- package/dist/commands/tail.js +2 -2
- package/dist/commands/tar.d.ts +4 -0
- package/dist/commands/tar.d.ts.map +1 -0
- package/dist/commands/tar.js +743 -0
- package/dist/commands/tar.js.map +1 -0
- package/dist/commands/touch.js +2 -2
- package/dist/commands/touch.js.map +1 -1
- package/dist/commands/true.js +2 -2
- package/dist/commands/unzip.d.ts +4 -0
- package/dist/commands/unzip.d.ts.map +1 -0
- package/dist/commands/unzip.js +443 -0
- package/dist/commands/unzip.js.map +1 -0
- package/dist/commands/user.js +1 -1
- package/dist/commands/video.d.ts +4 -0
- package/dist/commands/video.d.ts.map +1 -0
- package/dist/commands/video.js +250 -0
- package/dist/commands/video.js.map +1 -0
- package/dist/commands/view.d.ts +4 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +488 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/commands/web.d.ts +4 -0
- package/dist/commands/web.d.ts.map +1 -0
- package/dist/commands/web.js +348 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/commands/whoami.js +2 -2
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/zip.d.ts +4 -0
- package/dist/commands/zip.d.ts.map +1 -0
- package/dist/commands/zip.js +264 -0
- package/dist/commands/zip.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -2
- package/dist/index.js.map +1 -1
- package/package.json +7 -4
- package/src/commands/cal.ts +2 -2
- package/src/commands/cat.ts +2 -2
- package/src/commands/cd.ts +2 -2
- package/src/commands/chmod.ts +19 -11
- package/src/commands/cp.ts +2 -2
- package/src/commands/cron.ts +499 -0
- package/src/commands/date.ts +2 -2
- package/src/commands/echo.ts +2 -2
- package/src/commands/false.ts +2 -2
- package/src/commands/fetch.ts +205 -0
- package/src/commands/format.ts +204 -0
- package/src/commands/hash.ts +215 -0
- package/src/commands/head.ts +2 -2
- package/src/commands/id.ts +2 -2
- package/src/commands/less.ts +50 -2
- package/src/commands/ls.ts +40 -14
- package/src/commands/man.ts +651 -0
- package/src/commands/mkdir.ts +2 -2
- package/src/commands/mktemp.ts +235 -0
- package/src/commands/nc.ts +2 -2
- package/src/commands/open.ts +84 -0
- package/src/commands/passkey.ts +3 -3
- package/src/commands/play.ts +249 -0
- package/src/commands/pwd.ts +2 -2
- package/src/commands/rm.ts +54 -12
- package/src/commands/rmdir.ts +2 -2
- package/src/commands/sockets.ts +1 -1
- package/src/commands/stat.ts +44 -16
- package/src/commands/tail.ts +2 -2
- package/src/commands/tar.ts +780 -0
- package/src/commands/touch.ts +2 -2
- package/src/commands/true.ts +2 -2
- package/src/commands/unzip.ts +517 -0
- package/src/commands/user.ts +1 -1
- package/src/commands/video.ts +267 -0
- package/src/commands/view.ts +526 -0
- package/src/commands/web.ts +377 -0
- package/src/commands/whoami.ts +2 -2
- package/src/commands/zip.ts +319 -0
- package/src/index.ts +44 -2
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
4
|
+
import { writelnStderr, writelnStdout } from '../shared/helpers.js';
|
|
5
|
+
function printUsage(process, terminal) {
|
|
6
|
+
const usage = `Usage: play [OPTIONS] [FILE...]
|
|
7
|
+
Play an audio file.
|
|
8
|
+
|
|
9
|
+
--help display this help and exit
|
|
10
|
+
--no-autoplay don't start playing automatically
|
|
11
|
+
--loop loop the audio
|
|
12
|
+
--muted start muted
|
|
13
|
+
--volume <0-100> set volume (0-100, default: 100)
|
|
14
|
+
--quiet play without opening a window (background playback)
|
|
15
|
+
|
|
16
|
+
Examples:
|
|
17
|
+
play song.mp3 play an audio file
|
|
18
|
+
play --loop music.mp3 play audio in a loop
|
|
19
|
+
play --no-autoplay audio.mp3 load audio without auto-playing
|
|
20
|
+
play --volume 50 track.mp3 play at 50% volume
|
|
21
|
+
play --quiet background.mp3 play audio in background
|
|
22
|
+
play song1.mp3 song2.mp3 play multiple audio files`;
|
|
23
|
+
writelnStderr(process, terminal, usage);
|
|
24
|
+
}
|
|
25
|
+
function getMimeType(filePath) {
|
|
26
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
27
|
+
const mimeTypes = {
|
|
28
|
+
'.mp3': 'audio/mpeg',
|
|
29
|
+
'.wav': 'audio/wav',
|
|
30
|
+
'.ogg': 'audio/ogg',
|
|
31
|
+
'.oga': 'audio/ogg',
|
|
32
|
+
'.opus': 'audio/opus',
|
|
33
|
+
'.m4a': 'audio/mp4',
|
|
34
|
+
'.aac': 'audio/aac',
|
|
35
|
+
'.flac': 'audio/flac',
|
|
36
|
+
'.webm': 'audio/webm',
|
|
37
|
+
'.wma': 'audio/x-ms-wma',
|
|
38
|
+
'.aiff': 'audio/aiff',
|
|
39
|
+
'.aif': 'audio/aiff',
|
|
40
|
+
'.3gp': 'audio/3gpp',
|
|
41
|
+
'.amr': 'audio/amr'
|
|
42
|
+
};
|
|
43
|
+
return mimeTypes[ext] || 'audio/mpeg';
|
|
44
|
+
}
|
|
45
|
+
async function loadAudioMetadata(audioElement) {
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
const timeout = setTimeout(() => {
|
|
48
|
+
reject(new Error('Timeout loading audio metadata'));
|
|
49
|
+
}, 10000);
|
|
50
|
+
audioElement.onloadedmetadata = () => {
|
|
51
|
+
clearTimeout(timeout);
|
|
52
|
+
resolve({
|
|
53
|
+
duration: audioElement.duration
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
audioElement.onerror = () => {
|
|
57
|
+
clearTimeout(timeout);
|
|
58
|
+
reject(new Error('Failed to load audio metadata'));
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function formatDuration(seconds) {
|
|
63
|
+
if (!isFinite(seconds) || isNaN(seconds))
|
|
64
|
+
return '?:??';
|
|
65
|
+
const hours = Math.floor(seconds / 3600);
|
|
66
|
+
const minutes = Math.floor((seconds % 3600) / 60);
|
|
67
|
+
const secs = Math.floor(seconds % 60);
|
|
68
|
+
if (hours > 0) {
|
|
69
|
+
return `${hours}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
|
|
70
|
+
}
|
|
71
|
+
return `${minutes}:${secs.toString().padStart(2, '0')}`;
|
|
72
|
+
}
|
|
73
|
+
export function createCommand(kernel, shell, terminal) {
|
|
74
|
+
return new TerminalCommand({
|
|
75
|
+
command: 'play',
|
|
76
|
+
description: 'Play an audio file',
|
|
77
|
+
kernel,
|
|
78
|
+
shell,
|
|
79
|
+
terminal,
|
|
80
|
+
run: async (pid, argv) => {
|
|
81
|
+
const process = kernel.processes.get(pid);
|
|
82
|
+
if (!process)
|
|
83
|
+
return 1;
|
|
84
|
+
if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
|
|
85
|
+
printUsage(process, terminal);
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
// Parse options
|
|
89
|
+
const options = {
|
|
90
|
+
autoplay: true,
|
|
91
|
+
loop: false,
|
|
92
|
+
muted: false,
|
|
93
|
+
volume: 100,
|
|
94
|
+
quiet: false
|
|
95
|
+
};
|
|
96
|
+
const files = [];
|
|
97
|
+
for (let i = 0; i < argv.length; i++) {
|
|
98
|
+
const arg = argv[i];
|
|
99
|
+
if (arg === '--no-autoplay') {
|
|
100
|
+
options.autoplay = false;
|
|
101
|
+
}
|
|
102
|
+
else if (arg === '--loop') {
|
|
103
|
+
options.loop = true;
|
|
104
|
+
}
|
|
105
|
+
else if (arg === '--muted') {
|
|
106
|
+
options.muted = true;
|
|
107
|
+
}
|
|
108
|
+
else if (arg === '--quiet') {
|
|
109
|
+
options.quiet = true;
|
|
110
|
+
}
|
|
111
|
+
else if (arg === '--volume' && i + 1 < argv.length) {
|
|
112
|
+
const volumeArg = argv[i + 1];
|
|
113
|
+
if (!volumeArg) {
|
|
114
|
+
await writelnStderr(process, terminal, chalk.red(`play: missing volume value`));
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
const volume = parseFloat(volumeArg);
|
|
118
|
+
if (isNaN(volume) || volume < 0 || volume > 100) {
|
|
119
|
+
await writelnStderr(process, terminal, chalk.red(`play: invalid volume: ${volumeArg} (must be 0-100)`));
|
|
120
|
+
return 1;
|
|
121
|
+
}
|
|
122
|
+
options.volume = volume;
|
|
123
|
+
i++; // Skip next argument
|
|
124
|
+
}
|
|
125
|
+
else if (arg && !arg.startsWith('--')) {
|
|
126
|
+
files.push(arg);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (files.length === 0) {
|
|
130
|
+
await writelnStderr(process, terminal, `play: missing file argument`);
|
|
131
|
+
await writelnStderr(process, terminal, `Try 'play --help' for more information.`);
|
|
132
|
+
return 1;
|
|
133
|
+
}
|
|
134
|
+
// Process each audio file
|
|
135
|
+
for (const file of files) {
|
|
136
|
+
const fullPath = path.resolve(shell.cwd, file);
|
|
137
|
+
try {
|
|
138
|
+
// Check if file exists
|
|
139
|
+
if (!(await shell.context.fs.promises.exists(fullPath))) {
|
|
140
|
+
await writelnStderr(process, terminal, chalk.red(`play: file not found: ${fullPath}`));
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
// Read file
|
|
144
|
+
await writelnStdout(process, terminal, chalk.blue(`Loading audio: ${file}...`));
|
|
145
|
+
const fileData = await shell.context.fs.promises.readFile(fullPath);
|
|
146
|
+
const mimeType = getMimeType(fullPath);
|
|
147
|
+
const blob = new Blob([new Uint8Array(fileData)], { type: mimeType });
|
|
148
|
+
const url = URL.createObjectURL(blob);
|
|
149
|
+
// Load audio metadata
|
|
150
|
+
const audioElement = document.createElement('audio');
|
|
151
|
+
audioElement.src = url;
|
|
152
|
+
audioElement.preload = 'metadata';
|
|
153
|
+
let duration = 0;
|
|
154
|
+
try {
|
|
155
|
+
const metadata = await loadAudioMetadata(audioElement);
|
|
156
|
+
duration = metadata.duration;
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
await writelnStderr(process, terminal, chalk.yellow(`play: warning: could not load metadata for ${file}`));
|
|
160
|
+
}
|
|
161
|
+
// Set audio properties
|
|
162
|
+
audioElement.volume = options.volume / 100;
|
|
163
|
+
if (options.autoplay)
|
|
164
|
+
audioElement.autoplay = true;
|
|
165
|
+
if (options.loop)
|
|
166
|
+
audioElement.loop = true;
|
|
167
|
+
if (options.muted)
|
|
168
|
+
audioElement.muted = true;
|
|
169
|
+
if (options.quiet) {
|
|
170
|
+
// Background playback - no window
|
|
171
|
+
audioElement.play().catch((error) => {
|
|
172
|
+
// Autoplay may be blocked by browser, but that's okay for quiet mode
|
|
173
|
+
console.warn('Autoplay blocked:', error);
|
|
174
|
+
});
|
|
175
|
+
if (duration > 0) {
|
|
176
|
+
const durationStr = formatDuration(duration);
|
|
177
|
+
await writelnStdout(process, terminal, chalk.green(`Playing in background: ${file} (${durationStr})`));
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
await writelnStdout(process, terminal, chalk.green(`Playing in background: ${file}`));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
// Create a simple audio player window
|
|
185
|
+
const windowTitle = files.length > 1
|
|
186
|
+
? `${path.basename(file)} (${files.indexOf(file) + 1}/${files.length})`
|
|
187
|
+
: path.basename(file);
|
|
188
|
+
// Create audio player HTML with controls
|
|
189
|
+
const audioId = `audio-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
190
|
+
const audioHtml = `
|
|
191
|
+
<div style="width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1e1e1e;color:#fff;font-family:monospace;padding:20px;box-sizing:border-box;">
|
|
192
|
+
<div style="font-size:18px;margin-bottom:20px;text-align:center;word-break:break-word;">${path.basename(file)}</div>
|
|
193
|
+
<audio id="${audioId}" src="${url}" ${options.autoplay ? 'autoplay' : ''} ${options.loop ? 'loop' : ''} ${options.muted ? 'muted' : ''} controls style="width:100%;max-width:600px;"></audio>
|
|
194
|
+
</div>
|
|
195
|
+
<script>
|
|
196
|
+
(function() {
|
|
197
|
+
const audio = document.getElementById('${audioId}');
|
|
198
|
+
if (audio) {
|
|
199
|
+
audio.volume = ${options.volume / 100};
|
|
200
|
+
audio.addEventListener('play', () => console.log('Playing: ${file}'));
|
|
201
|
+
audio.addEventListener('ended', () => console.log('Finished: ${file}'));
|
|
202
|
+
}
|
|
203
|
+
})();
|
|
204
|
+
</script>
|
|
205
|
+
`;
|
|
206
|
+
kernel.windows.create({
|
|
207
|
+
title: windowTitle,
|
|
208
|
+
html: audioHtml,
|
|
209
|
+
width: 500,
|
|
210
|
+
height: 200,
|
|
211
|
+
max: false
|
|
212
|
+
});
|
|
213
|
+
if (duration > 0) {
|
|
214
|
+
const durationStr = formatDuration(duration);
|
|
215
|
+
await writelnStdout(process, terminal, chalk.green(`Playing: ${file} (${durationStr})`));
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
await writelnStdout(process, terminal, chalk.green(`Playing: ${file}`));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
await writelnStderr(process, terminal, chalk.red(`play: error playing ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
224
|
+
return 1;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return 0;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=play.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"play.js","sourceRoot":"","sources":["../../src/commands/play.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/pwd.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
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: pwd
|
|
5
5
|
Print the name of the current working directory.
|
|
6
6
|
|
|
7
7
|
--help display this help and exit`;
|
|
8
|
-
|
|
8
|
+
writelnStderr(process, terminal, usage);
|
|
9
9
|
}
|
|
10
10
|
export function createCommand(kernel, shell, terminal) {
|
|
11
11
|
return new TerminalCommand({
|
package/dist/commands/pwd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pwd.js","sourceRoot":"","sources":["../../src/commands/pwd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"pwd.js","sourceRoot":"","sources":["../../src/commands/pwd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEnE,SAAS,UAAU,CAAC,OAA4B,EAAE,QAAkB;IAClE,MAAM,KAAK,GAAG;;;qCAGqB,CAAA;IACnC,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,KAAK;QACd,WAAW,EAAE,mCAAmC;QAChD,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,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBAClE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAC7B,OAAO,CAAC,CAAA;YACV,CAAC;YAED,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YACjD,OAAO,CAAC,CAAA;QACV,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAa/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA6J/F"}
|
package/dist/commands/rm.js
CHANGED
|
@@ -5,7 +5,9 @@ function printUsage(process, terminal) {
|
|
|
5
5
|
const usage = `Usage: rm [OPTION]... FILE...
|
|
6
6
|
Remove (unlink) the FILE(s).
|
|
7
7
|
|
|
8
|
-
--
|
|
8
|
+
-f, --force ignore nonexistent files and arguments, never prompt
|
|
9
|
+
-r, -R, --recursive remove directories and their contents recursively
|
|
10
|
+
--help display this help and exit`;
|
|
9
11
|
writelnStderr(process, terminal, usage);
|
|
10
12
|
}
|
|
11
13
|
export function createCommand(kernel, shell, terminal) {
|
|
@@ -26,10 +28,36 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
26
28
|
printUsage(process, terminal);
|
|
27
29
|
return 0;
|
|
28
30
|
}
|
|
31
|
+
let recursive = false;
|
|
32
|
+
let force = false;
|
|
29
33
|
const pathArray = [];
|
|
30
34
|
for (const arg of argv) {
|
|
31
35
|
if (arg.startsWith('-') && arg !== '--') {
|
|
32
|
-
|
|
36
|
+
// Handle combined flags like -rf, -fr, -rR, etc.
|
|
37
|
+
if (arg === '--recursive' || arg === '-R') {
|
|
38
|
+
recursive = true;
|
|
39
|
+
}
|
|
40
|
+
else if (arg === '--force') {
|
|
41
|
+
force = true;
|
|
42
|
+
}
|
|
43
|
+
else if (arg.length > 1) {
|
|
44
|
+
// Parse individual flags in combined options like -rf
|
|
45
|
+
for (let i = 1; i < arg.length; i++) {
|
|
46
|
+
const flag = arg[i];
|
|
47
|
+
if (flag === 'r' || flag === 'R') {
|
|
48
|
+
recursive = true;
|
|
49
|
+
}
|
|
50
|
+
else if (flag === 'f') {
|
|
51
|
+
force = true;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
await writelnStderr(process, terminal, `rm: invalid option -- '${flag}'`);
|
|
55
|
+
await writelnStderr(process, terminal, "Try 'rm --help' for more information.");
|
|
56
|
+
return 1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
33
61
|
await writelnStderr(process, terminal, `rm: invalid option -- '${arg.slice(1)}'`);
|
|
34
62
|
await writelnStderr(process, terminal, "Try 'rm --help' for more information.");
|
|
35
63
|
return 1;
|
|
@@ -91,24 +119,41 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
91
119
|
let hasError = false;
|
|
92
120
|
for (const target of expandedPaths) {
|
|
93
121
|
if (!target || typeof target !== 'string') {
|
|
94
|
-
|
|
95
|
-
|
|
122
|
+
if (!force) {
|
|
123
|
+
await writelnStderr(process, terminal, `rm: ${String(target)}: No such file or directory`);
|
|
124
|
+
hasError = true;
|
|
125
|
+
}
|
|
96
126
|
continue;
|
|
97
127
|
}
|
|
98
128
|
const fullPath = path.resolve(shell.cwd, target);
|
|
99
129
|
try {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
await shell.context.fs.promises.
|
|
130
|
+
// Check if it's a directory to validate recursive flag requirement
|
|
131
|
+
try {
|
|
132
|
+
const stat = await shell.context.fs.promises.stat(fullPath);
|
|
133
|
+
if (stat.isDirectory() && !recursive) {
|
|
134
|
+
await writelnStderr(process, terminal, `rm: ${target}: is a directory`);
|
|
135
|
+
hasError = true;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
103
138
|
}
|
|
104
|
-
|
|
105
|
-
|
|
139
|
+
catch (statError) {
|
|
140
|
+
// If stat fails, the file might not exist
|
|
141
|
+
// If force is enabled, we'll try to remove it anyway (rm will handle it)
|
|
142
|
+
// If force is not enabled, we'll let rm handle the error
|
|
106
143
|
}
|
|
144
|
+
// Use fs.promises.rm with appropriate options
|
|
145
|
+
await shell.context.fs.promises.rm(fullPath, {
|
|
146
|
+
recursive: recursive,
|
|
147
|
+
force: force
|
|
148
|
+
});
|
|
107
149
|
}
|
|
108
150
|
catch (error) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
151
|
+
// If force is enabled, ignore errors
|
|
152
|
+
if (!force) {
|
|
153
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
154
|
+
await writelnStderr(process, terminal, `rm: ${target}: ${errorMessage}`);
|
|
155
|
+
hasError = true;
|
|
156
|
+
}
|
|
112
157
|
}
|
|
113
158
|
}
|
|
114
159
|
return hasError ? 1 : 0;
|
package/dist/commands/rm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,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
|
|
1
|
+
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../src/commands/rm.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,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;;;;;6CAK6B,CAAA;IAC3C,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,IAAI;QACb,WAAW,EAAE,6BAA6B;QAC1C,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,qBAAqB,CAAC,CAAA;gBAC7D,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,uCAAuC,CAAC,CAAA;gBAC/E,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7C,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAC7B,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,MAAM,SAAS,GAAa,EAAE,CAAA;YAE9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACxC,iDAAiD;oBACjD,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;wBAC1C,SAAS,GAAG,IAAI,CAAA;oBAClB,CAAC;yBAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBAC7B,KAAK,GAAG,IAAI,CAAA;oBACd,CAAC;yBAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1B,sDAAsD;wBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BACpC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;4BACnB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gCACjC,SAAS,GAAG,IAAI,CAAA;4BAClB,CAAC;iCAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gCACxB,KAAK,GAAG,IAAI,CAAA;4BACd,CAAC;iCAAM,CAAC;gCACN,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,0BAA0B,IAAI,GAAG,CAAC,CAAA;gCACzE,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,uCAAuC,CAAC,CAAA;gCAC/E,OAAO,CAAC,CAAA;4BACV,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,0BAA0B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;wBACjF,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,uCAAuC,CAAC,CAAA;wBAC/E,OAAO,CAAC,CAAA;oBACV,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACrB,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAA;gBAC7D,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,uCAAuC,CAAC,CAAA;gBAC/E,OAAO,CAAC,CAAA;YACV,CAAC;YAED,MAAM,UAAU,GAAG,KAAK,EAAE,OAAe,EAAqB,EAAE;gBAC9D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,OAAO,CAAC,OAAO,CAAC,CAAA;gBAClB,CAAC;gBAED,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBAC/C,MAAM,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC;oBACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;oBACnE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;gBACb,MAAM,WAAW,GAAG,cAAc,KAAK,CAAC,CAAC;oBACvC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;oBACvC,CAAC,CAAC,OAAO,CAAA;gBAEX,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;oBAClE,MAAM,YAAY,GAAG,WAAW;yBAC7B,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;yBACrB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;yBACpB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;oBACtB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAA;oBAE7C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;oBAE1D,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;wBAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAA;wBACxD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,CAAA;oBAC9C,CAAC;oBACD,OAAO,OAAO,CAAA;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,EAAE,CAAA;gBACX,CAAC;YACH,CAAC,CAAA;YAED,MAAM,aAAa,GAAa,EAAE,CAAA;YAClC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC7B,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;gBACjC,CAAC;YACH,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAA;gBAC7D,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,uCAAuC,CAAC,CAAA;gBAC/E,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,QAAQ,GAAG,KAAK,CAAA;YAEpB,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAA;wBAC1F,QAAQ,GAAG,IAAI,CAAA;oBACjB,CAAC;oBACD,SAAQ;gBACV,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;gBAEhD,IAAI,CAAC;oBACH,mEAAmE;oBACnE,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;wBAC3D,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;4BACrC,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,MAAM,kBAAkB,CAAC,CAAA;4BACvE,QAAQ,GAAG,IAAI,CAAA;4BACf,SAAQ;wBACV,CAAC;oBACH,CAAC;oBAAC,OAAO,SAAS,EAAE,CAAC;wBACnB,0CAA0C;wBAC1C,yEAAyE;wBACzE,yDAAyD;oBAC3D,CAAC;oBAED,8CAA8C;oBAC9C,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE;wBAC3C,SAAS,EAAE,SAAS;wBACpB,KAAK,EAAE,KAAK;qBACb,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,qCAAqC;oBACrC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;wBAC3E,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,MAAM,KAAK,YAAY,EAAE,CAAC,CAAA;wBACxE,QAAQ,GAAG,IAAI,CAAA;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/commands/rmdir.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
3
|
-
import {
|
|
3
|
+
import { writelnStderr } from '../shared/helpers.js';
|
|
4
4
|
function printUsage(process, terminal) {
|
|
5
5
|
const usage = `Usage: rmdir [OPTION]... DIRECTORY...
|
|
6
6
|
Remove the DIRECTORY(ies), if they are empty.
|
|
7
7
|
|
|
8
8
|
--help display this help and exit`;
|
|
9
|
-
|
|
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":"rmdir.js","sourceRoot":"","sources":["../../src/commands/rmdir.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"rmdir.js","sourceRoot":"","sources":["../../src/commands/rmdir.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,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;;;qCAGqB,CAAA;IACnC,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,OAAO;QAChB,WAAW,EAAE,oBAAoB;QACjC,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,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;gBAClE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBAC7B,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,wBAAwB,CAAC,CAAA;gBAChE,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,0CAA0C,CAAC,CAAA;gBAClF,OAAO,CAAC,CAAA;YACV,CAAC;YAED,IAAI,QAAQ,GAAG,KAAK,CAAA;YAEpB,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAQ;gBAE/C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;gBAErE,IAAI,CAAC;oBACH,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBAChF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC3E,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,MAAM,KAAK,YAAY,EAAE,CAAC,CAAA;oBAC3E,QAAQ,GAAG,IAAI,CAAA;gBACjB,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/commands/sockets.js
CHANGED
|
@@ -24,7 +24,7 @@ Examples:
|
|
|
24
24
|
sockets create https://example.com:443 -t webtransport
|
|
25
25
|
sockets close abc-123-def-456
|
|
26
26
|
sockets show abc-123-def-456`;
|
|
27
|
-
|
|
27
|
+
writelnStderr(process, terminal, usage);
|
|
28
28
|
}
|
|
29
29
|
function findConnectionById(kernel, id) {
|
|
30
30
|
const fullMatch = kernel.sockets.get(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../src/commands/stat.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAW/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../src/commands/stat.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAW/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA6D/F"}
|
package/dist/commands/stat.js
CHANGED
|
@@ -2,13 +2,13 @@ import path from 'path';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import * as zipjs from '@zip.js/zip.js';
|
|
4
4
|
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
5
|
-
import { writelnStdout } from '../shared/helpers.js';
|
|
5
|
+
import { writelnStdout, writelnStderr } from '../shared/helpers.js';
|
|
6
6
|
function printUsage(process, terminal) {
|
|
7
7
|
const usage = `Usage: stat [OPTION]... FILE...
|
|
8
8
|
Display file or file system status.
|
|
9
9
|
|
|
10
10
|
--help display this help and exit`;
|
|
11
|
-
|
|
11
|
+
writelnStderr(process, terminal, usage);
|
|
12
12
|
}
|
|
13
13
|
export function createCommand(kernel, shell, terminal) {
|
|
14
14
|
return new TerminalCommand({
|
|
@@ -23,21 +23,43 @@ export function createCommand(kernel, shell, terminal) {
|
|
|
23
23
|
printUsage(process, terminal);
|
|
24
24
|
return 0;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
// Filter out options/flags and get target paths
|
|
27
|
+
const targets = argv.length > 0
|
|
28
|
+
? argv.filter(arg => !arg.startsWith('-'))
|
|
29
|
+
: [shell.cwd];
|
|
30
|
+
if (targets.length === 0) {
|
|
31
|
+
targets.push(shell.cwd);
|
|
32
|
+
}
|
|
33
|
+
let hasError = false;
|
|
34
|
+
for (const target of targets) {
|
|
35
|
+
const fullPath = path.resolve(shell.cwd, target);
|
|
36
|
+
try {
|
|
37
|
+
const stats = await shell.context.fs.promises.stat(fullPath);
|
|
38
|
+
if (targets.length > 1) {
|
|
39
|
+
await writelnStdout(process, terminal, `${target}:`);
|
|
40
|
+
}
|
|
41
|
+
await writelnStdout(process, terminal, JSON.stringify(stats, null, 2));
|
|
42
|
+
const extension = path.extname(fullPath);
|
|
43
|
+
if (extension === '.zip') {
|
|
44
|
+
const blob = new Blob([new Uint8Array(await shell.context.fs.promises.readFile(fullPath))]);
|
|
45
|
+
const zipReader = new zipjs.ZipReader(new zipjs.BlobReader(blob));
|
|
46
|
+
const entries = await zipReader.getEntries();
|
|
47
|
+
await writelnStdout(process, terminal, chalk.bold('\nZIP Entries:'));
|
|
48
|
+
for (const entry of entries) {
|
|
49
|
+
await writelnStdout(process, terminal, `${chalk.blue(entry.filename)} (${entry.uncompressedSize} bytes)`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (targets.length > 1) {
|
|
53
|
+
await writelnStdout(process, terminal, '');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
58
|
+
await writelnStderr(process, terminal, `stat: ${target}: ${errorMessage}`);
|
|
59
|
+
hasError = true;
|
|
38
60
|
}
|
|
39
61
|
}
|
|
40
|
-
return 0;
|
|
62
|
+
return hasError ? 1 : 0;
|
|
41
63
|
}
|
|
42
64
|
});
|
|
43
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../src/commands/stat.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../src/commands/stat.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/tail.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { TerminalEvents } from '@ecmaos/types';
|
|
3
3
|
import { TerminalCommand } from '../shared/terminal-command.js';
|
|
4
|
-
import {
|
|
4
|
+
import { writelnStderr } from '../shared/helpers.js';
|
|
5
5
|
function printUsage(process, terminal) {
|
|
6
6
|
const usage = `Usage: tail [OPTION]... [FILE]...
|
|
7
7
|
Print the last 10 lines of each FILE to standard output.
|
|
8
8
|
|
|
9
9
|
-n, -nNUMBER print the last NUMBER lines instead of 10
|
|
10
10
|
--help display this help and exit`;
|
|
11
|
-
|
|
11
|
+
writelnStderr(process, terminal, usage);
|
|
12
12
|
}
|
|
13
13
|
export function createCommand(kernel, shell, terminal) {
|
|
14
14
|
return new TerminalCommand({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tar.d.ts","sourceRoot":"","sources":["../../src/commands/tar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAW,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AA6pB/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA2G/F"}
|