[
https://issues.apache.org/jira/browse/CB-12844?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17115868#comment-17115868
]
Tonya Knight commented on CB-12844:
-----------------------------------
This is Terrible
> 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-node-xcode
> 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: Anis Kadri
> 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
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]