@ecmaos/coreutils 0.3.0 → 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 +26 -0
- 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/man.d.ts.map +1 -1
- package/dist/commands/man.js +10 -0
- package/dist/commands/man.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/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/tar.d.ts.map +1 -1
- package/dist/commands/tar.js +67 -17
- package/dist/commands/tar.js.map +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/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/src/commands/cron.ts +499 -0
- package/src/commands/man.ts +8 -0
- package/src/commands/open.ts +84 -0
- package/src/commands/play.ts +249 -0
- package/src/commands/tar.ts +62 -19
- package/src/commands/video.ts +267 -0
- package/src/commands/view.ts +526 -0
- package/src/commands/web.ts +377 -0
- package/src/index.ts +20 -2
|
@@ -0,0 +1,250 @@
|
|
|
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: video [OPTIONS] [FILE...]
|
|
7
|
+
Play a video file in a window.
|
|
8
|
+
|
|
9
|
+
--help display this help and exit
|
|
10
|
+
--no-autoplay don't start playing automatically
|
|
11
|
+
--no-controls hide video controls
|
|
12
|
+
--loop loop the video
|
|
13
|
+
--muted start muted
|
|
14
|
+
--fullscreen open in fullscreen mode
|
|
15
|
+
--width <width> set window width (default: video width or screen width)
|
|
16
|
+
--height <height> set window height (default: video height or screen height)
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
video movie.mp4 play a video file
|
|
20
|
+
video --loop clip.mp4 play a video in a loop
|
|
21
|
+
video --no-autoplay video.mp4 load video without auto-playing
|
|
22
|
+
video --fullscreen movie.mp4 play video in fullscreen mode
|
|
23
|
+
video video1.mp4 video2.mp4 play multiple videos`;
|
|
24
|
+
writelnStderr(process, terminal, usage);
|
|
25
|
+
}
|
|
26
|
+
function getMimeType(filePath) {
|
|
27
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
28
|
+
const mimeTypes = {
|
|
29
|
+
'.mp4': 'video/mp4',
|
|
30
|
+
'.webm': 'video/webm',
|
|
31
|
+
'.ogg': 'video/ogg',
|
|
32
|
+
'.ogv': 'video/ogg',
|
|
33
|
+
'.mov': 'video/quicktime',
|
|
34
|
+
'.avi': 'video/x-msvideo',
|
|
35
|
+
'.mkv': 'video/x-matroska',
|
|
36
|
+
'.m4v': 'video/mp4',
|
|
37
|
+
'.flv': 'video/x-flv',
|
|
38
|
+
'.wmv': 'video/x-ms-wmv',
|
|
39
|
+
'.3gp': 'video/3gpp'
|
|
40
|
+
};
|
|
41
|
+
return mimeTypes[ext] || 'video/mp4';
|
|
42
|
+
}
|
|
43
|
+
async function loadVideoMetadata(videoElement) {
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
const timeout = setTimeout(() => {
|
|
46
|
+
reject(new Error('Timeout loading video metadata'));
|
|
47
|
+
}, 10000);
|
|
48
|
+
videoElement.onloadedmetadata = () => {
|
|
49
|
+
clearTimeout(timeout);
|
|
50
|
+
resolve({
|
|
51
|
+
width: videoElement.videoWidth,
|
|
52
|
+
height: videoElement.videoHeight,
|
|
53
|
+
duration: videoElement.duration
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
videoElement.onerror = () => {
|
|
57
|
+
clearTimeout(timeout);
|
|
58
|
+
reject(new Error('Failed to load video metadata'));
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export function createCommand(kernel, shell, terminal) {
|
|
63
|
+
return new TerminalCommand({
|
|
64
|
+
command: 'video',
|
|
65
|
+
description: 'Play a video file',
|
|
66
|
+
kernel,
|
|
67
|
+
shell,
|
|
68
|
+
terminal,
|
|
69
|
+
run: async (pid, argv) => {
|
|
70
|
+
const process = kernel.processes.get(pid);
|
|
71
|
+
if (!process)
|
|
72
|
+
return 1;
|
|
73
|
+
if (argv.length > 0 && (argv[0] === '--help' || argv[0] === '-h')) {
|
|
74
|
+
printUsage(process, terminal);
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
// Parse options
|
|
78
|
+
const options = {
|
|
79
|
+
autoplay: true,
|
|
80
|
+
controls: true,
|
|
81
|
+
loop: false,
|
|
82
|
+
muted: false,
|
|
83
|
+
fullscreen: false
|
|
84
|
+
};
|
|
85
|
+
const files = [];
|
|
86
|
+
for (let i = 0; i < argv.length; i++) {
|
|
87
|
+
const arg = argv[i];
|
|
88
|
+
if (arg === '--no-autoplay') {
|
|
89
|
+
options.autoplay = false;
|
|
90
|
+
}
|
|
91
|
+
else if (arg === '--no-controls') {
|
|
92
|
+
options.controls = false;
|
|
93
|
+
}
|
|
94
|
+
else if (arg === '--loop') {
|
|
95
|
+
options.loop = true;
|
|
96
|
+
}
|
|
97
|
+
else if (arg === '--muted') {
|
|
98
|
+
options.muted = true;
|
|
99
|
+
}
|
|
100
|
+
else if (arg === '--fullscreen') {
|
|
101
|
+
options.fullscreen = true;
|
|
102
|
+
}
|
|
103
|
+
else if (arg === '--width' && i + 1 < argv.length) {
|
|
104
|
+
const widthArg = argv[i + 1];
|
|
105
|
+
if (!widthArg) {
|
|
106
|
+
await writelnStderr(process, terminal, chalk.red(`video: missing width value`));
|
|
107
|
+
return 1;
|
|
108
|
+
}
|
|
109
|
+
const width = parseInt(widthArg, 10);
|
|
110
|
+
if (isNaN(width) || width <= 0) {
|
|
111
|
+
await writelnStderr(process, terminal, chalk.red(`video: invalid width: ${widthArg}`));
|
|
112
|
+
return 1;
|
|
113
|
+
}
|
|
114
|
+
options.width = width;
|
|
115
|
+
i++; // Skip next argument
|
|
116
|
+
}
|
|
117
|
+
else if (arg === '--height' && i + 1 < argv.length) {
|
|
118
|
+
const heightArg = argv[i + 1];
|
|
119
|
+
if (!heightArg) {
|
|
120
|
+
await writelnStderr(process, terminal, chalk.red(`video: missing height value`));
|
|
121
|
+
return 1;
|
|
122
|
+
}
|
|
123
|
+
const height = parseInt(heightArg, 10);
|
|
124
|
+
if (isNaN(height) || height <= 0) {
|
|
125
|
+
await writelnStderr(process, terminal, chalk.red(`video: invalid height: ${heightArg}`));
|
|
126
|
+
return 1;
|
|
127
|
+
}
|
|
128
|
+
options.height = height;
|
|
129
|
+
i++; // Skip next argument
|
|
130
|
+
}
|
|
131
|
+
else if (arg && !arg.startsWith('--')) {
|
|
132
|
+
files.push(arg);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (files.length === 0) {
|
|
136
|
+
await writelnStderr(process, terminal, `video: missing file argument`);
|
|
137
|
+
await writelnStderr(process, terminal, `Try 'video --help' for more information.`);
|
|
138
|
+
return 1;
|
|
139
|
+
}
|
|
140
|
+
// Process each video file
|
|
141
|
+
for (const file of files) {
|
|
142
|
+
const fullPath = path.resolve(shell.cwd, file);
|
|
143
|
+
try {
|
|
144
|
+
// Check if file exists
|
|
145
|
+
if (!(await shell.context.fs.promises.exists(fullPath))) {
|
|
146
|
+
await writelnStderr(process, terminal, chalk.red(`video: file not found: ${fullPath}`));
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
// Read file
|
|
150
|
+
await writelnStdout(process, terminal, chalk.blue(`Loading video: ${file}...`));
|
|
151
|
+
const fileData = await shell.context.fs.promises.readFile(fullPath);
|
|
152
|
+
const mimeType = getMimeType(fullPath);
|
|
153
|
+
const blob = new Blob([new Uint8Array(fileData)], { type: mimeType });
|
|
154
|
+
const url = URL.createObjectURL(blob);
|
|
155
|
+
// Load video metadata
|
|
156
|
+
const videoElement = document.createElement('video');
|
|
157
|
+
videoElement.src = url;
|
|
158
|
+
videoElement.preload = 'metadata';
|
|
159
|
+
let videoWidth;
|
|
160
|
+
let videoHeight;
|
|
161
|
+
let duration;
|
|
162
|
+
try {
|
|
163
|
+
const metadata = await loadVideoMetadata(videoElement);
|
|
164
|
+
videoWidth = metadata.width;
|
|
165
|
+
videoHeight = metadata.height;
|
|
166
|
+
duration = metadata.duration;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
await writelnStderr(process, terminal, chalk.yellow(`video: warning: could not load metadata for ${file}, using default size`));
|
|
170
|
+
videoWidth = 640;
|
|
171
|
+
videoHeight = 360;
|
|
172
|
+
duration = 0;
|
|
173
|
+
}
|
|
174
|
+
// Calculate window dimensions
|
|
175
|
+
const { innerWidth, innerHeight } = window;
|
|
176
|
+
let windowWidth;
|
|
177
|
+
let windowHeight;
|
|
178
|
+
if (options.fullscreen) {
|
|
179
|
+
windowWidth = innerWidth;
|
|
180
|
+
windowHeight = innerHeight;
|
|
181
|
+
}
|
|
182
|
+
else if (options.width && options.height) {
|
|
183
|
+
windowWidth = options.width;
|
|
184
|
+
windowHeight = options.height;
|
|
185
|
+
}
|
|
186
|
+
else if (options.width) {
|
|
187
|
+
windowWidth = options.width;
|
|
188
|
+
windowHeight = Math.round((videoHeight / videoWidth) * windowWidth);
|
|
189
|
+
}
|
|
190
|
+
else if (options.height) {
|
|
191
|
+
windowHeight = options.height;
|
|
192
|
+
windowWidth = Math.round((videoWidth / videoHeight) * windowHeight);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
// Auto-size: fit to screen if video is larger, otherwise use video dimensions
|
|
196
|
+
const scale = Math.min(innerWidth / videoWidth, innerHeight / videoHeight, 1);
|
|
197
|
+
windowWidth = Math.round(videoWidth * scale);
|
|
198
|
+
windowHeight = Math.round(videoHeight * scale);
|
|
199
|
+
}
|
|
200
|
+
// Ensure minimum size
|
|
201
|
+
windowWidth = Math.max(windowWidth, 320);
|
|
202
|
+
windowHeight = Math.max(windowHeight, 180);
|
|
203
|
+
// Build video attributes
|
|
204
|
+
const videoAttrs = [];
|
|
205
|
+
if (options.autoplay)
|
|
206
|
+
videoAttrs.push('autoplay');
|
|
207
|
+
if (options.controls)
|
|
208
|
+
videoAttrs.push('controls');
|
|
209
|
+
if (options.loop)
|
|
210
|
+
videoAttrs.push('loop');
|
|
211
|
+
if (options.muted)
|
|
212
|
+
videoAttrs.push('muted');
|
|
213
|
+
videoAttrs.push('style="width:100%;height:100%;object-fit:contain"');
|
|
214
|
+
const videoHtml = `<video src="${url}" ${videoAttrs.join(' ')}></video>`;
|
|
215
|
+
// Create window
|
|
216
|
+
const windowTitle = files.length > 1
|
|
217
|
+
? `${path.basename(file)} (${files.indexOf(file) + 1}/${files.length})`
|
|
218
|
+
: path.basename(file);
|
|
219
|
+
kernel.windows.create({
|
|
220
|
+
title: windowTitle,
|
|
221
|
+
html: videoHtml,
|
|
222
|
+
width: windowWidth,
|
|
223
|
+
height: windowHeight,
|
|
224
|
+
max: options.fullscreen
|
|
225
|
+
});
|
|
226
|
+
// Clean up URL when window is closed (if possible)
|
|
227
|
+
// Note: This is a best-effort cleanup since we don't have direct access to window close events
|
|
228
|
+
setTimeout(() => {
|
|
229
|
+
// Cleanup after a delay to allow video to load
|
|
230
|
+
// In a real implementation, you'd want to hook into window close events
|
|
231
|
+
}, 1000);
|
|
232
|
+
if (duration > 0) {
|
|
233
|
+
const minutes = Math.floor(duration / 60);
|
|
234
|
+
const seconds = Math.floor(duration % 60);
|
|
235
|
+
await writelnStdout(process, terminal, chalk.green(`Playing: ${file} (${minutes}:${seconds.toString().padStart(2, '0')})`));
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
await writelnStdout(process, terminal, chalk.green(`Playing: ${file}`));
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
await writelnStderr(process, terminal, chalk.red(`video: error playing ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
243
|
+
return 1;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return 0;
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.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;AAqL/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAqV/F"}
|