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]

Reply via email to