(ios) fix: resolve correct path to app info plist when multiple plist files are present (#144).

When multiple plist files exists in a cordova-ios project (e.g. due to a plugin containing `<podspec>`), ConfigFile was updated under CB-5989 to select the app plist as the target for changes destined for *-Info.plist.
However, the change made under CB-5989 incorrectly constructed the path to the app plist by omitting the project name subdirectory from the path, causing the fix to fail to work.

This commit fixes this by correcting the constructed path to the app plist.
2 files changed
tree: 5471e7d2cf11aa75577f3d60bfd949fb19424709
  1. .github/
  2. spec/
  3. src/
  4. .asf.yaml
  5. .eslintignore
  6. .eslintrc.yml
  7. .gitignore
  8. .npmignore
  9. .ratignore
  10. CONTRIBUTING.md
  11. cordova-common.js
  12. LICENSE
  13. NOTICE
  14. package-lock.json
  15. package.json
  16. README.md
  17. RELEASENOTES.md
README.md

cordova-common

NPM

Node CI

Exposes shared functionality used by cordova-lib and Cordova platforms.

Exposed APIs

events

Represents special instance of NodeJS EventEmitter which is intended to be used to post events to cordova-lib and cordova-cli

Usage:

const { events } = require('cordova-common');
events.emit('warn', 'Some warning message')

Here are the following supported events by cordova-cli:

  • verbose
  • log
  • info
  • warn
  • error

CordovaError

An error class used by Cordova to throw cordova-specific errors. The CordovaError class is inherited from Error, so it is a valid instance of Error. (instanceof check succeeds).

Usage:

const { CordovaError } = require('cordova-common');
throw new CordovaError('Some error message', SOME_ERR_CODE);

See CordovaError for supported error codes.

ConfigParser

Exposes functionality to deal with cordova project config.xml files. For ConfigParser API reference check ConfigParser Readme.

Usage:

const { ConfigParser } = require('cordova-common');
const appConfig = new ConfigParser('path/to/cordova-app/config.xml');
console.log(`${appconfig.name()}:${appConfig.version()}`);

PluginInfoProvider and PluginInfo

PluginInfo is a wrapper for cordova plugins' plugin.xml files. This class may be instantiated directly or via PluginInfoProvider. The difference is that PluginInfoProvider caches PluginInfo instances based on plugin source directory.

Usage:

const { PluginInfo, PluginInfoProvider }  = require('cordova-common');

// The following instances are equal
const plugin1 = new PluginInfo('path/to/plugin_directory');
const plugin2 = new PluginInfoProvider().get('path/to/plugin_directory');

console.log(`The plugin ${plugin1.id} has version ${plugin1.version}`)

ActionStack

Utility module for dealing with sequential tasks. Provides a set of tasks that are needed to be done and reverts all tasks that are already completed if one of those tasks fail to complete. Used internally by cordova-lib and platform's plugin installation routines.

Usage:

const { ActionStack } = require('cordova-common');

const stack = new ActionStack();
const action1 = stack.createAction(task1, [<task parameters>], task1_reverter, [<reverter_parameters>]);
const action2 = stack.createAction(task2, [<task parameters>], task2_reverter, [<reverter_parameters>]);

stack.push(action1);
stack.push(action2);

stack.process()
    .then(() => {
        // all actions succeded
    })
    .catch(error => {
        // One of actions failed with error
    });

superspawn

Module for spawning child processes with some advanced logic.

Usage:

const { superspawn } = require('cordova-common');

superspawn.spawn('adb', ['devices'])
    .progress(data => {
        if (data.stderr) console.error(`"adb devices" raised an error: ${data.stderr}`);
    })
    .then(devices => {
        // Do something...
    });

xmlHelpers

A set of utility methods for dealing with XML files.

Usage:

const { xmlHelpers } = require('cordova-common');

const doc1 = xmlHelpers.parseElementtreeSync('some/xml/file');
const doc2 = xmlHelpers.parseElementtreeSync('another/xml/file');

xmlHelpers.mergeXml(doc1, doc2); // doc2 now contains all the nodes from doc1

Other APIs

The APIs listed below are also exposed but are intended to be only used internally by cordova plugin installation routines.

  • PlatformJson
  • ConfigChanges
  • ConfigKeeper
  • ConfigFile

Setup

  • Clone this repository onto your local machine

    git clone https://github.com/apache/cordova-common.git
    
  • Navigate to cordova-common directory, install dependencies and npm-link

    cd cordova-common && npm install && npm link
    
  • Navigate to cordova-lib directory and link cordova-common

    cd <cordova-lib directory> && npm link cordova-common && npm install