@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,193 @@
1
+ import { Command } from 'commander';
2
+ import { showBranding } from '../utils/branding';
3
+ export const searchCommand = new Command()
4
+ .name('search')
5
+ .description('Search for commands across all installed plugins')
6
+ .argument('<query>', 'Search query')
7
+ .option('-p, --plugin <name>', 'Search in specific plugin only')
8
+ .option('-l, --limit <number>', 'Limit number of results', '10')
9
+ .option('--json', 'Output results as JSON')
10
+ .action(async (query, options) => {
11
+ try {
12
+ const results = await searchCommands(query, options.plugin);
13
+ const limit = parseInt(options.limit);
14
+ if (results.length === 0) {
15
+ console.log(`\nāŒ No commands found matching "${query}"\n`);
16
+ console.log('šŸ’” Tips:');
17
+ console.log(' • Try different keywords (e.g., "resize", "convert", "compress")');
18
+ console.log(' • Check installed plugins: \x1b[36mmediaproc list\x1b[0m');
19
+ console.log(' • Install more plugins: \x1b[36mmediaproc add <plugin>\x1b[0m');
20
+ console.log(' • View all available commands: \x1b[36mmediaproc <plugin> --help\x1b[0m');
21
+ showBranding();
22
+ return;
23
+ }
24
+ if (options.json) {
25
+ console.log(JSON.stringify(results.slice(0, limit), null, 2));
26
+ return;
27
+ }
28
+ // Display results in a nice table format
29
+ console.log(`\nšŸ” Found ${results.length} command${results.length > 1 ? 's' : ''} matching "${query}"\n`);
30
+ console.log('ā”Œ' + '─'.repeat(78) + '┐');
31
+ results.slice(0, limit).forEach((result, index) => {
32
+ const number = `${index + 1}.`.padEnd(3);
33
+ const pluginCmd = `${result.plugin} ${result.command}`;
34
+ const category = result.category ? ` [${result.category}]` : '';
35
+ console.log(`│ ${number} \x1b[1m\x1b[36m${pluginCmd}\x1b[0m${category}`);
36
+ console.log(`│ ${result.description}`);
37
+ console.log(`│ \x1b[90mUsage: mediaproc ${result.plugin} ${result.command} [options]\x1b[0m`);
38
+ if (index < Math.min(limit, results.length) - 1) {
39
+ console.log('│' + ' '.repeat(78) + '│');
40
+ }
41
+ });
42
+ console.log('ā””' + '─'.repeat(78) + 'ā”˜');
43
+ if (results.length > limit) {
44
+ console.log(`\nšŸ“Š Showing top ${limit} results (${results.length} total)`);
45
+ console.log(` Use \x1b[36m--limit ${results.length}\x1b[0m to see all results`);
46
+ }
47
+ console.log(`\nšŸ’” Get detailed help: \x1b[36mmediaproc <plugin> <command> --help\x1b[0m`);
48
+ showBranding();
49
+ }
50
+ catch (error) {
51
+ console.error(`\nāŒ Search failed: ${error instanceof Error ? error.message : 'Unknown error'}\n`);
52
+ showBranding();
53
+ process.exit(1);
54
+ }
55
+ });
56
+ async function searchCommands(query, specificPlugin) {
57
+ const results = [];
58
+ const queryLower = query.toLowerCase();
59
+ const queryWords = queryLower.split(/\s+/).filter(w => w.length > 0);
60
+ // Get command database (static for now, will be dynamic with real plugins later)
61
+ const commandDatabase = getCommandDatabase();
62
+ // Search through all plugins and commands
63
+ for (const [plugin, commands] of Object.entries(commandDatabase)) {
64
+ if (specificPlugin && plugin !== specificPlugin) {
65
+ continue;
66
+ }
67
+ for (const [command, info] of Object.entries(commands)) {
68
+ const score = calculateRelevanceScore(queryLower, queryWords, plugin, command, info.description, info.category);
69
+ if (score > 0) {
70
+ results.push({
71
+ plugin,
72
+ command,
73
+ description: info.description,
74
+ category: info.category,
75
+ score
76
+ });
77
+ }
78
+ }
79
+ }
80
+ // Sort by relevance score (highest first)
81
+ results.sort((a, b) => b.score - a.score);
82
+ return results;
83
+ }
84
+ function calculateRelevanceScore(query, queryWords, plugin, command, description, category) {
85
+ let score = 0;
86
+ const searchText = `${plugin} ${command} ${description} ${category || ''}`.toLowerCase();
87
+ const commandLower = command.toLowerCase();
88
+ const descriptionLower = description.toLowerCase();
89
+ // Exact match in command name (highest priority)
90
+ if (commandLower === query) {
91
+ score += 100;
92
+ }
93
+ // Command starts with query
94
+ if (commandLower.startsWith(query)) {
95
+ score += 50;
96
+ }
97
+ // Command contains query
98
+ if (commandLower.includes(query)) {
99
+ score += 30;
100
+ }
101
+ // Description contains exact query
102
+ if (descriptionLower.includes(query)) {
103
+ score += 25;
104
+ }
105
+ // All query words present in searchable text
106
+ if (queryWords.every(word => searchText.includes(word))) {
107
+ score += 20;
108
+ }
109
+ // Individual word matches (with decreasing importance)
110
+ queryWords.forEach((word, index) => {
111
+ const wordWeight = 10 / (index + 1); // First word more important
112
+ if (commandLower.includes(word)) {
113
+ score += wordWeight * 2;
114
+ }
115
+ if (descriptionLower.includes(word)) {
116
+ score += wordWeight;
117
+ }
118
+ if (plugin.toLowerCase().includes(word)) {
119
+ score += wordWeight * 1.5;
120
+ }
121
+ });
122
+ return score;
123
+ }
124
+ function getCommandDatabase() {
125
+ // This is a comprehensive static database. In production, this should be loaded from installed plugins
126
+ return {
127
+ image: {
128
+ // Transform Commands
129
+ resize: { description: 'Resize images to specified dimensions', category: 'Transform' },
130
+ crop: { description: 'Crop images to specified area', category: 'Transform' },
131
+ rotate: { description: 'Rotate images by degrees', category: 'Transform' },
132
+ flip: { description: 'Flip images horizontally or vertically', category: 'Transform' },
133
+ trim: { description: 'Trim edges of images automatically', category: 'Transform' },
134
+ extend: { description: 'Extend image canvas with background', category: 'Transform' },
135
+ extract: { description: 'Extract region from images', category: 'Transform' },
136
+ // Format Commands
137
+ convert: { description: 'Convert images between formats (JPG, PNG, WebP, AVIF)', category: 'Format' },
138
+ compress: { description: 'Compress images with quality control', category: 'Format' },
139
+ optimize: { description: 'Optimize images for web delivery', category: 'Format' },
140
+ // Effect Commands
141
+ blur: { description: 'Apply gaussian blur effect to images', category: 'Effects' },
142
+ sharpen: { description: 'Sharpen images for clarity', category: 'Effects' },
143
+ grayscale: { description: 'Convert images to grayscale/black and white', category: 'Effects' },
144
+ tint: { description: 'Apply color tint overlay to images', category: 'Effects' },
145
+ negate: { description: 'Invert/negate image colors', category: 'Effects' },
146
+ normalize: { description: 'Normalize image levels and contrast', category: 'Effects' },
147
+ median: { description: 'Apply median filter for noise reduction', category: 'Effects' },
148
+ // Adjustment Commands
149
+ brightness: { description: 'Adjust image brightness levels', category: 'Adjustments' },
150
+ contrast: { description: 'Adjust image contrast', category: 'Adjustments' },
151
+ saturation: { description: 'Adjust color saturation intensity', category: 'Adjustments' },
152
+ hue: { description: 'Adjust color hue/tone', category: 'Adjustments' },
153
+ gamma: { description: 'Apply gamma correction to images', category: 'Adjustments' },
154
+ modulate: { description: 'Modulate brightness, saturation, and hue together', category: 'Adjustments' },
155
+ // Composition Commands
156
+ watermark: { description: 'Add text or image watermarks', category: 'Composition' },
157
+ thumbnail: { description: 'Generate thumbnails with smart cropping', category: 'Composition' },
158
+ border: { description: 'Add decorative borders to images', category: 'Composition' },
159
+ composite: { description: 'Composite/layer multiple images together', category: 'Composition' },
160
+ overlay: { description: 'Overlay images on top of each other with blending', category: 'Composition' },
161
+ mask: { description: 'Apply alpha mask to images', category: 'Composition' },
162
+ flatten: { description: 'Flatten transparent image layers', category: 'Composition' },
163
+ // Advanced Commands
164
+ convolve: { description: 'Apply custom convolution kernel filter', category: 'Advanced' },
165
+ recomb: { description: 'Recombine and remix color channels', category: 'Advanced' },
166
+ metadata: { description: 'View or edit image EXIF metadata', category: 'Advanced' },
167
+ histogram: { description: 'Generate image histogram data', category: 'Advanced' },
168
+ stats: { description: 'Get detailed image statistics', category: 'Advanced' },
169
+ },
170
+ video: {
171
+ compress: { description: 'Compress video files with quality presets', category: 'Processing' },
172
+ transcode: { description: 'Convert video to different codec/format (H.264, H.265, VP9)', category: 'Processing' },
173
+ trim: { description: 'Trim/cut video by time range or duration', category: 'Editing' },
174
+ resize: { description: 'Resize video dimensions and resolution', category: 'Transform' },
175
+ merge: { description: 'Merge/concatenate multiple video files', category: 'Editing' },
176
+ extract: { description: 'Extract audio track or video frames', category: 'Extraction' },
177
+ subtitle: { description: 'Add or extract video subtitles', category: 'Editing' },
178
+ thumbnail: { description: 'Generate video thumbnail at timestamp', category: 'Extraction' },
179
+ metadata: { description: 'View or edit video metadata', category: 'Info' },
180
+ },
181
+ audio: {
182
+ convert: { description: 'Convert audio between formats (MP3, AAC, WAV, FLAC)', category: 'Processing' },
183
+ normalize: { description: 'Normalize audio volume levels', category: 'Processing' },
184
+ trim: { description: 'Trim audio by time range', category: 'Editing' },
185
+ merge: { description: 'Merge multiple audio files into one', category: 'Editing' },
186
+ extract: { description: 'Extract audio from video files', category: 'Extraction' },
187
+ fade: { description: 'Apply fade in/out effects', category: 'Effects' },
188
+ volume: { description: 'Adjust audio volume levels', category: 'Adjustments' },
189
+ metadata: { description: 'View or edit audio metadata/tags', category: 'Info' },
190
+ }
191
+ };
192
+ }
193
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUjD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE;KACvC,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,kDAAkD,CAAC;KAC/D,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;KAC/D,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAC/D,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAO,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,mCAAmC,KAAK,KAAK,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;YAE1F,YAAY,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAc,KAAK,KAAK,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QAExC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAEhE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,mBAAmB,SAAS,UAAU,QAAQ,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,kCAAkC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;YAElG,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QAExC,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,aAAa,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,CAAC,MAAM,4BAA4B,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAE1F,YAAY,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;QAClG,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,cAAuB;IAClE,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErE,iFAAiF;IACjF,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,0CAA0C;IAC1C,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QACjE,IAAI,cAAc,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,uBAAuB,CACnC,UAAU,EACV,UAAU,EACV,MAAM,EACN,OAAO,EACP,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,CACd,CAAC;YAEF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM;oBACN,OAAO;oBACP,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAE1C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAa,EACb,UAAoB,EACpB,MAAc,EACd,OAAe,EACf,WAAmB,EACnB,QAAiB;IAEjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IACzF,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAEnD,iDAAiD;IACjD,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QAC3B,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,yBAAyB;IACzB,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACxD,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,uDAAuD;IACvD,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;QAEjE,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,KAAK,IAAI,UAAU,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,KAAK,IAAI,UAAU,CAAC;QACtB,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,KAAK,IAAI,UAAU,GAAG,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB;IACzB,uGAAuG;IACvG,OAAO;QACL,KAAK,EAAE;YACL,qBAAqB;YACrB,MAAM,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,WAAW,EAAE;YACvF,IAAI,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,WAAW,EAAE;YAC7E,MAAM,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,QAAQ,EAAE,WAAW,EAAE;YAC1E,IAAI,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,WAAW,EAAE;YACtF,IAAI,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,WAAW,EAAE;YAClF,MAAM,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,WAAW,EAAE;YACrF,OAAO,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,WAAW,EAAE;YAE7E,kBAAkB;YAClB,OAAO,EAAE,EAAE,WAAW,EAAE,uDAAuD,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACrG,QAAQ,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACrF,QAAQ,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAEjF,kBAAkB;YAClB,IAAI,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAClF,OAAO,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC3E,SAAS,EAAE,EAAE,WAAW,EAAE,6CAA6C,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9F,IAAI,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChF,MAAM,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC1E,SAAS,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,SAAS,EAAE;YACtF,MAAM,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAEvF,sBAAsB;YACtB,UAAU,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,QAAQ,EAAE,aAAa,EAAE;YACtF,QAAQ,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC3E,UAAU,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,QAAQ,EAAE,aAAa,EAAE;YACzF,GAAG,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE;YACtE,KAAK,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,aAAa,EAAE;YACnF,QAAQ,EAAE,EAAE,WAAW,EAAE,mDAAmD,EAAE,QAAQ,EAAE,aAAa,EAAE;YAEvG,uBAAuB;YACvB,SAAS,EAAE,EAAE,WAAW,EAAE,8BAA8B,EAAE,QAAQ,EAAE,aAAa,EAAE;YACnF,SAAS,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC9F,MAAM,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,aAAa,EAAE;YACpF,SAAS,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC/F,OAAO,EAAE,EAAE,WAAW,EAAE,mDAAmD,EAAE,QAAQ,EAAE,aAAa,EAAE;YACtG,IAAI,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC5E,OAAO,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,aAAa,EAAE;YAErF,oBAAoB;YACpB,QAAQ,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,UAAU,EAAE;YACzF,MAAM,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,UAAU,EAAE;YACnF,QAAQ,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,UAAU,EAAE;YACnF,SAAS,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,UAAU,EAAE;YACjF,KAAK,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,UAAU,EAAE;SAC9E;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,EAAE,WAAW,EAAE,2CAA2C,EAAE,QAAQ,EAAE,YAAY,EAAE;YAC9F,SAAS,EAAE,EAAE,WAAW,EAAE,6DAA6D,EAAE,QAAQ,EAAE,YAAY,EAAE;YACjH,IAAI,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,SAAS,EAAE;YACtF,MAAM,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,WAAW,EAAE;YACxF,KAAK,EAAE,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,SAAS,EAAE;YACrF,OAAO,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,YAAY,EAAE;YACvF,QAAQ,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChF,SAAS,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,QAAQ,EAAE,YAAY,EAAE;YAC3F,QAAQ,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE;SAC3E;QACD,KAAK,EAAE;YACL,OAAO,EAAE,EAAE,WAAW,EAAE,qDAAqD,EAAE,QAAQ,EAAE,YAAY,EAAE;YACvG,SAAS,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,YAAY,EAAE;YACnF,IAAI,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,QAAQ,EAAE,SAAS,EAAE;YACtE,KAAK,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,SAAS,EAAE;YAClF,OAAO,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,QAAQ,EAAE,YAAY,EAAE;YAClF,IAAI,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,SAAS,EAAE;YACvE,MAAM,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC9E,QAAQ,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE;SAChF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const statsCommand: Command;
3
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,YAAY,SA0BrB,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import { getHistory } from './history.js';
6
+ const STATS_FILE = path.join(os.homedir(), '.mediaproc', 'stats.json');
7
+ export const statsCommand = new Command()
8
+ .name('stats')
9
+ .description('Show MediaProc usage statistics')
10
+ .option('-p, --plugin <name>', 'Show stats for specific plugin')
11
+ .option('--period <days>', 'Time period in days', '30')
12
+ .option('--reset', 'Reset all statistics')
13
+ .option('--json', 'Output as JSON')
14
+ .action(async (options) => {
15
+ if (options.reset) {
16
+ resetStats();
17
+ console.log('\nāœ“ Statistics reset\n');
18
+ return;
19
+ }
20
+ const stats = calculateStats(parseInt(options.period));
21
+ if (options.json) {
22
+ console.log(JSON.stringify(stats, null, 2));
23
+ return;
24
+ }
25
+ if (options.plugin) {
26
+ displayPluginStats(options.plugin, stats);
27
+ }
28
+ else {
29
+ displayOverallStats(stats, parseInt(options.period));
30
+ }
31
+ });
32
+ function calculateStats(days) {
33
+ const history = getHistory();
34
+ const cutoff = Date.now() - (days * 24 * 60 * 60 * 1000);
35
+ const recentHistory = history.filter(entry => entry.timestamp >= cutoff);
36
+ const pluginUsage = {};
37
+ const commandUsage = {};
38
+ let totalTime = 0;
39
+ let successCount = 0;
40
+ recentHistory.forEach(entry => {
41
+ const plugin = entry.command.split(' ')[0];
42
+ pluginUsage[plugin] = (pluginUsage[plugin] || 0) + 1;
43
+ commandUsage[entry.command] = (commandUsage[entry.command] || 0) + 1;
44
+ if (entry.duration) {
45
+ totalTime += entry.duration;
46
+ }
47
+ if (entry.success) {
48
+ successCount++;
49
+ }
50
+ });
51
+ return {
52
+ totalFiles: recentHistory.length,
53
+ totalTime,
54
+ storageSaved: 0, // Would need to track this separately
55
+ pluginUsage,
56
+ commandUsage,
57
+ successRate: recentHistory.length > 0 ? (successCount / recentHistory.length) * 100 : 0,
58
+ lastUpdated: Date.now()
59
+ };
60
+ }
61
+ function displayOverallStats(stats, days) {
62
+ console.log('\nšŸ“Š MediaProc Statistics\n');
63
+ console.log('━'.repeat(60));
64
+ console.log(`\nPeriod: Last ${days} days\n`);
65
+ console.log('šŸ“ˆ Overview:');
66
+ console.log(` Total files processed: ${stats.totalFiles.toLocaleString()}`);
67
+ console.log(` Success rate: ${stats.successRate.toFixed(1)}%`);
68
+ console.log(` Total processing time: ${formatDuration(stats.totalTime)}`);
69
+ if (stats.totalFiles > 0) {
70
+ console.log(` Average per file: ${formatDuration(stats.totalTime / stats.totalFiles)}`);
71
+ }
72
+ if (stats.storageSaved > 0) {
73
+ console.log(` Storage saved: ${formatBytes(stats.storageSaved)}`);
74
+ }
75
+ // Plugin usage
76
+ const topPlugins = Object.entries(stats.pluginUsage)
77
+ .sort((a, b) => b[1] - a[1])
78
+ .slice(0, 5);
79
+ if (topPlugins.length > 0) {
80
+ console.log('\nšŸ”Œ Most Used Plugins:\n');
81
+ topPlugins.forEach(([plugin, count], index) => {
82
+ const percentage = (count / stats.totalFiles) * 100;
83
+ const bar = 'ā–“'.repeat(Math.ceil(percentage / 5));
84
+ console.log(`${index + 1}. ${plugin.padEnd(15)} ${bar} ${count} (${percentage.toFixed(1)}%)`);
85
+ });
86
+ }
87
+ // Command usage
88
+ const topCommands = Object.entries(stats.commandUsage)
89
+ .sort((a, b) => b[1] - a[1])
90
+ .slice(0, 5);
91
+ if (topCommands.length > 0) {
92
+ console.log('\n⚔ Most Used Commands:\n');
93
+ topCommands.forEach(([command, count], index) => {
94
+ console.log(`${index + 1}. ${command.padEnd(25)} ${count} uses`);
95
+ });
96
+ }
97
+ console.log('\n' + '━'.repeat(60));
98
+ console.log('\nšŸ’” Commands:');
99
+ console.log(' mediaproc stats --plugin <name> - Plugin-specific stats');
100
+ console.log(' mediaproc stats --period <days> - Change time period');
101
+ console.log(' mediaproc stats --reset - Reset statistics\n');
102
+ }
103
+ function displayPluginStats(plugin, stats) {
104
+ const pluginCount = stats.pluginUsage[plugin] || 0;
105
+ if (pluginCount === 0) {
106
+ console.log(`\nāŒ No usage data for plugin "${plugin}"\n`);
107
+ return;
108
+ }
109
+ console.log(`\nšŸ“Š ${plugin.charAt(0).toUpperCase() + plugin.slice(1)} Plugin Statistics\n`);
110
+ console.log('━'.repeat(60));
111
+ console.log(`\nTotal uses: ${pluginCount}`);
112
+ console.log(`Percentage of total: ${((pluginCount / stats.totalFiles) * 100).toFixed(1)}%`);
113
+ // Commands for this plugin
114
+ const pluginCommands = Object.entries(stats.commandUsage)
115
+ .filter(([cmd]) => cmd.startsWith(plugin))
116
+ .sort((a, b) => b[1] - a[1]);
117
+ if (pluginCommands.length > 0) {
118
+ console.log('\n⚔ Command Usage:\n');
119
+ pluginCommands.forEach(([command, count], index) => {
120
+ const commandName = command.replace(`${plugin} `, '');
121
+ const percentage = (count / pluginCount) * 100;
122
+ console.log(`${index + 1}. ${commandName.padEnd(20)} ${count} (${percentage.toFixed(1)}%)`);
123
+ });
124
+ }
125
+ console.log('\n' + '━'.repeat(60) + '\n');
126
+ }
127
+ function resetStats() {
128
+ try {
129
+ if (fs.existsSync(STATS_FILE)) {
130
+ fs.unlinkSync(STATS_FILE);
131
+ }
132
+ }
133
+ catch (error) {
134
+ console.error('Error resetting stats:', error);
135
+ }
136
+ }
137
+ function formatDuration(ms) {
138
+ if (ms < 1000)
139
+ return `${ms}ms`;
140
+ if (ms < 60000)
141
+ return `${(ms / 1000).toFixed(1)}s`;
142
+ if (ms < 3600000)
143
+ return `${(ms / 60000).toFixed(1)}m`;
144
+ return `${(ms / 3600000).toFixed(1)}h`;
145
+ }
146
+ function formatBytes(bytes) {
147
+ if (bytes < 1024)
148
+ return `${bytes}B`;
149
+ if (bytes < 1024 * 1024)
150
+ return `${(bytes / 1024).toFixed(1)}KB`;
151
+ if (bytes < 1024 * 1024 * 1024)
152
+ return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
153
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)}GB`;
154
+ }
155
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const templateCommand: Command;
3
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,eAAe,SAKxB,CAAC"}
@@ -0,0 +1,184 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ const TEMPLATES_FILE = path.join(os.homedir(), '.mediaproc', 'templates.json');
6
+ export const templateCommand = new Command()
7
+ .name('template')
8
+ .description('Manage command templates')
9
+ .action(() => {
10
+ templateCommand.help();
11
+ });
12
+ // Save template
13
+ templateCommand
14
+ .command('save')
15
+ .description('Save command as template')
16
+ .argument('<name>', 'Template name')
17
+ .argument('<command>', 'Command template (use {param} for parameters)')
18
+ .option('-d, --description <text>', 'Template description')
19
+ .action(async (name, command, options) => {
20
+ const templates = loadTemplates();
21
+ if (templates[name]) {
22
+ console.log(`\nāš ļø Template "${name}" already exists. Use --force to overwrite\n`);
23
+ return;
24
+ }
25
+ // Extract parameters from command (anything in {braces})
26
+ const params = command.match(/\{([^}]+)\}/g)?.map(p => p.slice(1, -1)) || [];
27
+ templates[name] = {
28
+ name,
29
+ command,
30
+ description: options.description || '',
31
+ parameters: params,
32
+ createdAt: Date.now()
33
+ };
34
+ saveTemplates(templates);
35
+ console.log(`\nāœ“ Template "${name}" saved\n`);
36
+ console.log(`Command: ${command}`);
37
+ if (params.length > 0) {
38
+ console.log(`Parameters: ${params.join(', ')}`);
39
+ }
40
+ console.log('');
41
+ });
42
+ // Run template
43
+ templateCommand
44
+ .command('run')
45
+ .description('Run a saved template')
46
+ .argument('<name>', 'Template name')
47
+ .argument('[args...]', 'Template arguments (key=value)')
48
+ .action(async (name, args) => {
49
+ const templates = loadTemplates();
50
+ const template = templates[name];
51
+ if (!template) {
52
+ console.log(`\nāŒ Template "${name}" not found\n`);
53
+ console.log('šŸ’” List templates with: mediaproc template list\n');
54
+ return;
55
+ }
56
+ // Parse arguments
57
+ const params = {};
58
+ args.forEach(arg => {
59
+ const [key, value] = arg.split('=');
60
+ if (key && value) {
61
+ params[key] = value;
62
+ }
63
+ });
64
+ // Replace parameters in command
65
+ let command = template.command;
66
+ template.parameters.forEach(param => {
67
+ if (!params[param]) {
68
+ console.log(`\nāŒ Missing required parameter: ${param}\n`);
69
+ process.exit(1);
70
+ }
71
+ command = command.replace(`{${param}}`, params[param]);
72
+ });
73
+ console.log(`\nšŸš€ Running template "${name}":\n`);
74
+ console.log(` ${command}\n`);
75
+ console.log('āš ļø Note: Actual command execution requires full implementation\n');
76
+ console.log(`Run manually: mediaproc ${command}\n`);
77
+ });
78
+ // List templates
79
+ templateCommand
80
+ .command('list')
81
+ .description('List all saved templates')
82
+ .option('--json', 'Output as JSON')
83
+ .action(async (options) => {
84
+ const templates = loadTemplates();
85
+ const templateList = Object.values(templates);
86
+ if (templateList.length === 0) {
87
+ console.log('\nšŸ“¦ No templates saved\n');
88
+ console.log('šŸ’” Save a template with: mediaproc template save <name> <command>\n');
89
+ return;
90
+ }
91
+ if (options.json) {
92
+ console.log(JSON.stringify(templateList, null, 2));
93
+ return;
94
+ }
95
+ console.log('\nšŸ“‹ Saved Templates\n');
96
+ console.log('━'.repeat(70));
97
+ templateList.forEach((template, index) => {
98
+ console.log(`\n${index + 1}. \x1b[36m${template.name}\x1b[0m`);
99
+ if (template.description) {
100
+ console.log(` ${template.description}`);
101
+ }
102
+ console.log(` Command: ${template.command}`);
103
+ if (template.parameters.length > 0) {
104
+ console.log(` Parameters: ${template.parameters.join(', ')}`);
105
+ }
106
+ console.log(` Created: ${new Date(template.createdAt).toLocaleDateString()}`);
107
+ });
108
+ console.log('\n' + '━'.repeat(70));
109
+ console.log('\nšŸ’” Run a template: mediaproc template run <name> [args]\n');
110
+ });
111
+ // Delete template
112
+ templateCommand
113
+ .command('delete')
114
+ .description('Delete a saved template')
115
+ .argument('<name>', 'Template name')
116
+ .action(async (name) => {
117
+ const templates = loadTemplates();
118
+ if (!templates[name]) {
119
+ console.log(`\nāŒ Template "${name}" not found\n`);
120
+ return;
121
+ }
122
+ delete templates[name];
123
+ saveTemplates(templates);
124
+ console.log(`\nāœ“ Template "${name}" deleted\n`);
125
+ });
126
+ // Show template details
127
+ templateCommand
128
+ .command('show')
129
+ .description('Show template details')
130
+ .argument('<name>', 'Template name')
131
+ .action(async (name) => {
132
+ const templates = loadTemplates();
133
+ const template = templates[name];
134
+ if (!template) {
135
+ console.log(`\nāŒ Template "${name}" not found\n`);
136
+ return;
137
+ }
138
+ console.log('\nšŸ“„ Template Details\n');
139
+ console.log('━'.repeat(60));
140
+ console.log(`\nName: ${template.name}`);
141
+ if (template.description) {
142
+ console.log(`Description: ${template.description}`);
143
+ }
144
+ console.log(`Command: ${template.command}`);
145
+ if (template.parameters.length > 0) {
146
+ console.log('\nParameters:');
147
+ template.parameters.forEach(param => {
148
+ console.log(` • ${param}`);
149
+ });
150
+ console.log('\nExample usage:');
151
+ const exampleArgs = template.parameters.map(p => `${p}=value`).join(' ');
152
+ console.log(` mediaproc template run ${template.name} ${exampleArgs}`);
153
+ }
154
+ console.log('\n' + '━'.repeat(60) + '\n');
155
+ });
156
+ function loadTemplates() {
157
+ try {
158
+ ensureTemplatesDirectory();
159
+ if (!fs.existsSync(TEMPLATES_FILE)) {
160
+ return {};
161
+ }
162
+ const data = fs.readFileSync(TEMPLATES_FILE, 'utf-8');
163
+ return JSON.parse(data);
164
+ }
165
+ catch (error) {
166
+ return {};
167
+ }
168
+ }
169
+ function saveTemplates(templates) {
170
+ try {
171
+ ensureTemplatesDirectory();
172
+ fs.writeFileSync(TEMPLATES_FILE, JSON.stringify(templates, null, 2));
173
+ }
174
+ catch (error) {
175
+ console.error('Error saving templates:', error);
176
+ }
177
+ }
178
+ function ensureTemplatesDirectory() {
179
+ const dir = path.dirname(TEMPLATES_FILE);
180
+ if (!fs.existsSync(dir)) {
181
+ fs.mkdirSync(dir, { recursive: true });
182
+ }
183
+ }
184
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const watchCommand: Command;
3
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,eAAO,MAAM,YAAY,SAsDrB,CAAC"}