Ahh yes.. Good catch. I am looking into it. On 7/11/13 10:45 AM, "Ian Clelland" <iclell...@google.com> wrote:
>I'm getting an error on uninstall -- haven't tracked it down yet, but you >might have some insight. > >My test sequence looks like this: > >cordova create cb4077test com.google.cb4077test >cd cb4077test >cordova platform add ios >cordova platform add android >cordova plugin install ../cordova-mobile-spec/dependencies-plugin >cordova plugin rm org.cordova.mobile-spec-dependencies > >On install, everything works correctly. > >The uninstall process starts like this: >Calling plugman.uninstall on plugin "org.cordova.mobile-spec-dependencies" >for platform "android" >Uninstalling 18 dangling dependent plugins... >Uninstalling org.apache.cordova.core.battery-status... > >and then proceeds to remove all 18 plugins. It then tries to do the same >for iOS, and fails immediately, because the plugins have already been >deleted. The last few lines of debug output are > >Calling plugman.uninstall on plugin "org.cordova.mobile-spec-dependencies" >for platform "ios" >Error: ENOENT, no such file or directory >'/Users/iclelland/Code/Cordova3/cb4077test/plugins/org.apache.cordova.core >.battery-status/plugin.xml' > at Object.fs.openSync (fs.js:413:18) > at Object.fs.readFileSync (fs.js:270:15) > at Object.module.exports.parseElementtreeSync >(/Users/iclelland/Code/Cordova3/cordova-cli/node_modules/plugman/src/util/ >xml-helpers.js:107:27) > at >/Users/iclelland/Code/Cordova3/cordova-cli/node_modules/plugman/src/util/d >ependencies.js:21:35 > at Array.forEach (native) > at Object.module.exports.generate_dependency_info >(/Users/iclelland/Code/Cordova3/cordova-cli/node_modules/plugman/src/util/ >dependencies.js:20:45) > at runUninstall >(/Users/iclelland/Code/Cordova3/cordova-cli/node_modules/plugman/src/unins >tall.js:63:40) > at Function.module.exports.uninstallPlatform >(/Users/iclelland/Code/Cordova3/cordova-cli/node_modules/plugman/src/unins >tall.js:42:5) > at /Users/iclelland/Code/Cordova3/cordova-cli/src/plugin.js:149:51 > at Array.forEach (native) > >The plugins directory is left with just android.json (correct, with >plugins >removed), ios.json (still full of plugins), and the >org.cordova.mobile-spec-dependencies plugin not removed. > > >On Thu, Jul 11, 2013 at 1:19 PM, Filip Maj <f...@adobe.com> wrote: > >> Thank you Ian! >> >> On 7/11/13 10:17 AM, "Ian Clelland" <iclell...@google.com> wrote: >> >> >Taking a look now (Sorry I missed this thread yesterday). I'll have an >> >update for you shortly. >> > >> > >> >On Thu, Jul 11, 2013 at 1:04 PM, Filip Maj <f...@adobe.com> wrote: >> > >> >> FYI plugman 0.9.0 is pushed up to npm and the cli is waiting review >>by >> >>Ian >> >> / Google folk. I've pushed up a branch CB-4077 to the cli that >> >>integrates >> >> with the new plugman. Can you guys check that this branch works >>properly >> >> for any of your flows? >> >> >> >> I'll assume everything works out if I don't hear back from you guys >>and >> >> move forward with it later today. >> >> >> >> On 7/10/13 7:34 AM, "Ian Clelland" <iclell...@google.com> wrote: >> >> >> >> >The new plugman works for me, when coupled with my CB-4077 branch of >> >>cli. >> >> > >> >> >I noticed that the <project-root>/plugins/<plugin-dir> directories >> >>don't >> >> >get removed for dangling dependencies -- only the top-level plugin >>is >> >> >removed from there. However, the dependents are removed from all >> >> >platforms, >> >> >so the uninstallation works correctly. >> >> > >> >> >I'll rebase my CLI against the newly-refreshed-master-branch and >>force >> >> >push >> >> >it to github for you. >> >> > >> >> >Ian >> >> > >> >> > >> >> >On Tue, Jul 9, 2013 at 10:49 PM, Ian Clelland <iclell...@google.com> >> >> >wrote: >> >> > >> >> >> Sounds good, Fil -- I'll take a look at the updates, and run it >> >>through >> >> >> its paces here. I'll let you know right away if I find anything >> >>unusual. >> >> >> >> >> >> Ian >> >> >> >> >> >> >> >> >> On Tue, Jul 9, 2013 at 5:31 PM, Filip Maj <f...@adobe.com> wrote: >> >> >> >> >> >>> I've pushed up a CB-4077 branch of plugman up to the apache git >> >>repo. >> >> >>>It >> >> >>> is a few extra commits on top of yours, Ian, addressing some >>other >> >> >>>issues >> >> >>> I noticed during testing. >> >> >>> >> >> >>> It looks like it is safe to merge into master, but I would like >>Ian >> >>and >> >> >>> Google co. to once-over it before we merge into master. >> >> >>> >> >> >>> Once that¹s in plugman, we can publish a new version of it to >>npm, >> >> >>>update >> >> >>> the dependency in cordova-cli, and make sure it is in working >>order >> >> >>>with >> >> >>> the new plugman before we proceed with a cli update. >> >> >>> >> >> >>> Sound good? >> >> >>> >> >> >>> On 7/5/13 12:01 PM, "Ian Clelland" <iclell...@google.com> wrote: >> >> >>> >> >> >>> >Oh, don't be sad, Brian ;) >> >> >>> > >> >> >>> >That's why I only pushed to my fork; looking for constructive >> >>review. >> >> >>> > >> >> >>> >And now I know where the cli and plugman tests are, and they >>shall >> >>be >> >> >>> made >> >> >>> >better before anything is pushed to a real repo. >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> >On Fri, Jul 5, 2013 at 2:23 PM, Brian LeRoux <b...@brian.io> wrote: >> >> >>> > >> >> >>> >> =( >> >> >>> >> >> >> >>> >> Should go without saying but lets not commit stuff without >>first >> >> >>> >> ensuring the tests pass, eh. >> >> >>> >> >> >> >>> >> >> >> >>> >> On Fri, Jul 5, 2013 at 10:05 AM, Filip Maj <f...@adobe.com> >> wrote: >> >> >>> >> > Added comments to the issue thread. The tests no longer >>pass + >> >> >>>we'll >> >> >>> >>need >> >> >>> >> > new tests to cover your changes. >> >> >>> >> > >> >> >>> >> > On 7/4/13 8:21 PM, "Ian Clelland" <iclell...@google.com> >> wrote: >> >> >>> >> > >> >> >>> >> >>Thanks, Fil, >> >> >>> >> >> >> >> >>> >> >>Created CB-4077 to track this. I'll start working on >>separating >> >> >>>those >> >> >>> >> >>functions. >> >> >>> >> >> >> >> >>> >> >>Ian >> >> >>> >> >> >> >> >>> >> >>On Thu, Jul 4, 2013 at 7:08 PM, Filip Maj <f...@adobe.com> >> >>wrote: >> >> >>> >> >> >> >> >>> >> >>> File an issue over at issues.cordova.io, tag plugman, and >>we >> >> can >> >> >>> go >> >> >>> >> from >> >> >>> >> >>> there >> >> >>> >> >>> >> >> >>> >> >>> On 7/4/13 12:59 PM, "Ian Clelland" <iclell...@google.com> >> >> wrote: >> >> >>> >> >>> >> >> >>> >> >>> >This is the first time I've tried to use the CLI tools >>with >> >>the >> >> >>> new >> >> >>> >> 3.0 >> >> >>> >> >>> >project structure, and I've discovered that I can't >> >>uninstall a >> >> >>> >>plugin >> >> >>> >> >>> >that >> >> >>> >> >>> >only has dependencies (no source files, either JS or >>native) >> >> >>> >> >>> > >> >> >>> >> >>> >Specifically, I've built a mobilespec app, installing >> >> >>> >> >>> >the mobile-spec-dependencies plugin, which does nothing >>but >> >> >>>depend >> >> >>> >>on >> >> >>> >> >>> >every >> >> >>> >> >>> >Cordova core plugin. I want to remove it, so that I can >> >>remove >> >> >>>and >> >> >>> >> >>> >reinstall one of the dependencies, but the CLI tools will >> >>not >> >> >>> >>remove >> >> >>> >> >>>it. >> >> >>> >> >>> > >> >> >>> >> >>> >Digging through cordova-cli, it looks like "cordova >>plugin >> >>rm" >> >> >>> >> >>>attempts to >> >> >>> >> >>> >invoke plugman.uninstall once per platform, but >> >> >>> >> >>>mobile-spec-dependencies >> >> >>> >> >>> >doesn't declare any platforms. >> >> >>> >> >>> > >> >> >>> >> >>> >plugman.uninstall seems to do two things, which I think >> >>should >> >> >>>be >> >> >>> >> >>> >separated: It removes the plugin from a specific >>platform, >> >>and >> >> >>>it >> >> >>> >> >>>removes >> >> >>> >> >>> >the plugin from the project itself. >> >> >>> >> >>> > >> >> >>> >> >>> >In the case of a dependency-only plugin, we only need to >>do >> >>the >> >> >>> >>second >> >> >>> >> >>> >task >> >> >>> >> >>> >(which currently doesn't get done). For a regular plugin >> >>which >> >> >>>is >> >> >>> >> >>> >installed >> >> >>> >> >>> >in multiple platforms, this also fails, since removing >>the >> >> >>>plugin >> >> >>> >>for >> >> >>> >> >>>the >> >> >>> >> >>> >first platform deletes the plugin source directory, and >>then >> >> >>> >>removal >> >> >>> >> >>>for >> >> >>> >> >>> >subsequent platforms fails with the error message >>"[Error: >> >> >>>Plugin >> >> >>> >> >>><plugin >> >> >>> >> >>> >id> not found. Already uninstalled?]" >> >> >>> >> >>> > >> >> >>> >> >>> >Can anyone explain the technical reasons behind this, or >> >> >>>should I >> >> >>> >>work >> >> >>> >> >>>on >> >> >>> >> >>> >separating those functions? >> >> >>> >> >>> >> >> >>> >> >>> >> >> >>> >> > >> >> >>> >> >> >> >>> >> >> >>> >> >> >> >> >> >> >> >> >>