@mediaproc/cli 0.6.0 → 0.7.0
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/README.md +202 -1399
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +21 -12
- package/dist/cli.js.map +1 -1
- package/dist/commands/batch.d.ts +3 -0
- package/dist/commands/batch.d.ts.map +1 -0
- package/dist/commands/batch.js +269 -0
- package/dist/commands/batch.js.map +1 -0
- package/dist/commands/benchmark.d.ts +3 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +124 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/compare.d.ts +3 -0
- package/dist/commands/compare.d.ts.map +1 -0
- package/dist/commands/compare.js +102 -0
- package/dist/commands/compare.js.map +1 -0
- package/dist/commands/detect.d.ts +6 -0
- package/dist/commands/detect.d.ts.map +1 -0
- package/dist/commands/detect.js +90 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +222 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/history.d.ts +15 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +215 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +193 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +155 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +184 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +106 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/workspace.d.ts +3 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +201 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/utils/branding.d.ts +11 -0
- package/dist/utils/branding.d.ts.map +1 -0
- package/dist/utils/branding.js +59 -0
- package/dist/utils/branding.js.map +1 -0
- package/package.json +1 -1
- package/dist/commands/convert.d.ts +0 -7
- package/dist/commands/convert.d.ts.map +0 -1
- package/dist/commands/convert.js +0 -96
- package/dist/commands/convert.js.map +0 -1
- package/dist/commands/info.d.ts +0 -7
- package/dist/commands/info.d.ts.map +0 -1
- package/dist/commands/info.js +0 -117
- package/dist/commands/info.js.map +0 -1
- package/dist/commands/optimize.d.ts +0 -7
- package/dist/commands/optimize.d.ts.map +0 -1
- package/dist/commands/optimize.js +0 -196
- package/dist/commands/optimize.js.map +0 -1
- package/dist/commands/run.d.ts +0 -3
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -16
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -3
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -16
- package/dist/commands/validate.js.map +0 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import { extname } from 'path';
|
|
4
|
+
/**
|
|
5
|
+
* Detect media file type and suggest appropriate plugin
|
|
6
|
+
*/
|
|
7
|
+
export function detectCommand(program) {
|
|
8
|
+
program
|
|
9
|
+
.command('detect <file>')
|
|
10
|
+
.description('Detect media file type and suggest appropriate plugin')
|
|
11
|
+
.option('-v, --verbose', 'Show detailed file information')
|
|
12
|
+
.action((file, options) => {
|
|
13
|
+
if (!existsSync(file)) {
|
|
14
|
+
console.error(chalk.red(`✗ File not found: ${file}`));
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const ext = extname(file).toLowerCase().slice(1);
|
|
18
|
+
// Media type mappings
|
|
19
|
+
const mediaTypes = {
|
|
20
|
+
// Images
|
|
21
|
+
jpg: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
22
|
+
jpeg: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
23
|
+
png: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
24
|
+
webp: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
25
|
+
gif: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
26
|
+
bmp: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
27
|
+
tiff: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
28
|
+
avif: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
29
|
+
svg: { type: 'Image', plugin: 'image', color: 'cyan' },
|
|
30
|
+
// Videos
|
|
31
|
+
mp4: { type: 'Video', plugin: 'video', color: 'magenta' },
|
|
32
|
+
webm: { type: 'Video', plugin: 'video', color: 'magenta' },
|
|
33
|
+
mkv: { type: 'Video', plugin: 'video', color: 'magenta' },
|
|
34
|
+
avi: { type: 'Video', plugin: 'video', color: 'magenta' },
|
|
35
|
+
mov: { type: 'Video', plugin: 'video', color: 'magenta' },
|
|
36
|
+
flv: { type: 'Video', plugin: 'video', color: 'magenta' },
|
|
37
|
+
wmv: { type: 'Video', plugin: 'video', color: 'magenta' },
|
|
38
|
+
m4v: { type: 'Video', plugin: 'video', color: 'magenta' },
|
|
39
|
+
// Audio
|
|
40
|
+
mp3: { type: 'Audio', plugin: 'audio', color: 'green' },
|
|
41
|
+
wav: { type: 'Audio', plugin: 'audio', color: 'green' },
|
|
42
|
+
ogg: { type: 'Audio', plugin: 'audio', color: 'green' },
|
|
43
|
+
flac: { type: 'Audio', plugin: 'audio', color: 'green' },
|
|
44
|
+
aac: { type: 'Audio', plugin: 'audio', color: 'green' },
|
|
45
|
+
m4a: { type: 'Audio', plugin: 'audio', color: 'green' },
|
|
46
|
+
opus: { type: 'Audio', plugin: 'audio', color: 'green' },
|
|
47
|
+
// Documents
|
|
48
|
+
pdf: { type: 'Document', plugin: 'document', color: 'yellow' },
|
|
49
|
+
docx: { type: 'Document', plugin: 'document', color: 'yellow' },
|
|
50
|
+
pptx: { type: 'Document', plugin: 'document', color: 'yellow' },
|
|
51
|
+
txt: { type: 'Document', plugin: 'document', color: 'yellow' },
|
|
52
|
+
md: { type: 'Document', plugin: 'document', color: 'yellow' },
|
|
53
|
+
};
|
|
54
|
+
const detected = mediaTypes[ext];
|
|
55
|
+
if (!detected) {
|
|
56
|
+
console.log(chalk.yellow(`⚠ Unknown file type: ${ext}`));
|
|
57
|
+
console.log(chalk.dim('\\nNo plugin suggestions available.'));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const colorFn = chalk[detected.color];
|
|
61
|
+
console.log(chalk.bold('\\n📁 File Detection Result:\\n'));
|
|
62
|
+
console.log(`File: ${chalk.cyan(file)}`);
|
|
63
|
+
console.log(`Type: ${colorFn(detected.type)}`);
|
|
64
|
+
console.log(`Extension: ${chalk.dim(ext)}`);
|
|
65
|
+
console.log(chalk.bold('\\n💡 Suggested Plugin:\\n'));
|
|
66
|
+
console.log(`Plugin: ${chalk.green(`@mediaproc/${detected.plugin}`)}`);
|
|
67
|
+
console.log(`Install: ${chalk.dim(`mediaproc add ${detected.plugin}`)}`);
|
|
68
|
+
console.log(chalk.bold('\\n🚀 Quick Commands:\\n'));
|
|
69
|
+
console.log(chalk.dim(`# View available commands for this file type:`));
|
|
70
|
+
console.log(chalk.cyan(`mediaproc ${detected.plugin} --help`));
|
|
71
|
+
if (options.verbose) {
|
|
72
|
+
console.log(chalk.bold('\\n📊 Available Operations:\\n'));
|
|
73
|
+
if (detected.type === 'Image') {
|
|
74
|
+
console.log(chalk.dim('• resize, convert, compress, optimize, crop, rotate'));
|
|
75
|
+
console.log(chalk.dim('• blur, sharpen, grayscale, watermark, thumbnail'));
|
|
76
|
+
}
|
|
77
|
+
else if (detected.type === 'Video') {
|
|
78
|
+
console.log(chalk.dim('• compress, transcode, trim, resize, merge, extract'));
|
|
79
|
+
}
|
|
80
|
+
else if (detected.type === 'Audio') {
|
|
81
|
+
console.log(chalk.dim('• convert, normalize, merge, extract, trim'));
|
|
82
|
+
}
|
|
83
|
+
else if (detected.type === 'Document') {
|
|
84
|
+
console.log(chalk.dim('• convert, compress, merge, extract'));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
console.log('');
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,aAAa,SA4EtB,CAAC"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { exec } from 'child_process';
|
|
3
|
+
import { promisify } from 'util';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { showBranding } from '../utils/branding';
|
|
7
|
+
const execAsync = promisify(exec);
|
|
8
|
+
export const doctorCommand = new Command()
|
|
9
|
+
.name('doctor')
|
|
10
|
+
.description('Run system diagnostics and health checks')
|
|
11
|
+
.option('--verbose', 'Show detailed diagnostic information')
|
|
12
|
+
.option('--fix', 'Attempt to fix issues automatically')
|
|
13
|
+
.action(async (options) => {
|
|
14
|
+
console.log('\n🔍 MediaProc System Diagnostics\n');
|
|
15
|
+
console.log('━'.repeat(50));
|
|
16
|
+
const results = [];
|
|
17
|
+
// Check Node.js version
|
|
18
|
+
results.push(await checkNodeVersion());
|
|
19
|
+
// Check FFmpeg
|
|
20
|
+
results.push(await checkFFmpeg());
|
|
21
|
+
// Check Sharp/libvips
|
|
22
|
+
results.push(await checkSharp());
|
|
23
|
+
// Check installed plugins
|
|
24
|
+
results.push(await checkPlugins());
|
|
25
|
+
// Check system resources
|
|
26
|
+
results.push(await checkSystemResources());
|
|
27
|
+
// Check for conflicts
|
|
28
|
+
results.push(await checkConflicts());
|
|
29
|
+
// Display results
|
|
30
|
+
console.log('\n📊 Diagnostic Results:\n');
|
|
31
|
+
let passCount = 0;
|
|
32
|
+
let warnCount = 0;
|
|
33
|
+
let failCount = 0;
|
|
34
|
+
results.forEach((result) => {
|
|
35
|
+
const icon = result.status === 'pass' ? '✓' : result.status === 'warn' ? '⚠' : '✗';
|
|
36
|
+
const color = result.status === 'pass' ? '\x1b[32m' : result.status === 'warn' ? '\x1b[33m' : '\x1b[31m';
|
|
37
|
+
console.log(`${color}${icon} ${result.name}\x1b[0m`);
|
|
38
|
+
console.log(` ${result.message}`);
|
|
39
|
+
if (result.suggestion) {
|
|
40
|
+
console.log(` 💡 ${result.suggestion}`);
|
|
41
|
+
}
|
|
42
|
+
console.log('');
|
|
43
|
+
if (result.status === 'pass')
|
|
44
|
+
passCount++;
|
|
45
|
+
else if (result.status === 'warn')
|
|
46
|
+
warnCount++;
|
|
47
|
+
else
|
|
48
|
+
failCount++;
|
|
49
|
+
});
|
|
50
|
+
// Summary
|
|
51
|
+
console.log('━'.repeat(50));
|
|
52
|
+
console.log(`\n📈 Summary: ${passCount} passed, ${warnCount} warnings, ${failCount} failed\n`);
|
|
53
|
+
if (failCount > 0) {
|
|
54
|
+
console.log('❌ Some critical issues found. Please resolve them before using MediaProc.');
|
|
55
|
+
showBranding();
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
else if (warnCount > 0) {
|
|
59
|
+
console.log('⚠️ Some warnings found. MediaProc should work, but consider fixing warnings.');
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
console.log('✅ All checks passed! MediaProc is ready to use.');
|
|
63
|
+
}
|
|
64
|
+
if (options.verbose) {
|
|
65
|
+
console.log('\n📝 Detailed Information:');
|
|
66
|
+
console.log(` Node.js: ${process.version}`);
|
|
67
|
+
console.log(` Platform: ${process.platform}`);
|
|
68
|
+
console.log(` Architecture: ${process.arch}`);
|
|
69
|
+
console.log(` Memory: ${Math.round(process.memoryUsage().heapUsed / 1024 / 1024)}MB used`);
|
|
70
|
+
}
|
|
71
|
+
showBranding();
|
|
72
|
+
});
|
|
73
|
+
async function checkNodeVersion() {
|
|
74
|
+
const version = process.version;
|
|
75
|
+
const major = parseInt(version.slice(1).split('.')[0]);
|
|
76
|
+
if (major >= 18) {
|
|
77
|
+
return {
|
|
78
|
+
name: 'Node.js Version',
|
|
79
|
+
status: 'pass',
|
|
80
|
+
message: `${version} (compatible)`
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
else if (major >= 16) {
|
|
84
|
+
return {
|
|
85
|
+
name: 'Node.js Version',
|
|
86
|
+
status: 'warn',
|
|
87
|
+
message: `${version} (works but upgrade recommended)`,
|
|
88
|
+
suggestion: 'Upgrade to Node.js 18+ for best performance'
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return {
|
|
93
|
+
name: 'Node.js Version',
|
|
94
|
+
status: 'fail',
|
|
95
|
+
message: `${version} (incompatible)`,
|
|
96
|
+
suggestion: 'Please upgrade to Node.js 18 or higher'
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function checkFFmpeg() {
|
|
101
|
+
try {
|
|
102
|
+
const { stdout } = await execAsync('ffmpeg -version');
|
|
103
|
+
const version = stdout.split('\n')[0].match(/ffmpeg version (\S+)/)?.[1] || 'unknown';
|
|
104
|
+
return {
|
|
105
|
+
name: 'FFmpeg',
|
|
106
|
+
status: 'pass',
|
|
107
|
+
message: `Version ${version} installed`
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
return {
|
|
112
|
+
name: 'FFmpeg',
|
|
113
|
+
status: 'fail',
|
|
114
|
+
message: 'Not installed',
|
|
115
|
+
suggestion: 'Install FFmpeg: brew install ffmpeg (macOS) or apt install ffmpeg (Linux)'
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async function checkSharp() {
|
|
120
|
+
try {
|
|
121
|
+
require('sharp');
|
|
122
|
+
return {
|
|
123
|
+
name: 'Sharp (Image Processing)',
|
|
124
|
+
status: 'pass',
|
|
125
|
+
message: 'Installed and working'
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
return {
|
|
130
|
+
name: 'Sharp (Image Processing)',
|
|
131
|
+
status: 'warn',
|
|
132
|
+
message: 'Not found',
|
|
133
|
+
suggestion: 'Install with: npm install -g sharp (optional but recommended for image processing)'
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async function checkPlugins() {
|
|
138
|
+
try {
|
|
139
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
140
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
141
|
+
return {
|
|
142
|
+
name: 'Installed Plugins',
|
|
143
|
+
status: 'warn',
|
|
144
|
+
message: 'No package.json found',
|
|
145
|
+
suggestion: 'Run commands from a project directory or install plugins globally'
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
149
|
+
const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
|
|
150
|
+
const mediaprocPlugins = Object.keys(deps).filter(dep => dep.startsWith('@mediaproc/'));
|
|
151
|
+
if (mediaprocPlugins.length === 0) {
|
|
152
|
+
return {
|
|
153
|
+
name: 'Installed Plugins',
|
|
154
|
+
status: 'warn',
|
|
155
|
+
message: 'No plugins found',
|
|
156
|
+
suggestion: 'Install plugins with: mediaproc add <plugin-name>'
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
name: 'Installed Plugins',
|
|
161
|
+
status: 'pass',
|
|
162
|
+
message: `${mediaprocPlugins.length} plugin(s) installed: ${mediaprocPlugins.map(p => p.replace('@mediaproc/', '')).join(', ')}`
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
return {
|
|
167
|
+
name: 'Installed Plugins',
|
|
168
|
+
status: 'warn',
|
|
169
|
+
message: 'Could not check plugins',
|
|
170
|
+
suggestion: 'Ensure you have proper permissions'
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async function checkSystemResources() {
|
|
175
|
+
const totalMem = require('os').totalmem();
|
|
176
|
+
const freeMem = require('os').freemem();
|
|
177
|
+
const cpus = require('os').cpus().length;
|
|
178
|
+
const totalGB = (totalMem / 1024 / 1024 / 1024).toFixed(1);
|
|
179
|
+
const freeGB = (freeMem / 1024 / 1024 / 1024).toFixed(1);
|
|
180
|
+
if (freeMem < 1024 * 1024 * 1024) { // Less than 1GB free
|
|
181
|
+
return {
|
|
182
|
+
name: 'System Resources',
|
|
183
|
+
status: 'warn',
|
|
184
|
+
message: `${cpus} CPU cores, ${freeGB}GB/${totalGB}GB RAM available`,
|
|
185
|
+
suggestion: 'Low memory. Consider closing other applications for better performance'
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
name: 'System Resources',
|
|
190
|
+
status: 'pass',
|
|
191
|
+
message: `${cpus} CPU cores, ${freeGB}GB/${totalGB}GB RAM available`
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
async function checkConflicts() {
|
|
195
|
+
// Check for common conflicts
|
|
196
|
+
const conflicts = [];
|
|
197
|
+
// Check for multiple sharp versions
|
|
198
|
+
try {
|
|
199
|
+
const { stdout } = await execAsync('npm ls sharp 2>/dev/null || true');
|
|
200
|
+
const sharpMatches = stdout.match(/sharp@/g);
|
|
201
|
+
if (sharpMatches && sharpMatches.length > 1) {
|
|
202
|
+
conflicts.push('Multiple Sharp versions detected');
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
// Ignore errors
|
|
207
|
+
}
|
|
208
|
+
if (conflicts.length > 0) {
|
|
209
|
+
return {
|
|
210
|
+
name: 'Dependency Conflicts',
|
|
211
|
+
status: 'warn',
|
|
212
|
+
message: conflicts.join(', '),
|
|
213
|
+
suggestion: 'Run: npm dedupe to resolve conflicts'
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
name: 'Dependency Conflicts',
|
|
218
|
+
status: 'pass',
|
|
219
|
+
message: 'No conflicts detected'
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
interface HistoryEntry {
|
|
3
|
+
id: number;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
command: string;
|
|
6
|
+
args: string[];
|
|
7
|
+
cwd: string;
|
|
8
|
+
success: boolean;
|
|
9
|
+
duration?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const historyCommand: Command;
|
|
12
|
+
export declare function getHistory(): HistoryEntry[];
|
|
13
|
+
export declare function saveHistoryEntry(entry: Omit<HistoryEntry, 'id' | 'timestamp'>): void;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,eAAO,MAAM,cAAc,SAqCvB,CAAC;AAqHL,wBAAgB,UAAU,IAAI,YAAY,EAAE,CAE3C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,IAAI,CAoBpF"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { showBranding } from '../utils/branding';
|
|
5
|
+
import * as os from 'os';
|
|
6
|
+
const HISTORY_FILE = path.join(os.homedir(), '.mediaproc', 'history.json');
|
|
7
|
+
const MAX_HISTORY_ENTRIES = 1000;
|
|
8
|
+
export const historyCommand = new Command()
|
|
9
|
+
.name('history')
|
|
10
|
+
.description('Show command history and replay previous commands')
|
|
11
|
+
.option('-n, --limit <number>', 'Number of entries to show', '20')
|
|
12
|
+
.option('--clear', 'Clear history')
|
|
13
|
+
.option('--export <file>', 'Export history as shell script')
|
|
14
|
+
.option('--json', 'Output as JSON')
|
|
15
|
+
.action(async (options) => {
|
|
16
|
+
if (options.clear) {
|
|
17
|
+
clearHistory();
|
|
18
|
+
console.log('✓ History cleared');
|
|
19
|
+
showBranding();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (options.export) {
|
|
23
|
+
exportHistory(options.export);
|
|
24
|
+
console.log(`✓ History exported to ${options.export}`);
|
|
25
|
+
showBranding();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const history = loadHistory();
|
|
29
|
+
const limit = parseInt(options.limit);
|
|
30
|
+
if (history.length === 0) {
|
|
31
|
+
console.log('\n📝 No command history yet');
|
|
32
|
+
showBranding();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (options.json) {
|
|
36
|
+
console.log(JSON.stringify(history.slice(-limit), null, 2));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
displayHistory(history, limit);
|
|
40
|
+
});
|
|
41
|
+
// Add replay subcommand
|
|
42
|
+
historyCommand
|
|
43
|
+
.command('replay')
|
|
44
|
+
.description('Replay a command from history')
|
|
45
|
+
.argument('<id>', 'History entry ID')
|
|
46
|
+
.action(async (id) => {
|
|
47
|
+
const history = loadHistory();
|
|
48
|
+
const entryId = parseInt(id);
|
|
49
|
+
const entry = history.find(e => e.id === entryId);
|
|
50
|
+
if (!entry) {
|
|
51
|
+
console.log(`\n❌ No history entry found with ID ${id}\n`);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
console.log(`\n🔄 Replaying command ${id}:`);
|
|
55
|
+
console.log(` ${entry.command} ${entry.args.join(' ')}\n`);
|
|
56
|
+
// In a real implementation, this would actually execute the command
|
|
57
|
+
console.log('⚠️ Note: Command replay requires full implementation');
|
|
58
|
+
console.log(` Run manually: mediaproc ${entry.command} ${entry.args.join(' ')}`);
|
|
59
|
+
showBranding();
|
|
60
|
+
});
|
|
61
|
+
// Add search subcommand
|
|
62
|
+
historyCommand
|
|
63
|
+
.command('search')
|
|
64
|
+
.description('Search command history')
|
|
65
|
+
.argument('<query>', 'Search query')
|
|
66
|
+
.action(async (query) => {
|
|
67
|
+
const history = loadHistory();
|
|
68
|
+
const queryLower = query.toLowerCase();
|
|
69
|
+
const matches = history.filter(entry => {
|
|
70
|
+
const searchText = `${entry.command} ${entry.args.join(' ')}`.toLowerCase();
|
|
71
|
+
return searchText.includes(queryLower);
|
|
72
|
+
});
|
|
73
|
+
if (matches.length === 0) {
|
|
74
|
+
console.log(`\n❌ No commands found matching "${query}"\n`);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
console.log(`\n🔍 Found ${matches.length} matching commands:\n`);
|
|
78
|
+
displayHistory(matches, matches.length);
|
|
79
|
+
showBranding();
|
|
80
|
+
});
|
|
81
|
+
// Add stats subcommand
|
|
82
|
+
historyCommand
|
|
83
|
+
.command('stats')
|
|
84
|
+
.description('Show history statistics')
|
|
85
|
+
.action(async () => {
|
|
86
|
+
const history = loadHistory();
|
|
87
|
+
if (history.length === 0) {
|
|
88
|
+
console.log('\n📊 No history data available\n');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const commandCounts = {};
|
|
92
|
+
const successCount = history.filter(e => e.success).length;
|
|
93
|
+
const failCount = history.length - successCount;
|
|
94
|
+
history.forEach(entry => {
|
|
95
|
+
commandCounts[entry.command] = (commandCounts[entry.command] || 0) + 1;
|
|
96
|
+
});
|
|
97
|
+
const sortedCommands = Object.entries(commandCounts)
|
|
98
|
+
.sort((a, b) => b[1] - a[1])
|
|
99
|
+
.slice(0, 10);
|
|
100
|
+
console.log('\n📊 History Statistics\n');
|
|
101
|
+
console.log('━'.repeat(50));
|
|
102
|
+
console.log(`\nTotal commands: ${history.length}`);
|
|
103
|
+
console.log(`Success rate: ${((successCount / history.length) * 100).toFixed(1)}%`);
|
|
104
|
+
console.log(`Successful: ${successCount}`);
|
|
105
|
+
console.log(`Failed: ${failCount}`);
|
|
106
|
+
console.log('\n📈 Most used commands:\n');
|
|
107
|
+
sortedCommands.forEach(([command, count], index) => {
|
|
108
|
+
const bar = '▓'.repeat(Math.ceil((count / sortedCommands[0][1]) * 20));
|
|
109
|
+
console.log(`${index + 1}. ${command.padEnd(15)} ${bar} ${count}`);
|
|
110
|
+
});
|
|
111
|
+
// Calculate average duration if available
|
|
112
|
+
const withDuration = history.filter(e => e.duration !== undefined);
|
|
113
|
+
if (withDuration.length > 0) {
|
|
114
|
+
const avgDuration = withDuration.reduce((sum, e) => sum + (e.duration || 0), 0) / withDuration.length;
|
|
115
|
+
console.log(`\n⏱️ Average duration: ${(avgDuration / 1000).toFixed(2)}s`);
|
|
116
|
+
}
|
|
117
|
+
console.log('\n' + '─'.repeat(50));
|
|
118
|
+
showBranding();
|
|
119
|
+
});
|
|
120
|
+
function loadHistory() {
|
|
121
|
+
try {
|
|
122
|
+
ensureHistoryDirectory();
|
|
123
|
+
if (!fs.existsSync(HISTORY_FILE)) {
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
const data = fs.readFileSync(HISTORY_FILE, 'utf-8');
|
|
127
|
+
return JSON.parse(data);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.error('Error loading history:', error);
|
|
131
|
+
return [];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
export function getHistory() {
|
|
135
|
+
return loadHistory();
|
|
136
|
+
}
|
|
137
|
+
export function saveHistoryEntry(entry) {
|
|
138
|
+
try {
|
|
139
|
+
ensureHistoryDirectory();
|
|
140
|
+
const history = loadHistory();
|
|
141
|
+
const newEntry = {
|
|
142
|
+
...entry,
|
|
143
|
+
id: history.length > 0 ? Math.max(...history.map(e => e.id)) + 1 : 1,
|
|
144
|
+
timestamp: Date.now()
|
|
145
|
+
};
|
|
146
|
+
history.push(newEntry);
|
|
147
|
+
// Keep only last MAX_HISTORY_ENTRIES
|
|
148
|
+
const trimmedHistory = history.slice(-MAX_HISTORY_ENTRIES);
|
|
149
|
+
fs.writeFileSync(HISTORY_FILE, JSON.stringify(trimmedHistory, null, 2));
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
// Silently fail - history is not critical
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function clearHistory() {
|
|
156
|
+
try {
|
|
157
|
+
if (fs.existsSync(HISTORY_FILE)) {
|
|
158
|
+
fs.unlinkSync(HISTORY_FILE);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.error('Error clearing history:', error);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function exportHistory(filename) {
|
|
166
|
+
const history = loadHistory();
|
|
167
|
+
const script = history
|
|
168
|
+
.map(entry => `# ${new Date(entry.timestamp).toLocaleString()}`)
|
|
169
|
+
.map((comment, index) => `${comment}\nmediaproc ${history[index].command} ${history[index].args.join(' ')}`)
|
|
170
|
+
.join('\n\n');
|
|
171
|
+
fs.writeFileSync(filename, `#!/bin/bash\n\n${script}\n`);
|
|
172
|
+
fs.chmodSync(filename, '755');
|
|
173
|
+
}
|
|
174
|
+
function displayHistory(history, limit) {
|
|
175
|
+
console.log('\n📝 Command History\n');
|
|
176
|
+
console.log('━'.repeat(70));
|
|
177
|
+
const entries = history.slice(-limit).reverse();
|
|
178
|
+
entries.forEach(entry => {
|
|
179
|
+
const status = entry.success ? '\x1b[32m✓\x1b[0m' : '\x1b[31m✗\x1b[0m';
|
|
180
|
+
const time = formatTimestamp(entry.timestamp);
|
|
181
|
+
const duration = entry.duration ? `(${(entry.duration / 1000).toFixed(2)}s)` : '';
|
|
182
|
+
console.log(`\n${status} \x1b[36m#${entry.id}\x1b[0m ${time} ${duration}`);
|
|
183
|
+
console.log(` mediaproc ${entry.command} ${entry.args.join(' ')}`);
|
|
184
|
+
console.log(` \x1b[90mDirectory: ${entry.cwd}\x1b[0m`);
|
|
185
|
+
});
|
|
186
|
+
console.log('\n' + '━'.repeat(70));
|
|
187
|
+
console.log(`\nShowing last ${Math.min(limit, history.length)} of ${history.length} commands`);
|
|
188
|
+
console.log('\n💡 Commands:');
|
|
189
|
+
console.log(' mediaproc history replay <id> - Replay a command');
|
|
190
|
+
console.log(' mediaproc history search <q> - Search history');
|
|
191
|
+
console.log(' mediaproc history stats - Show statistics');
|
|
192
|
+
console.log(' mediaproc history --export <f> - Export as script\n');
|
|
193
|
+
}
|
|
194
|
+
function formatTimestamp(timestamp) {
|
|
195
|
+
const now = Date.now();
|
|
196
|
+
const diff = now - timestamp;
|
|
197
|
+
const seconds = Math.floor(diff / 1000);
|
|
198
|
+
const minutes = Math.floor(seconds / 60);
|
|
199
|
+
const hours = Math.floor(minutes / 60);
|
|
200
|
+
const days = Math.floor(hours / 24);
|
|
201
|
+
if (days > 0)
|
|
202
|
+
return `${days}d ago`;
|
|
203
|
+
if (hours > 0)
|
|
204
|
+
return `${hours}h ago`;
|
|
205
|
+
if (minutes > 0)
|
|
206
|
+
return `${minutes}m ago`;
|
|
207
|
+
return `${seconds}s ago`;
|
|
208
|
+
}
|
|
209
|
+
function ensureHistoryDirectory() {
|
|
210
|
+
const dir = path.dirname(HISTORY_FILE);
|
|
211
|
+
if (!fs.existsSync(dir)) {
|
|
212
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,aAAa,SA8DtB,CAAC"}
|