@mediaproc/cli 0.3.0 → 0.5.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 (44) hide show
  1. package/README.md +36 -1
  2. package/dist/__tests__/plugin-manager.test.d.ts +2 -0
  3. package/dist/__tests__/plugin-manager.test.d.ts.map +1 -0
  4. package/dist/__tests__/plugin-manager.test.js +7 -0
  5. package/dist/__tests__/plugin-manager.test.js.map +1 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +19 -12
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/add.d.ts.map +1 -1
  10. package/dist/commands/add.js +97 -125
  11. package/dist/commands/add.js.map +1 -1
  12. package/dist/commands/convert.js +2 -2
  13. package/dist/commands/convert.js.map +1 -1
  14. package/dist/commands/info.js +2 -2
  15. package/dist/commands/info.js.map +1 -1
  16. package/dist/commands/list.d.ts.map +1 -1
  17. package/dist/commands/list.js +3 -19
  18. package/dist/commands/list.js.map +1 -1
  19. package/dist/commands/optimize.js +2 -2
  20. package/dist/commands/optimize.js.map +1 -1
  21. package/dist/commands/remove.d.ts.map +1 -1
  22. package/dist/commands/remove.js +1 -4
  23. package/dist/commands/remove.js.map +1 -1
  24. package/dist/commands/update.d.ts +6 -0
  25. package/dist/commands/update.d.ts.map +1 -0
  26. package/dist/commands/update.js +132 -0
  27. package/dist/commands/update.js.map +1 -0
  28. package/dist/plugin-manager.d.ts +0 -19
  29. package/dist/plugin-manager.d.ts.map +1 -1
  30. package/dist/plugin-manager.js +0 -33
  31. package/dist/plugin-manager.js.map +1 -1
  32. package/package.json +11 -2
  33. package/dist/commands/config.d.ts +0 -3
  34. package/dist/commands/config.d.ts.map +0 -1
  35. package/dist/commands/config.js +0 -109
  36. package/dist/commands/config.js.map +0 -1
  37. package/dist/commands/init.d.ts +0 -3
  38. package/dist/commands/init.d.ts.map +0 -1
  39. package/dist/commands/init.js +0 -35
  40. package/dist/commands/init.js.map +0 -1
  41. package/dist/config-manager.d.ts +0 -110
  42. package/dist/config-manager.d.ts.map +0 -1
  43. package/dist/config-manager.js +0 -201
  44. package/dist/config-manager.js.map +0 -1
@@ -1,110 +0,0 @@
1
- /**
2
- * Configuration structure for MediaProc
3
- */
4
- export interface MediaProcConfig {
5
- version: string;
6
- installedPlugins: string[];
7
- loadedPlugins: string[];
8
- defaults?: {
9
- [plugin: string]: {
10
- [key: string]: any;
11
- };
12
- };
13
- pipelines?: {
14
- [name: string]: {
15
- name: string;
16
- steps: Array<{
17
- plugin: string;
18
- command: string;
19
- options?: Record<string, any>;
20
- }>;
21
- };
22
- };
23
- lastUpdated?: string;
24
- }
25
- /**
26
- * Configuration manager for MediaProc
27
- * Handles reading/writing config from ~/.mediaproc/config.json
28
- */
29
- export declare class ConfigManager {
30
- private static readonly CONFIG_DIR;
31
- private static readonly CONFIG_FILE;
32
- private config;
33
- /**
34
- * Get the config directory path
35
- */
36
- static getConfigDir(): string;
37
- /**
38
- * Get the config file path
39
- */
40
- static getConfigPath(): string;
41
- /**
42
- * Ensure config directory exists
43
- */
44
- private ensureConfigDir;
45
- /**
46
- * Load config from file
47
- */
48
- load(): MediaProcConfig;
49
- /**
50
- * Create default config
51
- */
52
- private createDefaultConfig;
53
- /**
54
- * Save config to file
55
- */
56
- save(): void;
57
- /**
58
- * Get current config
59
- */
60
- get(): MediaProcConfig;
61
- /**
62
- * Check if a plugin is installed
63
- */
64
- isPluginInstalled(pluginName: string): boolean;
65
- /**
66
- * Check if a plugin is loaded
67
- */
68
- isPluginLoaded(pluginName: string): boolean;
69
- /**
70
- * Add plugin to installed list
71
- */
72
- addInstalledPlugin(pluginName: string): void;
73
- /**
74
- * Remove plugin from installed list
75
- */
76
- removeInstalledPlugin(pluginName: string): void;
77
- /**
78
- * Add plugin to loaded list
79
- */
80
- addLoadedPlugin(pluginName: string): void;
81
- /**
82
- * Remove plugin from loaded list
83
- */
84
- removeLoadedPlugin(pluginName: string): void;
85
- /**
86
- * Get list of installed plugins
87
- */
88
- getInstalledPlugins(): string[];
89
- /**
90
- * Get list of loaded plugins
91
- */
92
- getLoadedPlugins(): string[];
93
- /**
94
- * Set a configuration value
95
- */
96
- set(key: string, value: any): void;
97
- /**
98
- * Get a configuration value
99
- */
100
- getValue(key: string): any;
101
- /**
102
- * Reset config to defaults
103
- */
104
- reset(): void;
105
- /**
106
- * Check if config file exists
107
- */
108
- exists(): boolean;
109
- }
110
- //# sourceMappingURL=config-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG;YACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACtB,CAAC;KACL,CAAC;IACF,SAAS,CAAC,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,KAAK,CAAC;gBACT,MAAM,EAAE,MAAM,CAAC;gBACf,OAAO,EAAE,MAAM,CAAC;gBAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;aACjC,CAAC,CAAC;SACN,CAAC;KACL,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiC;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAEpF,OAAO,CAAC,MAAM,CAAgC;IAE9C;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,MAAM;IAI7B;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,MAAM;IAI9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,IAAI,IAAI,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;OAEG;IACH,GAAG,IAAI,eAAe;IAOtB;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAK9C;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAK3C;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ5C;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAO/C;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQzC;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAM5C;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAK/B;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAK5B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAgBlC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAe1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,MAAM,IAAI,OAAO;CAGpB"}
@@ -1,201 +0,0 @@
1
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
2
- import { join } from 'path';
3
- import { homedir } from 'os';
4
- /**
5
- * Configuration manager for MediaProc
6
- * Handles reading/writing config from ~/.mediaproc/config.json
7
- */
8
- export class ConfigManager {
9
- static CONFIG_DIR = join(homedir(), '.mediaproc');
10
- static CONFIG_FILE = join(ConfigManager.CONFIG_DIR, 'config.json');
11
- config = null;
12
- /**
13
- * Get the config directory path
14
- */
15
- static getConfigDir() {
16
- return ConfigManager.CONFIG_DIR;
17
- }
18
- /**
19
- * Get the config file path
20
- */
21
- static getConfigPath() {
22
- return ConfigManager.CONFIG_FILE;
23
- }
24
- /**
25
- * Ensure config directory exists
26
- */
27
- ensureConfigDir() {
28
- if (!existsSync(ConfigManager.CONFIG_DIR)) {
29
- mkdirSync(ConfigManager.CONFIG_DIR, { recursive: true });
30
- }
31
- }
32
- /**
33
- * Load config from file
34
- */
35
- load() {
36
- if (this.config) {
37
- return this.config;
38
- }
39
- this.ensureConfigDir();
40
- if (!existsSync(ConfigManager.CONFIG_FILE)) {
41
- // Create default config
42
- this.config = this.createDefaultConfig();
43
- this.save();
44
- return this.config;
45
- }
46
- try {
47
- const data = readFileSync(ConfigManager.CONFIG_FILE, 'utf-8');
48
- this.config = JSON.parse(data);
49
- return this.config;
50
- }
51
- catch (error) {
52
- console.error('Failed to parse config file, creating new one');
53
- this.config = this.createDefaultConfig();
54
- this.save();
55
- return this.config;
56
- }
57
- }
58
- /**
59
- * Create default config
60
- */
61
- createDefaultConfig() {
62
- return {
63
- version: '1.0',
64
- installedPlugins: [],
65
- loadedPlugins: [],
66
- defaults: {},
67
- pipelines: {},
68
- lastUpdated: new Date().toISOString(),
69
- };
70
- }
71
- /**
72
- * Save config to file
73
- */
74
- save() {
75
- if (!this.config) {
76
- return;
77
- }
78
- this.ensureConfigDir();
79
- this.config.lastUpdated = new Date().toISOString();
80
- writeFileSync(ConfigManager.CONFIG_FILE, JSON.stringify(this.config, null, 2), 'utf-8');
81
- }
82
- /**
83
- * Get current config
84
- */
85
- get() {
86
- if (!this.config) {
87
- return this.load();
88
- }
89
- return this.config;
90
- }
91
- /**
92
- * Check if a plugin is installed
93
- */
94
- isPluginInstalled(pluginName) {
95
- const config = this.get();
96
- return config.installedPlugins.includes(pluginName);
97
- }
98
- /**
99
- * Check if a plugin is loaded
100
- */
101
- isPluginLoaded(pluginName) {
102
- const config = this.get();
103
- return config.loadedPlugins.includes(pluginName);
104
- }
105
- /**
106
- * Add plugin to installed list
107
- */
108
- addInstalledPlugin(pluginName) {
109
- const config = this.get();
110
- if (!config.installedPlugins.includes(pluginName)) {
111
- config.installedPlugins.push(pluginName);
112
- this.save();
113
- }
114
- }
115
- /**
116
- * Remove plugin from installed list
117
- */
118
- removeInstalledPlugin(pluginName) {
119
- const config = this.get();
120
- config.installedPlugins = config.installedPlugins.filter(p => p !== pluginName);
121
- config.loadedPlugins = config.loadedPlugins.filter(p => p !== pluginName);
122
- this.save();
123
- }
124
- /**
125
- * Add plugin to loaded list
126
- */
127
- addLoadedPlugin(pluginName) {
128
- const config = this.get();
129
- if (!config.loadedPlugins.includes(pluginName)) {
130
- config.loadedPlugins.push(pluginName);
131
- this.save();
132
- }
133
- }
134
- /**
135
- * Remove plugin from loaded list
136
- */
137
- removeLoadedPlugin(pluginName) {
138
- const config = this.get();
139
- config.loadedPlugins = config.loadedPlugins.filter(p => p !== pluginName);
140
- this.save();
141
- }
142
- /**
143
- * Get list of installed plugins
144
- */
145
- getInstalledPlugins() {
146
- const config = this.get();
147
- return [...config.installedPlugins];
148
- }
149
- /**
150
- * Get list of loaded plugins
151
- */
152
- getLoadedPlugins() {
153
- const config = this.get();
154
- return [...config.loadedPlugins];
155
- }
156
- /**
157
- * Set a configuration value
158
- */
159
- set(key, value) {
160
- const config = this.get();
161
- const keys = key.split('.');
162
- let current = config;
163
- for (let i = 0; i < keys.length - 1; i++) {
164
- if (!current[keys[i]]) {
165
- current[keys[i]] = {};
166
- }
167
- current = current[keys[i]];
168
- }
169
- current[keys[keys.length - 1]] = value;
170
- this.save();
171
- }
172
- /**
173
- * Get a configuration value
174
- */
175
- getValue(key) {
176
- const config = this.get();
177
- const keys = key.split('.');
178
- let current = config;
179
- for (const k of keys) {
180
- if (current[k] === undefined) {
181
- return undefined;
182
- }
183
- current = current[k];
184
- }
185
- return current;
186
- }
187
- /**
188
- * Reset config to defaults
189
- */
190
- reset() {
191
- this.config = this.createDefaultConfig();
192
- this.save();
193
- }
194
- /**
195
- * Check if config file exists
196
- */
197
- exists() {
198
- return existsSync(ConfigManager.CONFIG_FILE);
199
- }
200
- }
201
- //# sourceMappingURL=config-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"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"}