@mediaproc/cli 0.5.1 ā 0.5.2
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 +124 -98
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/delete.d.ts +7 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +248 -0
- package/dist/commands/delete.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,52 +1,16 @@
|
|
|
1
1
|
# MediaProc
|
|
2
2
|
|
|
3
|
-
> ⨠**v0.3.0 Released!** - Config System + Auto-Init + Enhanced Plugin Management
|
|
4
|
-
|
|
5
3
|
Universal media processing CLI with an extensible plugin architecture. One tool to process all your media - images, videos, audio, documents, and more.
|
|
6
4
|
|
|
7
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://www.npmjs.com/package/@mediaproc/cli)
|
|
8
7
|
[](https://nodejs.org/)
|
|
9
8
|
[](https://www.typescriptlang.org/)
|
|
10
|
-
[](https://github.com/0xshariq/mediaproc)
|
|
11
10
|
[](CONTRIBUTING.md)
|
|
12
11
|
|
|
13
12
|
---
|
|
14
13
|
|
|
15
|
-
## š What's New in v0.3.0
|
|
16
|
-
|
|
17
|
-
**Major improvements to configuration and plugin management:**
|
|
18
|
-
|
|
19
|
-
### šļø Configuration System
|
|
20
|
-
- **Global Config**: Configuration now lives in `~/.mediaproc/config.json` (not project-specific)
|
|
21
|
-
- **Auto-initialization**: Config is automatically created on first run
|
|
22
|
-
- **Plugin Tracking**: System now tracks installed and loaded plugins separately
|
|
23
|
-
- **Better State Management**: No more manual package.json scanning
|
|
24
|
-
|
|
25
|
-
### š§ Enhanced Commands
|
|
26
|
-
- **`mediaproc init`**: Initialize or reset configuration with `--reset` flag
|
|
27
|
-
- **`mediaproc config show`**: Beautiful display of config with plugin status
|
|
28
|
-
- **`mediaproc config path`**: Quickly find your config file location
|
|
29
|
-
- **`mediaproc config get <key>`**: Get specific config values
|
|
30
|
-
|
|
31
|
-
### šÆ Improved Plugin Management
|
|
32
|
-
- **Smart Detection**: System automatically detects plugin installation/loading status
|
|
33
|
-
- **Config Integration**: Add/remove commands update config state automatically
|
|
34
|
-
- **Status Indicators**: Universal commands show plugin status (loaded/installed/not installed)
|
|
35
|
-
- **Cleaner Architecture**: Removed redundant plugin discovery logic
|
|
36
|
-
|
|
37
|
-
### š Bug Fixes
|
|
38
|
-
- Fixed unused variable warnings in plugin-manager
|
|
39
|
-
- Improved plugin prefix detection
|
|
40
|
-
- Better error handling in config operations
|
|
41
|
-
- Cleaner import statements
|
|
42
|
-
|
|
43
|
-
### š Breaking Changes
|
|
44
|
-
- Config file moved from `./mediaproc.config.json` to `~/.mediaproc/config.json`
|
|
45
|
-
- Run `mediaproc init` to create new config structure
|
|
46
|
-
- Old project-level configs need manual migration (or just reinstall plugins)
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
14
|
## š Table of Contents
|
|
51
15
|
|
|
52
16
|
- [The Problem](#-the-problem)
|
|
@@ -164,29 +128,42 @@ mediaproc document compress input.pdf --quality high
|
|
|
164
128
|
|
|
165
129
|
## š Current Status
|
|
166
130
|
|
|
167
|
-
**Version**: 0.2
|
|
131
|
+
**Version**: 0.5.2 (Beta - Production Ready!)
|
|
168
132
|
**Status**: ā
Image plugin with 49 commands + Universal CLI commands
|
|
169
133
|
**Next Release**: Video & Audio plugins (Q1 2026)
|
|
170
134
|
**Expected v1.0**: Q2 2026
|
|
171
135
|
|
|
172
136
|
### Plugin Management
|
|
173
137
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
- `mediaproc
|
|
177
|
-
- `mediaproc
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
138
|
+
MediaProc provides comprehensive plugin lifecycle management:
|
|
139
|
+
|
|
140
|
+
- `mediaproc list` - List all installed plugins with versions
|
|
141
|
+
- `mediaproc add <plugin>` - Install plugins from npm registry
|
|
142
|
+
- `mediaproc remove <plugin>` - Safely uninstall plugins
|
|
143
|
+
- `mediaproc delete <plugin>` - Delete plugins (alias for remove)
|
|
144
|
+
- `mediaproc update [plugin]` - Update plugin(s) to latest versions
|
|
145
|
+
- Without plugin name: updates all installed plugins
|
|
146
|
+
- With plugin name: updates specific plugin
|
|
147
|
+
- Shows version changes and update summary
|
|
148
|
+
- `mediaproc validate [plugin]` - Validate plugin installation and integrity
|
|
149
|
+
- Check plugin structure and dependencies
|
|
150
|
+
- Verify command registrations
|
|
151
|
+
- Detect issues before execution
|
|
184
152
|
|
|
185
153
|
### Universal Commands (Work Without Plugins)
|
|
186
154
|
|
|
155
|
+
Core CLI commands available immediately after installation:
|
|
156
|
+
|
|
157
|
+
**Media Operations:**
|
|
187
158
|
- `mediaproc convert <input> <output>` - Auto-detect and convert any media file
|
|
188
|
-
- `mediaproc info <file>` -
|
|
189
|
-
- `mediaproc optimize <file>` -
|
|
159
|
+
- `mediaproc info <file>` - Display comprehensive file information
|
|
160
|
+
- `mediaproc optimize <file>` - Analyze and suggest optimization strategies
|
|
161
|
+
|
|
162
|
+
**Help & Configuration:**
|
|
163
|
+
- `mediaproc help [command]` - Show help for commands
|
|
164
|
+
- `mediaproc init` - Initialize configuration file
|
|
165
|
+
- `mediaproc config` - Manage configuration settings
|
|
166
|
+
- `mediaproc run <command>` - Execute plugin commands
|
|
190
167
|
|
|
191
168
|
### Image Processing (@mediaproc/image)
|
|
192
169
|
|
|
@@ -380,6 +357,11 @@ mediaproc-image resize photo.jpg -w 1920
|
|
|
380
357
|
- `mediaproc list` - List all plugins (built-in and installed)
|
|
381
358
|
- `mediaproc add <plugin>` - Install add-on plugins from npm
|
|
382
359
|
- `mediaproc remove <plugin>` - Uninstall add-on plugins
|
|
360
|
+
- `mediaproc delete <plugin>` - Delete/uninstall plugins (alias: uninstall)
|
|
361
|
+
- `--global` - Delete globally installed plugin
|
|
362
|
+
- `--local` - Delete locally installed plugin
|
|
363
|
+
- `--yes` - Skip confirmation prompt
|
|
364
|
+
- `--verbose` - Show detailed output
|
|
383
365
|
- `mediaproc update [plugin]` - Update plugin(s) to latest version
|
|
384
366
|
- `--version <version>` - Update to specific version
|
|
385
367
|
- `--global` - Update globally installed plugins
|
|
@@ -426,35 +408,25 @@ mediaproc-image resize photo.jpg -w 1920
|
|
|
426
408
|
- `vignette` - Darken edges for artistic focus
|
|
427
409
|
- `pixelate` - Retro pixel art effect (custom pixel size)
|
|
428
410
|
|
|
429
|
-
**Advanced Operations** (
|
|
411
|
+
**Advanced Operations** (6 commands)
|
|
430
412
|
|
|
431
|
-
- `composite` - Layer images with blend modes
|
|
432
|
-
- `extract` - Extract color channels
|
|
433
|
-
- `border` - Add decorative frames
|
|
413
|
+
- `composite` - Layer images with blend modes
|
|
414
|
+
- `extract` - Extract color channels or regions
|
|
415
|
+
- `border` - Add decorative frames
|
|
434
416
|
- `clahe` - Contrast-limited adaptive histogram equalization
|
|
435
|
-
- `convolve` - Apply custom convolution kernels
|
|
436
|
-
|
|
437
|
-
**Smart/AI Operations** (6 commands)
|
|
417
|
+
- `convolve` - Apply custom convolution kernels
|
|
418
|
+
- `text` - Add text overlays with styling
|
|
438
419
|
|
|
439
|
-
|
|
440
|
-
- `auto-enhance` - Automatic color and contrast enhancement
|
|
441
|
-
- `palette` - Extract dominant color palettes (2-256 colors)
|
|
442
|
-
- `dominant-color` - Quick dominant color extraction
|
|
443
|
-
- `grid` - Combine images into collage layouts
|
|
444
|
-
- `batch` - Process multiple images at once with any operation
|
|
420
|
+
**Utility & Metadata** (8 commands)
|
|
445
421
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
- `
|
|
449
|
-
- `
|
|
450
|
-
- `
|
|
451
|
-
- `
|
|
452
|
-
- `
|
|
453
|
-
- `stats` - Technical image statistics
|
|
454
|
-
- `split` - Split image into grid tiles
|
|
455
|
-
- `stack` - Stack images horizontally/vertically
|
|
456
|
-
- `mirror` - Create mirror/kaleidoscope effects
|
|
457
|
-
- `metadata` - View, export, or remove EXIF data
|
|
422
|
+
- `convert` - Format conversion
|
|
423
|
+
- `optimize` - Smart size optimization
|
|
424
|
+
- `compress` - Advanced compression control
|
|
425
|
+
- `watermark` - Add watermarks with positioning
|
|
426
|
+
- `info` - Display image metadata
|
|
427
|
+
- `metadata` - Manage EXIF/IPTC data
|
|
428
|
+
- `thumbnail` - Generate optimized thumbnails
|
|
429
|
+
- `stats` - Technical image statistics
|
|
458
430
|
|
|
459
431
|
**Format Support:**
|
|
460
432
|
|
|
@@ -694,41 +666,28 @@ mediaproc image resize photo.jpg -w 800
|
|
|
694
666
|
|
|
695
667
|
### Updating Plugins
|
|
696
668
|
|
|
697
|
-
Keep
|
|
669
|
+
Keep plugins up-to-date for latest features and bug fixes:
|
|
698
670
|
|
|
699
671
|
```bash
|
|
700
|
-
# Update all installed plugins
|
|
672
|
+
# Update all installed plugins
|
|
701
673
|
mediaproc update
|
|
702
674
|
|
|
703
|
-
# Update
|
|
675
|
+
# Update specific plugin
|
|
704
676
|
mediaproc update image
|
|
705
677
|
mediaproc update video
|
|
706
678
|
|
|
707
|
-
# Update
|
|
708
|
-
mediaproc update
|
|
709
|
-
mediaproc update
|
|
710
|
-
|
|
711
|
-
# Update with installation scope
|
|
712
|
-
mediaproc update --global # Update globally installed plugins
|
|
713
|
-
mediaproc update image --local # Update locally installed plugin
|
|
679
|
+
# Update with scope control
|
|
680
|
+
mediaproc update --global # Global plugins only
|
|
681
|
+
mediaproc update image --local # Local plugin only
|
|
714
682
|
|
|
715
|
-
# Verbose output
|
|
683
|
+
# Verbose output
|
|
716
684
|
mediaproc update --verbose
|
|
717
|
-
mediaproc update image --verbose
|
|
718
685
|
```
|
|
719
686
|
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
The update command automatically detects and handles three types of plugins:
|
|
723
|
-
|
|
724
|
-
1. **Official Plugins** (`@mediaproc/*`) - ā
OFFICIAL
|
|
725
|
-
- Example: `@mediaproc/image`, `@mediaproc/video`
|
|
726
|
-
- Short name supported: `mediaproc update image`
|
|
727
|
-
|
|
728
|
-
2. **Community Plugins** (`mediaproc-*`) - ā COMMUNITY
|
|
687
|
+
See full documentation for version control and advanced options.
|
|
729
688
|
- Example: `mediaproc-custom-filter`
|
|
730
689
|
- Full name required: `mediaproc update mediaproc-custom-filter`
|
|
731
|
-
|
|
690
|
+
|
|
732
691
|
3. **Third-Party Plugins** - ā THIRD-PARTY
|
|
733
692
|
- Any other npm package
|
|
734
693
|
- Full package name: `mediaproc update @company/plugin-name`
|
|
@@ -777,6 +736,73 @@ $ mediaproc update image --verbose
|
|
|
777
736
|
|
|
778
737
|
---
|
|
779
738
|
|
|
739
|
+
### Deleting Plugins
|
|
740
|
+
|
|
741
|
+
Remove plugins you no longer need to free up disk space:
|
|
742
|
+
|
|
743
|
+
```bash
|
|
744
|
+
# Delete a plugin (auto-detects installation scope)
|
|
745
|
+
mediaproc delete image
|
|
746
|
+
mediaproc delete video
|
|
747
|
+
|
|
748
|
+
# Delete specific scope
|
|
749
|
+
mediaproc delete image --global # Delete globally installed
|
|
750
|
+
mediaproc delete image --local # Delete locally installed
|
|
751
|
+
|
|
752
|
+
# Skip confirmation prompt
|
|
753
|
+
mediaproc delete image --yes # No confirmation
|
|
754
|
+
|
|
755
|
+
# Verbose output
|
|
756
|
+
mediaproc delete image --verbose # Show detailed information
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
**Plugin Type Detection:**
|
|
760
|
+
|
|
761
|
+
The delete command automatically detects and handles three types of plugins:
|
|
762
|
+
|
|
763
|
+
1. **Official Plugins** (`@mediaproc/*`) - ā
OFFICIAL
|
|
764
|
+
```bash
|
|
765
|
+
mediaproc delete image # Short name
|
|
766
|
+
mediaproc delete @mediaproc/image # Full name
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
2. **Community Plugins** (`mediaproc-*`) - ā COMMUNITY
|
|
770
|
+
```bash
|
|
771
|
+
mediaproc delete mediaproc-custom-filter # Full name required
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
3. **Third-Party Plugins** - ā THIRD-PARTY
|
|
775
|
+
```bash
|
|
776
|
+
mediaproc delete @company/plugin-name # Full package name
|
|
777
|
+
```
|
|
778
|
+
|
|
779
|
+
**What the delete command does:**
|
|
780
|
+
|
|
781
|
+
1. **Detects Plugin Type**: Identifies official, community, or third-party plugins
|
|
782
|
+
2. **Detects Installation Scope**: Automatically determines if plugin is installed globally or locally
|
|
783
|
+
3. **Confirms Deletion**: Shows confirmation prompt (skip with `--yes`)
|
|
784
|
+
4. **Uninstalls Package**: Uses the appropriate package manager (npm, pnpm, yarn, bun)
|
|
785
|
+
5. **Shows Status**: Displays deletion status with plugin type badge
|
|
786
|
+
6. **Frees Memory**: Removes all plugin files from disk
|
|
787
|
+
|
|
788
|
+
**Examples:**
|
|
789
|
+
|
|
790
|
+
```bash
|
|
791
|
+
# Delete a plugin
|
|
792
|
+
mediaproc delete image
|
|
793
|
+
mediaproc delete video --global
|
|
794
|
+
|
|
795
|
+
# Skip confirmation
|
|
796
|
+
mediaproc delete image --yes
|
|
797
|
+
|
|
798
|
+
# Alias: uninstall
|
|
799
|
+
mediaproc uninstall image
|
|
800
|
+
```
|
|
801
|
+
|
|
802
|
+
**š Full Guide:** See [Plugin Terminology Guide](docs/plugin-terminology.md) for detailed explanations.
|
|
803
|
+
|
|
804
|
+
---
|
|
805
|
+
|
|
780
806
|
## ļæ½š Documentation
|
|
781
807
|
|
|
782
808
|
Comprehensive documentation is available in the [docs/](docs/) folder:
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA6CA,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCzC"}
|
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ import { fileURLToPath } from 'url';
|
|
|
7
7
|
import { PluginManager } from './plugin-manager.js';
|
|
8
8
|
import { addCommand } from './commands/add.js';
|
|
9
9
|
import { removeCommand } from './commands/remove.js';
|
|
10
|
+
import { deleteCommand } from './commands/delete.js';
|
|
10
11
|
import { listCommand } from './commands/list.js';
|
|
11
12
|
import { pluginsCommand } from './commands/plugins.js';
|
|
12
13
|
import { helpCommand } from './commands/help.js';
|
|
@@ -45,6 +46,7 @@ export async function cli() {
|
|
|
45
46
|
// Plugin management commands
|
|
46
47
|
addCommand(program, pluginManager);
|
|
47
48
|
removeCommand(program, pluginManager);
|
|
49
|
+
deleteCommand(program, pluginManager);
|
|
48
50
|
listCommand(program, pluginManager);
|
|
49
51
|
pluginsCommand(program, pluginManager);
|
|
50
52
|
updateCommand(program);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,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;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAE1C,gCAAgC;AAChC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1F;;GAEG;AACH,KAAK,UAAU,eAAe;IAC5B,MAAM,eAAe,GAAG,aAAa,CAAC,kBAAkB,EAAE,CAAC;IAE3D,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,aAAa,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,OAAO;SACJ,IAAI,CAAC,WAAW,CAAC;SACjB,WAAW,CAAC,2CAA2C,CAAC;SACxD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEhC,6BAA6B;IAC7B,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACtC,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,WAAW,CAAC,OAAO,CAAC,CAAC;IAErB,sDAAsD;IACtD,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvC,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpC,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAExC,mBAAmB;IACnB,UAAU,CAAC,OAAO,CAAC,CAAC;IACpB,eAAe,CAAC,OAAO,CAAC,CAAC;IAEzB,sDAAsD;IACtD,MAAM,eAAe,EAAE,CAAC;IAExB,kBAAkB;IAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,qCAAqC;AACrC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAoIlD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CA0IlF"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { execSync } from 'child_process';
|
|
4
|
+
/**
|
|
5
|
+
* Detect plugin type and return full package name
|
|
6
|
+
*/
|
|
7
|
+
function detectPluginInfo(plugin, pluginManager) {
|
|
8
|
+
// Official plugin (@mediaproc/*)
|
|
9
|
+
if (plugin.startsWith('@mediaproc/')) {
|
|
10
|
+
return {
|
|
11
|
+
name: plugin,
|
|
12
|
+
type: 'official',
|
|
13
|
+
displayName: plugin.replace('@mediaproc/', ''),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
// Community plugin (mediaproc-*)
|
|
17
|
+
if (plugin.startsWith('mediaproc-')) {
|
|
18
|
+
return {
|
|
19
|
+
name: plugin,
|
|
20
|
+
type: 'community',
|
|
21
|
+
displayName: plugin,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Check if it's a short name for official plugin using plugin manager
|
|
25
|
+
if (!plugin.includes('/') && !plugin.includes('-')) {
|
|
26
|
+
const fullName = `${pluginManager.getPluginPrefix()}${plugin}`;
|
|
27
|
+
return {
|
|
28
|
+
name: fullName,
|
|
29
|
+
type: 'official',
|
|
30
|
+
displayName: plugin,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Third-party plugin (any other package)
|
|
34
|
+
return {
|
|
35
|
+
name: plugin,
|
|
36
|
+
type: 'third-party',
|
|
37
|
+
displayName: plugin,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get plugin type badge for display
|
|
42
|
+
*/
|
|
43
|
+
function getPluginTypeBadge(type) {
|
|
44
|
+
switch (type) {
|
|
45
|
+
case 'official':
|
|
46
|
+
return chalk.blue('ā
OFFICIAL');
|
|
47
|
+
case 'community':
|
|
48
|
+
return chalk.green('ā COMMUNITY');
|
|
49
|
+
case 'third-party':
|
|
50
|
+
return chalk.yellow('ā THIRD-PARTY');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Detect which package manager is being used
|
|
55
|
+
*/
|
|
56
|
+
function detectPackageManager() {
|
|
57
|
+
try {
|
|
58
|
+
execSync('bun --version', { stdio: 'ignore' });
|
|
59
|
+
return 'bun';
|
|
60
|
+
}
|
|
61
|
+
catch { }
|
|
62
|
+
try {
|
|
63
|
+
execSync('pnpm --version', { stdio: 'ignore' });
|
|
64
|
+
return 'pnpm';
|
|
65
|
+
}
|
|
66
|
+
catch { }
|
|
67
|
+
try {
|
|
68
|
+
execSync('yarn --version', { stdio: 'ignore' });
|
|
69
|
+
return 'yarn';
|
|
70
|
+
}
|
|
71
|
+
catch { }
|
|
72
|
+
try {
|
|
73
|
+
execSync('deno --version', { stdio: 'ignore' });
|
|
74
|
+
return 'deno';
|
|
75
|
+
}
|
|
76
|
+
catch { }
|
|
77
|
+
return 'npm';
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if plugin is installed
|
|
81
|
+
*/
|
|
82
|
+
function isPluginInstalled(packageName, isGlobal) {
|
|
83
|
+
try {
|
|
84
|
+
const packageManager = detectPackageManager();
|
|
85
|
+
let cmd;
|
|
86
|
+
if (packageManager === 'npm') {
|
|
87
|
+
cmd = isGlobal
|
|
88
|
+
? `npm list -g ${packageName} --depth=0`
|
|
89
|
+
: `npm list ${packageName} --depth=0`;
|
|
90
|
+
}
|
|
91
|
+
else if (packageManager === 'pnpm') {
|
|
92
|
+
cmd = isGlobal
|
|
93
|
+
? `pnpm list -g ${packageName} --depth=0`
|
|
94
|
+
: `pnpm list ${packageName} --depth=0`;
|
|
95
|
+
}
|
|
96
|
+
else if (packageManager === 'yarn') {
|
|
97
|
+
cmd = isGlobal
|
|
98
|
+
? `yarn global list --pattern ${packageName}`
|
|
99
|
+
: `yarn list --pattern ${packageName}`;
|
|
100
|
+
}
|
|
101
|
+
else if (packageManager === 'bun') {
|
|
102
|
+
cmd = isGlobal
|
|
103
|
+
? `bun pm ls -g | grep ${packageName}`
|
|
104
|
+
: `bun pm ls | grep ${packageName}`;
|
|
105
|
+
}
|
|
106
|
+
else if (packageManager === 'deno') {
|
|
107
|
+
// Deno doesn't have traditional global/local installs
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
execSync(cmd, { stdio: 'ignore' });
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Delete/remove a plugin
|
|
122
|
+
*/
|
|
123
|
+
export function deleteCommand(program, pluginManager) {
|
|
124
|
+
program
|
|
125
|
+
.command('delete <plugin>')
|
|
126
|
+
.alias('uninstall')
|
|
127
|
+
.description('Delete/uninstall a plugin')
|
|
128
|
+
.option('-g, --global', 'Delete plugin globally')
|
|
129
|
+
.option('-l, --local', 'Delete plugin locally')
|
|
130
|
+
.option('--verbose', 'Show detailed output')
|
|
131
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
132
|
+
.action(async (plugin, options) => {
|
|
133
|
+
const spinner = ora('Starting deletion...').start();
|
|
134
|
+
try {
|
|
135
|
+
const pluginInfo = detectPluginInfo(plugin, pluginManager);
|
|
136
|
+
const packageManager = detectPackageManager();
|
|
137
|
+
if (options.verbose) {
|
|
138
|
+
spinner.info(chalk.dim(`Package manager: ${packageManager}`));
|
|
139
|
+
}
|
|
140
|
+
spinner.text = `Detecting plugin type for ${chalk.cyan(pluginInfo.displayName)}...`;
|
|
141
|
+
// Verify plugin type using plugin manager
|
|
142
|
+
const isOfficial = pluginManager.isOfficialPlugin(pluginInfo.name);
|
|
143
|
+
if (options.verbose) {
|
|
144
|
+
spinner.info(chalk.dim(`Plugin type: ${getPluginTypeBadge(pluginInfo.type)}`));
|
|
145
|
+
spinner.info(chalk.dim(`Package name: ${pluginInfo.name}`));
|
|
146
|
+
spinner.info(chalk.dim(`Official plugin: ${isOfficial ? 'Yes' : 'No'}`));
|
|
147
|
+
}
|
|
148
|
+
// Determine installation scope
|
|
149
|
+
let isGlobal = false;
|
|
150
|
+
if (options.global) {
|
|
151
|
+
isGlobal = true;
|
|
152
|
+
}
|
|
153
|
+
else if (options.local) {
|
|
154
|
+
isGlobal = false;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
// Auto-detect installation scope
|
|
158
|
+
spinner.text = 'Detecting installation scope...';
|
|
159
|
+
const installedGlobally = isPluginInstalled(pluginInfo.name, true);
|
|
160
|
+
const installedLocally = isPluginInstalled(pluginInfo.name, false);
|
|
161
|
+
if (installedGlobally && installedLocally) {
|
|
162
|
+
spinner.fail(chalk.yellow('ā Plugin found in both global and local scope'));
|
|
163
|
+
console.log(chalk.dim('Please specify:'));
|
|
164
|
+
console.log(chalk.white(' mediaproc delete ' + plugin + ' --global') + chalk.dim(' # Delete globally'));
|
|
165
|
+
console.log(chalk.white(' mediaproc delete ' + plugin + ' --local') + chalk.dim(' # Delete locally'));
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
else if (installedGlobally) {
|
|
169
|
+
isGlobal = true;
|
|
170
|
+
}
|
|
171
|
+
else if (installedLocally) {
|
|
172
|
+
isGlobal = false;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
spinner.fail(chalk.red(`ā Plugin ${chalk.cyan(pluginInfo.displayName)} is not installed`));
|
|
176
|
+
console.log(chalk.dim('\nCheck installed plugins: ') + chalk.white('mediaproc list'));
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const scope = isGlobal ? 'globally' : 'locally';
|
|
181
|
+
spinner.succeed(chalk.green(`ā Found ${pluginInfo.displayName} ${getPluginTypeBadge(pluginInfo.type)} installed ${scope}`));
|
|
182
|
+
// Confirmation (unless --yes flag is provided)
|
|
183
|
+
if (!options.yes) {
|
|
184
|
+
console.log(chalk.yellow('\nā You are about to delete:'));
|
|
185
|
+
console.log(chalk.white(` Plugin: ${pluginInfo.name} ${getPluginTypeBadge(pluginInfo.type)}`));
|
|
186
|
+
console.log(chalk.white(` Scope: ${scope}`));
|
|
187
|
+
console.log(chalk.dim('\nPress Ctrl+C to cancel, or run with --yes to skip confirmation\n'));
|
|
188
|
+
// Wait 2 seconds for user to cancel
|
|
189
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
190
|
+
}
|
|
191
|
+
spinner.start(`Deleting ${chalk.cyan(pluginInfo.displayName)} ${getPluginTypeBadge(pluginInfo.type)} (${scope})...`);
|
|
192
|
+
// Build the delete command
|
|
193
|
+
let deleteCmd;
|
|
194
|
+
if (packageManager === 'npm') {
|
|
195
|
+
deleteCmd = isGlobal
|
|
196
|
+
? `npm uninstall -g ${pluginInfo.name}`
|
|
197
|
+
: `npm uninstall ${pluginInfo.name}`;
|
|
198
|
+
}
|
|
199
|
+
else if (packageManager === 'pnpm') {
|
|
200
|
+
deleteCmd = isGlobal
|
|
201
|
+
? `pnpm remove -g ${pluginInfo.name}`
|
|
202
|
+
: `pnpm remove ${pluginInfo.name}`;
|
|
203
|
+
}
|
|
204
|
+
else if (packageManager === 'yarn') {
|
|
205
|
+
deleteCmd = isGlobal
|
|
206
|
+
? `yarn global remove ${pluginInfo.name}`
|
|
207
|
+
: `yarn remove ${pluginInfo.name}`;
|
|
208
|
+
}
|
|
209
|
+
else if (packageManager === 'bun') {
|
|
210
|
+
deleteCmd = isGlobal
|
|
211
|
+
? `bun remove -g ${pluginInfo.name}`
|
|
212
|
+
: `bun remove ${pluginInfo.name}`;
|
|
213
|
+
}
|
|
214
|
+
else if (packageManager === 'deno') {
|
|
215
|
+
spinner.fail(chalk.red('Deno package management is not supported for plugin deletion'));
|
|
216
|
+
process.exit(1);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
throw new Error('Unknown package manager');
|
|
220
|
+
}
|
|
221
|
+
if (options.verbose) {
|
|
222
|
+
spinner.info(chalk.dim(`Running: ${deleteCmd}`));
|
|
223
|
+
}
|
|
224
|
+
// Execute the delete command
|
|
225
|
+
execSync(deleteCmd, {
|
|
226
|
+
stdio: options.verbose ? 'inherit' : 'ignore',
|
|
227
|
+
cwd: isGlobal ? undefined : process.cwd()
|
|
228
|
+
});
|
|
229
|
+
// Unload plugin from memory if it was loaded
|
|
230
|
+
if (pluginManager.getLoadedPlugins().includes(pluginInfo.name)) {
|
|
231
|
+
pluginManager.unloadPlugin(pluginInfo.name);
|
|
232
|
+
if (options.verbose) {
|
|
233
|
+
spinner.info(chalk.dim(`Unloaded ${pluginInfo.name} from memory`));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
spinner.succeed(chalk.green(`ā ${pluginInfo.displayName} ${getPluginTypeBadge(pluginInfo.type)} deleted successfully (${scope})`));
|
|
237
|
+
console.log(chalk.dim('\nš” View remaining plugins: ') + chalk.white('mediaproc list'));
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
spinner.fail(chalk.red('Failed to delete plugin'));
|
|
241
|
+
if (error instanceof Error) {
|
|
242
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
243
|
+
}
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
|