Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-6705

platform add requires platforms and plugins dirs to exist

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Trivial
    • Resolution: Fixed
    • Affects Version/s: 3.4.0
    • Fix Version/s: 3.5.0
    • Component/s: cordova-cli
    • Labels:
      None
    • Environment:

      Ubuntu 12

      Description

      sebastien@sebastien-xps:stample-Phonegap (master *+)$ cordova platform add android
      Creating android project...
      Creating Cordova project for the Android platform:
      	Path: platforms/android
      	Package: co.stample
      	Name: stample-phonegap
      	Android target: android-19
      Copying template files...
      shell.js: internal error
      Error: ENOENT, no such file or directory 'platforms/android/assets'
          at Object.fs.mkdirSync (fs.js:642:18)
          at /home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/node_modules/shelljs/src/cp.js:173:14
          at Array.forEach (native)
          at Object._cp (/home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/node_modules/shelljs/src/cp.js:156:11)
          at Object.cp (/home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/node_modules/shelljs/src/common.js:172:23)
          at /home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/lib/create.js:166:19
          at setShellFatal (/home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/lib/create.js:45:5)
          at /home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/lib/create.js:164:9
          at _fulfilled (/home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/node_modules/q/q.js:798:54)
          at self.promiseDispatch.done (/home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/node_modules/q/q.js:827:30)
      Error: /home/sebastien/.cordova/lib/android/cordova/3.4.0/bin/create: Command failed with exit code 1
          at ChildProcess.whenDone (/home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/src/superspawn.js:126:23)
          at ChildProcess.EventEmitter.emit (events.js:98:17)
          at maybeClose (child_process.js:735:16)
          at Process.ChildProcess._handle.onexit (child_process.js:802:5)
      

      This seems to be caused because I choose to not version control the platforms and plugins folders.

      If I do mkdir platforms I get the following error

      sebastien@sebastien-xps:stample-Phonegap (master *+)$ mkdir platforms
      sebastien@sebastien-xps:stample-Phonegap (master *+)$ cordova platform add android
      Creating android project...
      Creating Cordova project for the Android platform:
      	Path: platforms/android
      	Package: co.stample
      	Name: stample-phonegap
      	Android target: android-19
      Copying template files...
      Running: android update project --subprojects --path "platforms/android" --target android-19 --library "CordovaLib"
      Resolved location of library project to: /home/sebastien/Desktop/stample-Phonegap/platforms/android/CordovaLib
      Updated and renamed default.properties to project.properties
      Updated local.properties
      No project name specified, using Activity name 'stamplephonegap'.
      If you wish to change it, edit the first line of build.xml.
      Added file platforms/android/build.xml
      Added file platforms/android/proguard-project.txt
      Updated project.properties
      Updated local.properties
      No project name specified, using project folder name 'CordovaLib'.
      If you wish to change it, edit the first line of build.xml.
      Added file platforms/android/CordovaLib/build.xml
      Added file platforms/android/CordovaLib/proguard-project.txt
      
      Project successfully created.
      Error: ENOENT, no such file or directory '/home/sebastien/Desktop/stample-Phonegap/plugins/android.json'
          at Object.fs.openSync (fs.js:427:18)
          at Object.fs.writeFileSync (fs.js:966:15)
          at Object.save_platform_json (/home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:435:8)
          at PlatformMunger_process [as process] (/home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:367:13)
          at Object.exports.process (/home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:78:12)
          at Object.handlePrepare (/home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/node_modules/plugman/src/prepare.js:73:20)
          at /home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/src/prepare.js:101:25
          at _fulfilled (/home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/node_modules/q/q.js:798:54)
          at self.promiseDispatch.done (/home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/node_modules/q/q.js:827:30)
          at Promise.promise.promiseDispatch (/home/sebastien/Desktop/devhome/install/node-v0.10.24-linux-x64/lib/node_modules/cordova/node_modules/q/q.js:760:13)
      

      The problem is solved by doing mkdir platforms and mkdir plugins:

      sebastien@sebastien-xps:stample-Phonegap (master *+)$ cordova platform add android
      Creating android project...
      Creating Cordova project for the Android platform:
      	Path: platforms/android
      	Package: co.stample
      	Name: stample-phonegap
      	Android target: android-19
      Copying template files...
      Running: android update project --subprojects --path "platforms/android" --target android-19 --library "CordovaLib"
      Resolved location of library project to: /home/sebastien/Desktop/stample-Phonegap/platforms/android/CordovaLib
      Updated and renamed default.properties to project.properties
      Updated local.properties
      No project name specified, using Activity name 'stamplephonegap'.
      If you wish to change it, edit the first line of build.xml.
      Added file platforms/android/build.xml
      Added file platforms/android/proguard-project.txt
      Updated project.properties
      Updated local.properties
      No project name specified, using project folder name 'CordovaLib'.
      If you wish to change it, edit the first line of build.xml.
      Added file platforms/android/CordovaLib/build.xml
      Added file platforms/android/CordovaLib/proguard-project.txt
      
      Project successfully created.
      

      This would be better if the CLI recreated these folders in case of unexistance, or at least having a better fail-fast error message like "the platforms folder is missing" or something

      This bothers me because I create a phonegap starter app, and it forces me to version control these 2 folders, and git does not allow version control of empty folders as far as I know so I have to put an empty file here just to avoid asking the checkouters to manually create the folders themselves

      Not a big deal though but it should be easy to fix

        Attachments

          Activity

            People

            • Assignee:
              purplecabbage Jesse MacFadyen
              Reporter:
              sebastienlorber Sebastien Lorber
            • Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 2h
                2h
                Remaining:
                Remaining Estimate - 2h
                2h
                Logged:
                Time Spent - Not Specified
                Not Specified