@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.
Files changed (73) hide show
  1. package/README.md +202 -1399
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +21 -12
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/batch.d.ts +3 -0
  6. package/dist/commands/batch.d.ts.map +1 -0
  7. package/dist/commands/batch.js +269 -0
  8. package/dist/commands/batch.js.map +1 -0
  9. package/dist/commands/benchmark.d.ts +3 -0
  10. package/dist/commands/benchmark.d.ts.map +1 -0
  11. package/dist/commands/benchmark.js +124 -0
  12. package/dist/commands/benchmark.js.map +1 -0
  13. package/dist/commands/compare.d.ts +3 -0
  14. package/dist/commands/compare.d.ts.map +1 -0
  15. package/dist/commands/compare.js +102 -0
  16. package/dist/commands/compare.js.map +1 -0
  17. package/dist/commands/detect.d.ts +6 -0
  18. package/dist/commands/detect.d.ts.map +1 -0
  19. package/dist/commands/detect.js +90 -0
  20. package/dist/commands/detect.js.map +1 -0
  21. package/dist/commands/doctor.d.ts +3 -0
  22. package/dist/commands/doctor.d.ts.map +1 -0
  23. package/dist/commands/doctor.js +222 -0
  24. package/dist/commands/doctor.js.map +1 -0
  25. package/dist/commands/history.d.ts +15 -0
  26. package/dist/commands/history.d.ts.map +1 -0
  27. package/dist/commands/history.js +215 -0
  28. package/dist/commands/history.js.map +1 -0
  29. package/dist/commands/search.d.ts +3 -0
  30. package/dist/commands/search.d.ts.map +1 -0
  31. package/dist/commands/search.js +193 -0
  32. package/dist/commands/search.js.map +1 -0
  33. package/dist/commands/stats.d.ts +3 -0
  34. package/dist/commands/stats.d.ts.map +1 -0
  35. package/dist/commands/stats.js +155 -0
  36. package/dist/commands/stats.js.map +1 -0
  37. package/dist/commands/template.d.ts +3 -0
  38. package/dist/commands/template.d.ts.map +1 -0
  39. package/dist/commands/template.js +184 -0
  40. package/dist/commands/template.js.map +1 -0
  41. package/dist/commands/watch.d.ts +3 -0
  42. package/dist/commands/watch.d.ts.map +1 -0
  43. package/dist/commands/watch.js +106 -0
  44. package/dist/commands/watch.js.map +1 -0
  45. package/dist/commands/workspace.d.ts +3 -0
  46. package/dist/commands/workspace.d.ts.map +1 -0
  47. package/dist/commands/workspace.js +201 -0
  48. package/dist/commands/workspace.js.map +1 -0
  49. package/dist/utils/branding.d.ts +11 -0
  50. package/dist/utils/branding.d.ts.map +1 -0
  51. package/dist/utils/branding.js +59 -0
  52. package/dist/utils/branding.js.map +1 -0
  53. package/package.json +1 -1
  54. package/dist/commands/convert.d.ts +0 -7
  55. package/dist/commands/convert.d.ts.map +0 -1
  56. package/dist/commands/convert.js +0 -96
  57. package/dist/commands/convert.js.map +0 -1
  58. package/dist/commands/info.d.ts +0 -7
  59. package/dist/commands/info.d.ts.map +0 -1
  60. package/dist/commands/info.js +0 -117
  61. package/dist/commands/info.js.map +0 -1
  62. package/dist/commands/optimize.d.ts +0 -7
  63. package/dist/commands/optimize.d.ts.map +0 -1
  64. package/dist/commands/optimize.js +0 -196
  65. package/dist/commands/optimize.js.map +0 -1
  66. package/dist/commands/run.d.ts +0 -3
  67. package/dist/commands/run.d.ts.map +0 -1
  68. package/dist/commands/run.js +0 -16
  69. package/dist/commands/run.js.map +0 -1
  70. package/dist/commands/validate.d.ts +0 -3
  71. package/dist/commands/validate.d.ts.map +0 -1
  72. package/dist/commands/validate.js +0 -16
  73. package/dist/commands/validate.js.map +0 -1
@@ -0,0 +1,106 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ export const watchCommand = new Command()
5
+ .name('watch')
6
+ .description('Monitor directories and auto-process files')
7
+ .argument('<directory>', 'Directory to watch')
8
+ .option('--on-image <cmd>', 'Command to run on new images')
9
+ .option('--on-video <cmd>', 'Command to run on new videos')
10
+ .option('--on-audio <cmd>', 'Command to run on new audio files')
11
+ .option('--on-any <cmd>', 'Command to run on any new file')
12
+ .option('--ignore <patterns>', 'Comma-separated patterns to ignore')
13
+ .option('--recursive', 'Watch subdirectories recursively')
14
+ .option('--debounce <ms>', 'Debounce delay in milliseconds', '1000')
15
+ .action(async (directory, options) => {
16
+ if (!fs.existsSync(directory)) {
17
+ console.log(`\n❌ Directory not found: ${directory}\n`);
18
+ return;
19
+ }
20
+ const config = {
21
+ directory: path.resolve(directory),
22
+ rules: buildWatchRules(options),
23
+ ignorePatterns: options.ignore ? options.ignore.split(',') : [],
24
+ recursive: options.recursive || false
25
+ };
26
+ if (config.rules.length === 0) {
27
+ console.log('\n❌ No watch rules specified\n');
28
+ console.log('💡 Use options like --on-image, --on-video, --on-audio, or --on-any\n');
29
+ return;
30
+ }
31
+ console.log('\n👁️ MediaProc File Watcher\n');
32
+ console.log('━'.repeat(60));
33
+ console.log(`\nWatching: ${config.directory}`);
34
+ console.log(`Recursive: ${config.recursive ? 'Yes' : 'No'}`);
35
+ console.log(`Debounce: ${options.debounce}ms\n`);
36
+ console.log('Rules:');
37
+ config.rules.forEach((rule, index) => {
38
+ console.log(` ${index + 1}. ${rule.pattern} → ${rule.command}`);
39
+ });
40
+ if (config.ignorePatterns.length > 0) {
41
+ console.log(`\nIgnoring: ${config.ignorePatterns.join(', ')}`);
42
+ }
43
+ console.log('\n' + '━'.repeat(60));
44
+ console.log('\n🚀 Watcher started (Ctrl+C to stop)\n');
45
+ console.log('⚠️ Note: Full implementation requires fs.watch with proper event handling\n');
46
+ console.log('Simulated watch mode - no actual monitoring implemented yet.\n');
47
+ // In real implementation, use fs.watch or chokidar
48
+ // fs.watch(directory, { recursive: config.recursive }, (eventType, filename) => {
49
+ // handleFileEvent(eventType, filename, config);
50
+ // });
51
+ });
52
+ // List active watchers
53
+ watchCommand
54
+ .command('list')
55
+ .description('List active watchers')
56
+ .action(async () => {
57
+ console.log('\n👁️ Active Watchers\n');
58
+ console.log('━'.repeat(60));
59
+ console.log('\nNo active watchers (requires daemon implementation)\n');
60
+ });
61
+ // Stop watcher
62
+ watchCommand
63
+ .command('stop')
64
+ .description('Stop a watcher')
65
+ .argument('[directory]', 'Directory being watched (stops all if not specified)')
66
+ .action(async (directory) => {
67
+ if (directory) {
68
+ console.log(`\n✓ Stopped watcher for: ${directory}\n`);
69
+ }
70
+ else {
71
+ console.log('\n✓ Stopped all watchers\n');
72
+ }
73
+ });
74
+ function buildWatchRules(options) {
75
+ const rules = [];
76
+ if (options.onImage) {
77
+ rules.push({
78
+ pattern: '\\.(jpg|jpeg|png|gif|webp|bmp|tiff|avif)$',
79
+ command: options.onImage,
80
+ debounce: parseInt(options.debounce)
81
+ });
82
+ }
83
+ if (options.onVideo) {
84
+ rules.push({
85
+ pattern: '\\.(mp4|webm|avi|mov|mkv|flv|wmv)$',
86
+ command: options.onVideo,
87
+ debounce: parseInt(options.debounce)
88
+ });
89
+ }
90
+ if (options.onAudio) {
91
+ rules.push({
92
+ pattern: '\\.(mp3|wav|flac|aac|ogg|m4a)$',
93
+ command: options.onAudio,
94
+ debounce: parseInt(options.debounce)
95
+ });
96
+ }
97
+ if (options.onAny) {
98
+ rules.push({
99
+ pattern: '.*',
100
+ command: options.onAny,
101
+ debounce: parseInt(options.debounce)
102
+ });
103
+ }
104
+ return rules;
105
+ }
106
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const workspaceCommand: Command;
3
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,gBAAgB,SAKzB,CAAC"}
@@ -0,0 +1,201 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ const WORKSPACE_DIR = '.mediaproc';
5
+ export const workspaceCommand = new Command()
6
+ .name('workspace')
7
+ .description('Manage project workspaces and batch processing rules')
8
+ .action(() => {
9
+ workspaceCommand.help();
10
+ });
11
+ // Create workspace
12
+ workspaceCommand
13
+ .command('create')
14
+ .description('Create a new workspace')
15
+ .argument('<name>', 'Workspace name')
16
+ .option('-d, --description <text>', 'Workspace description')
17
+ .option('--preset <type>', 'Use preset (web, mobile, print, social)')
18
+ .action(async (name, options) => {
19
+ if (fs.existsSync(path.join(WORKSPACE_DIR, `${name}.json`))) {
20
+ console.log(`\n⚠️ Workspace "${name}" already exists\n`);
21
+ return;
22
+ }
23
+ const config = {
24
+ name,
25
+ description: options.description || '',
26
+ presets: getPresets(options.preset),
27
+ rules: [],
28
+ createdAt: Date.now(),
29
+ lastUsed: Date.now()
30
+ };
31
+ ensureWorkspaceDirectory();
32
+ fs.writeFileSync(path.join(WORKSPACE_DIR, `${name}.json`), JSON.stringify(config, null, 2));
33
+ console.log(`\n✓ Workspace "${name}" created\n`);
34
+ if (options.preset) {
35
+ console.log(`Using ${options.preset} preset settings`);
36
+ }
37
+ console.log('');
38
+ });
39
+ // Use workspace
40
+ workspaceCommand
41
+ .command('use')
42
+ .description('Set active workspace')
43
+ .argument('<name>', 'Workspace name')
44
+ .action(async (name) => {
45
+ const workspacePath = path.join(WORKSPACE_DIR, `${name}.json`);
46
+ if (!fs.existsSync(workspacePath)) {
47
+ console.log(`\n❌ Workspace "${name}" not found\n`);
48
+ return;
49
+ }
50
+ const config = JSON.parse(fs.readFileSync(workspacePath, 'utf-8'));
51
+ config.lastUsed = Date.now();
52
+ fs.writeFileSync(workspacePath, JSON.stringify(config, null, 2));
53
+ // Set as active workspace
54
+ fs.writeFileSync(path.join(WORKSPACE_DIR, 'active.txt'), name);
55
+ console.log(`\n✓ Workspace "${name}" is now active\n`);
56
+ });
57
+ // List workspaces
58
+ workspaceCommand
59
+ .command('list')
60
+ .description('List all workspaces')
61
+ .option('--json', 'Output as JSON')
62
+ .action(async (options) => {
63
+ const workspaces = listWorkspaces();
64
+ if (workspaces.length === 0) {
65
+ console.log('\n📦 No workspaces created\n');
66
+ console.log('💡 Create one with: mediaproc workspace create <name>\n');
67
+ return;
68
+ }
69
+ if (options.json) {
70
+ console.log(JSON.stringify(workspaces, null, 2));
71
+ return;
72
+ }
73
+ const active = getActiveWorkspace();
74
+ console.log('\n📁 Workspaces\n');
75
+ console.log('━'.repeat(60));
76
+ workspaces.forEach((ws, index) => {
77
+ const isActive = ws.name === active;
78
+ const indicator = isActive ? '\x1b[32m●\x1b[0m' : ' ';
79
+ console.log(`\n${indicator} ${index + 1}. \x1b[36m${ws.name}\x1b[0m${isActive ? ' (active)' : ''}`);
80
+ if (ws.description) {
81
+ console.log(` ${ws.description}`);
82
+ }
83
+ console.log(` Rules: ${ws.rules.length}`);
84
+ console.log(` Last used: ${new Date(ws.lastUsed).toLocaleDateString()}`);
85
+ });
86
+ console.log('\n' + '━'.repeat(60) + '\n');
87
+ });
88
+ // Add rule
89
+ workspaceCommand
90
+ .command('add-rule')
91
+ .description('Add processing rule to workspace')
92
+ .argument('<workspace>', 'Workspace name')
93
+ .option('--pattern <pattern>', 'File pattern (e.g., "*.jpg")', '*')
94
+ .option('--command <cmd>', 'Command to run', 'image optimize')
95
+ .option('--args <json>', 'Command arguments as JSON')
96
+ .action(async (workspace, options) => {
97
+ const workspacePath = path.join(WORKSPACE_DIR, `${workspace}.json`);
98
+ if (!fs.existsSync(workspacePath)) {
99
+ console.log(`\n❌ Workspace "${workspace}" not found\n`);
100
+ return;
101
+ }
102
+ const config = JSON.parse(fs.readFileSync(workspacePath, 'utf-8'));
103
+ const rule = {
104
+ pattern: options.pattern,
105
+ command: options.command,
106
+ args: options.args ? JSON.parse(options.args) : {}
107
+ };
108
+ config.rules.push(rule);
109
+ fs.writeFileSync(workspacePath, JSON.stringify(config, null, 2));
110
+ console.log(`\n✓ Rule added to workspace "${workspace}"\n`);
111
+ console.log(`Pattern: ${rule.pattern}`);
112
+ console.log(`Command: ${rule.command}\n`);
113
+ });
114
+ // Process with workspace
115
+ workspaceCommand
116
+ .command('process')
117
+ .description('Process files using workspace rules')
118
+ .argument('<directory>', 'Directory to process')
119
+ .option('--workspace <name>', 'Workspace to use (defaults to active)')
120
+ .option('--dry-run', 'Show what would be processed without executing')
121
+ .action(async (directory, options) => {
122
+ const workspaceName = options.workspace || getActiveWorkspace();
123
+ if (!workspaceName) {
124
+ console.log('\n❌ No active workspace. Set one with: mediaproc workspace use <name>\n');
125
+ return;
126
+ }
127
+ const workspacePath = path.join(WORKSPACE_DIR, `${workspaceName}.json`);
128
+ const config = JSON.parse(fs.readFileSync(workspacePath, 'utf-8'));
129
+ console.log(`\n🚀 Processing with workspace "${workspaceName}"\n`);
130
+ console.log(`Directory: ${directory}`);
131
+ console.log(`Rules: ${config.rules.length}\n`);
132
+ if (options.dryRun) {
133
+ console.log('📄 Dry run - showing what would be processed:\n');
134
+ config.rules.forEach((rule, index) => {
135
+ console.log(`${index + 1}. Pattern: ${rule.pattern}`);
136
+ console.log(` Command: mediaproc ${rule.command}`);
137
+ });
138
+ console.log('');
139
+ }
140
+ else {
141
+ console.log('⚠️ Note: Actual processing requires full implementation\n');
142
+ }
143
+ });
144
+ // Delete workspace
145
+ workspaceCommand
146
+ .command('delete')
147
+ .description('Delete a workspace')
148
+ .argument('<name>', 'Workspace name')
149
+ .action(async (name) => {
150
+ const workspacePath = path.join(WORKSPACE_DIR, `${name}.json`);
151
+ if (!fs.existsSync(workspacePath)) {
152
+ console.log(`\n❌ Workspace "${name}" not found\n`);
153
+ return;
154
+ }
155
+ fs.unlinkSync(workspacePath);
156
+ console.log(`\n✓ Workspace "${name}" deleted\n`);
157
+ });
158
+ function ensureWorkspaceDirectory() {
159
+ if (!fs.existsSync(WORKSPACE_DIR)) {
160
+ fs.mkdirSync(WORKSPACE_DIR, { recursive: true });
161
+ }
162
+ }
163
+ function listWorkspaces() {
164
+ if (!fs.existsSync(WORKSPACE_DIR)) {
165
+ return [];
166
+ }
167
+ const files = fs.readdirSync(WORKSPACE_DIR)
168
+ .filter(f => f.endsWith('.json') && f !== 'workspace.json');
169
+ return files.map(f => {
170
+ const data = fs.readFileSync(path.join(WORKSPACE_DIR, f), 'utf-8');
171
+ return JSON.parse(data);
172
+ });
173
+ }
174
+ function getActiveWorkspace() {
175
+ const activePath = path.join(WORKSPACE_DIR, 'active.txt');
176
+ if (fs.existsSync(activePath)) {
177
+ return fs.readFileSync(activePath, 'utf-8').trim();
178
+ }
179
+ return null;
180
+ }
181
+ function getPresets(preset) {
182
+ const presets = {
183
+ web: {
184
+ image: { format: 'webp', quality: 85, maxWidth: 1920 },
185
+ video: { codec: 'h264', quality: 'medium' }
186
+ },
187
+ mobile: {
188
+ image: { format: 'webp', quality: 80, maxWidth: 1080 },
189
+ video: { codec: 'h264', quality: 'low', maxWidth: 720 }
190
+ },
191
+ print: {
192
+ image: { format: 'tiff', quality: 100, dpi: 300 }
193
+ },
194
+ social: {
195
+ image: { format: 'jpg', quality: 90, maxWidth: 1200 },
196
+ video: { codec: 'h264', quality: 'high', maxDuration: 60 }
197
+ }
198
+ };
199
+ return preset ? presets[preset] || {} : {};
200
+ }
201
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Show CLI branding footer with documentation and GitHub links
3
+ */
4
+ export declare function showBranding(): void;
5
+ /**
6
+ * Show plugin branding footer with version
7
+ * @param pluginName - Name of the plugin (e.g., 'image', 'video', 'audio')
8
+ * @param pluginPath - Path to plugin's package.json
9
+ */
10
+ export declare function showPluginBranding(pluginName: string, pluginPath: string): void;
11
+ //# sourceMappingURL=branding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../../src/utils/branding.ts"],"names":[],"mappings":"AAmCA;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAO/E"}
@@ -0,0 +1,59 @@
1
+ import { readFileSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ /**
5
+ * Get version from package.json
6
+ */
7
+ function getVersion(packagePath) {
8
+ try {
9
+ const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
10
+ return packageJson.version || '0.0.0';
11
+ }
12
+ catch {
13
+ return '0.0.0';
14
+ }
15
+ }
16
+ /**
17
+ * Get CLI version from root package.json
18
+ */
19
+ function getCliVersion() {
20
+ try {
21
+ // For ES modules, use import.meta.url
22
+ if (typeof import.meta.url !== 'undefined') {
23
+ const currentDir = dirname(fileURLToPath(import.meta.url));
24
+ const packagePath = join(currentDir, '../../package.json');
25
+ return getVersion(packagePath);
26
+ }
27
+ // Fallback: try from process.cwd()
28
+ const packagePath = join(process.cwd(), 'package.json');
29
+ return getVersion(packagePath);
30
+ }
31
+ catch {
32
+ return '0.6.0'; // Fallback version
33
+ }
34
+ }
35
+ /**
36
+ * Show CLI branding footer with documentation and GitHub links
37
+ */
38
+ export function showBranding() {
39
+ const version = getCliVersion();
40
+ console.log('\n' + '─'.repeat(60));
41
+ console.log(` 💙 Powered by MediaProc CLI v${version}`);
42
+ console.log(' 📚 Documentation: \x1b[36mhttps://docs-mediaproc.vercel.app/\x1b[0m');
43
+ console.log(' ⭐ Star us: \x1b[36mhttps://github.com/0xshariq/mediaproc-cli\x1b[0m');
44
+ console.log('─'.repeat(60) + '\n');
45
+ }
46
+ /**
47
+ * Show plugin branding footer with version
48
+ * @param pluginName - Name of the plugin (e.g., 'image', 'video', 'audio')
49
+ * @param pluginPath - Path to plugin's package.json
50
+ */
51
+ export function showPluginBranding(pluginName, pluginPath) {
52
+ const version = getVersion(pluginPath);
53
+ console.log('\n' + '─'.repeat(60));
54
+ console.log(` 💙 ${pluginName.charAt(0).toUpperCase() + pluginName.slice(1)} Plugin v${version} · Powered by MediaProc`);
55
+ console.log(' 📚 Documentation: \x1b[36mhttps://docs-mediaproc.vercel.app/\x1b[0m');
56
+ console.log(' ⭐ Star us: \x1b[36mhttps://github.com/0xshariq/mediaproc-cli\x1b[0m');
57
+ console.log('─'.repeat(60) + '\n');
58
+ }
59
+ //# sourceMappingURL=branding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.js","sourceRoot":"","sources":["../../src/utils/branding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;GAEG;AACH,SAAS,UAAU,CAAC,WAAmB;IACrC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,sCAAsC;QACtC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;YAC3D,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QACD,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,CAAC,mBAAmB;IACrC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,UAAkB;IACvE,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,OAAO,yBAAyB,CAAC,CAAC;IAC1H,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACrC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mediaproc/cli",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Universal media processing CLI with plugin architecture",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,7 +0,0 @@
1
- import { Command } from 'commander';
2
- import type { PluginManager } from '../plugin-manager.js';
3
- /**
4
- * Universal file conversion command - shows suggestions based on detected file type
5
- */
6
- export declare function convertCommand(program: Command, pluginManager?: PluginManager): void;
7
- //# sourceMappingURL=convert.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAyFpF"}
@@ -1,96 +0,0 @@
1
- import chalk from 'chalk';
2
- import { existsSync } from 'fs';
3
- import { extname } from 'path';
4
- /**
5
- * Universal file conversion command - shows suggestions based on detected file type
6
- */
7
- export function convertCommand(program, pluginManager) {
8
- program
9
- .command('convert <input> <output>')
10
- .description('Universal file conversion - auto-detects and converts between formats')
11
- .option('-q, --quality <number>', 'Output quality (for lossy formats)', '85')
12
- .option('--preset <preset>', 'Conversion preset (fast, balanced, quality)')
13
- .option('-v, --verbose', 'Verbose output')
14
- .action((input, output, options) => {
15
- if (!existsSync(input)) {
16
- console.error(chalk.red(`✗ Input file not found: ${input}`));
17
- process.exit(1);
18
- }
19
- const inputExt = extname(input).toLowerCase().slice(1);
20
- const outputExt = extname(output).toLowerCase().slice(1);
21
- // Detect media type and suggest appropriate plugin
22
- const imageExts = ['jpg', 'jpeg', 'png', 'webp', 'gif', 'bmp', 'tiff', 'avif', 'heif'];
23
- const videoExts = ['mp4', 'webm', 'mkv', 'avi', 'mov', 'flv', 'wmv', 'm4v'];
24
- const audioExts = ['mp3', 'wav', 'ogg', 'flac', 'aac', 'm4a', 'wma', 'opus'];
25
- const documentExts = ['pdf', 'docx', 'pptx', 'txt', 'md'];
26
- const modelExts = ['gltf', 'glb', 'obj', 'fbx'];
27
- let pluginName = '';
28
- let mediaType = '';
29
- let suggestedCommand = '';
30
- if (imageExts.includes(inputExt)) {
31
- pluginName = 'image';
32
- mediaType = 'Image';
33
- suggestedCommand = `mediaproc image convert ${input} ${output}`;
34
- if (options.quality) {
35
- suggestedCommand += ` --quality ${options.quality}`;
36
- }
37
- }
38
- else if (videoExts.includes(inputExt)) {
39
- pluginName = 'video';
40
- mediaType = 'Video';
41
- suggestedCommand = `mediaproc video convert ${input} ${output}`;
42
- }
43
- else if (audioExts.includes(inputExt)) {
44
- pluginName = 'audio';
45
- mediaType = 'Audio';
46
- suggestedCommand = `mediaproc audio convert ${input} ${output}`;
47
- }
48
- else if (documentExts.includes(inputExt)) {
49
- pluginName = 'document';
50
- mediaType = 'Document';
51
- suggestedCommand = `mediaproc document convert ${input} ${output}`;
52
- }
53
- else if (modelExts.includes(inputExt)) {
54
- pluginName = '3d';
55
- mediaType = '3D Model';
56
- suggestedCommand = `mediaproc 3d convert ${input} ${output}`;
57
- }
58
- else {
59
- console.error(chalk.red(`✗ Unsupported input format: .${inputExt}`));
60
- console.log(chalk.yellow('\n💡 Supported formats:'));
61
- console.log(chalk.dim(' Images: jpg, png, webp, gif, bmp, tiff, avif, heif'));
62
- console.log(chalk.dim(' Videos: mp4, webm, mkv, avi, mov, flv, wmv'));
63
- console.log(chalk.dim(' Audio: mp3, wav, ogg, flac, aac, m4a, wma, opus'));
64
- console.log(chalk.dim(' Documents: pdf, docx, pptx, txt, md'));
65
- console.log(chalk.dim(' 3D Models: gltf, glb, obj, fbx'));
66
- process.exit(1);
67
- }
68
- console.log('');
69
- console.log(chalk.blue(`🔄 ${mediaType} Conversion`));
70
- console.log(chalk.dim('─'.repeat(50)));
71
- console.log(chalk.cyan('Input: ') + input + chalk.dim(` (.${inputExt})`));
72
- console.log(chalk.cyan('Output: ') + output + chalk.dim(` (.${outputExt})`));
73
- console.log(chalk.cyan('Plugin: ') + chalk.yellow(pluginName));
74
- console.log('');
75
- // Check plugin status
76
- const pluginPackage = `@mediaproc/${pluginName}`;
77
- const isLoaded = pluginManager?.getPlugin(pluginPackage) !== undefined;
78
- const isInstalled = isLoaded; // If it can be imported, it's installed
79
- console.log(chalk.yellow('💡 Suggested command:'));
80
- console.log(chalk.cyan(` ${suggestedCommand}`));
81
- console.log('');
82
- if (isLoaded) {
83
- console.log(chalk.green(`✓ ${pluginName} plugin is loaded - command is ready`));
84
- }
85
- else if (isInstalled) {
86
- console.log(chalk.yellow(`⚠️ ${pluginName} plugin is installed but not loaded`));
87
- console.log(chalk.dim(` Load it: ${chalk.cyan(`mediaproc add ${pluginName}`)}`));
88
- }
89
- else {
90
- console.log(chalk.red(`✗ ${pluginName} plugin not installed`));
91
- console.log(chalk.dim(` Install: ${chalk.cyan(`mediaproc add ${pluginName}`)}`));
92
- }
93
- console.log('');
94
- });
95
- }
96
- //# sourceMappingURL=convert.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { Command } from 'commander';
2
- import type { PluginManager } from '../plugin-manager.js';
3
- /**
4
- * Universal info command - shows basic file information and suggests plugin for detailed info
5
- */
6
- export declare function infoCommand(program: Command, pluginManager?: PluginManager): void;
7
- //# sourceMappingURL=info.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CA6GjF"}