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

platform add requires platforms and plugins dirs to exist

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Trivial
    • Resolution: Fixed
    • 3.4.0
    • 3.5.0
    • cordova-cli
    • None
    • 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

            purplecabbage Jesse MacFadyen
            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