Nicholas Rawlings created CB-12844:
--------------------------------------
Summary: Escape backslashes when creating a
PBXShellScriptBuildPhase
Key: CB-12844
URL: https://issues.apache.org/jira/browse/CB-12844
Project: Apache Cordova
Issue Type: Bug
Components: cordova-ios, cordova-osx
Affects Versions: 7.0.0, 6.4.0, 6.5.0
Environment: MacOS 10.12.4
Xcode 8.3.2 (8E2002)
Cordova 6.5.0
node-xcode 0.9.0
Reporter: Nicholas Rawlings
Assignee: Tobias Bocanegra
Priority: Minor
Hooks can use the `node-xcode` package, which was contributed to the Cordova
project about a month ago, to modify an Xcode project. When using
`pbxProject.addBuildPhase()` to add a new "Run Script" phase, backslashes in
the passed script are not properly escaped. Unescaped backslashes can break
the expected behavior of the shell script and result in a malformed *.pbxproj
file.
The solution should be as simple as modifying the
`pbxShellScriptBuildPhaseObj()` function to replace unescaped backslashes with
escaped ones in the same way that double quote characters are handled:
```javascript
function pbxShellScriptBuildPhaseObj(obj, options, phaseName) {
obj.name = '"' + phaseName + '"';
obj.inputPaths = options.inputPaths || [];
obj.outputPaths = options.outputPaths || [];
obj.shellPath = options.shellPath;
obj.shellScript = '"' + options.shellScript.replace(/"/g,
'\\"').replace(/\\/g, '\\\\') + '"';
return obj;
}
```
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]