Unable to remove a plugin using a not officially supported platform
- Dominant language
- JavaScript
- Stars
- 231
- Forks
- 242
- Avg merge
- 2h 51m
- Merged PRs (30d)
- 7
Description
# Bug Report
## Problem
I am unable to remove a custom plugin using `cordova plugin remove plugin-name` for not officially supported platform.
### What is expected to happen?
The plugin should be removed from the project.
### What does actually happen?
CLI throws an error: `Platform "platform-name" not supported.`.
## Information
Looking at source code, the `plugin remove` command calls function `uninstallPlatform` in `cordova-lib/src/plugman/uninstall.js`. The error I get comes from https://github.com/apache/cordova-lib/blob/1d98b57a1bc51d74217198681c506a608c8396db/src/plugman/uninstall.js#L70-L72
`platform_modules` are defined inside https://github.com/apache/cordova-lib/blob/master/src/platforms/platformsConfig.json. It makes sense it's not modified when I add the custom platform to the project.
This part of the code probably should not depend on the static configuration.
### Command or Code
```
cordova plugin remove plugin-name --verbose
Calling plugman.uninstall on plugin "plugin-name" for platform "platform-name"
Platform "platform-name" not supported.
CordovaError: Platform "platform-name" not supported.
at Function.module.exports.uninstallPlatform (...\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\uninstall.js:71:31)
at ...\npm\node_modules\cordova\node_modules\cordova-lib\src\cordova\plugin\remove.js:106:38
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
```
### Version information
Cordova: 10.0.0
## Checklist
- [x] I searched for existing GitHub issues
- [x] I updated all Cordova tooling to most recent version
- [x] I included all the necessary information above
Contributor guide
Research direction
Start with cordova-lib/src/plugman/uninstall.js, especially uninstallPlatform and its use of platform_modules, then trace the call from src/cordova/plugin/remove.js. Reproduce the reported plugin removal command with a custom platform and inspect platforms/platformsConfig.json. Done means the plugin is removed for an unsupported custom platform without regressing officially supported platforms.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js
- Domain
- cli, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100