diff options
Diffstat (limited to 'src/objc_tools/plmerge/java/com/google/devtools/build/xcode')
-rw-r--r-- | src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java | 16 | ||||
-rw-r--r-- | src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java | 13 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java b/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java index c204e2f53d..8f9f558938 100644 --- a/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java +++ b/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java @@ -27,6 +27,7 @@ import java.io.InputStream; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; +import java.nio.file.Path; /** * Entry point for the {@code plmerge} tool, which merges the data from one or more plists into a @@ -75,7 +76,20 @@ public class PlMerge { // This prevents CFBundleIdentifiers being put into strings files. merging.setBundleIdentifier(primaryBundleId, fallbackBundleId); } - merging.writePlist(fileSystem.getPath(control.getOutFile())); + + Path outputPath = fileSystem.getPath(control.getOutFile()); + switch (control.getOutputFormat()) { + case BINARY: + merging.writePlist(outputPath); + break; + case XML: + merging.writeXmlPlist(outputPath); + break; + default: + throw new IllegalArgumentException(String.format( + "Unknown output format in the control file: %s", + control.getOutputFormat())); + } } private static void validateControl(Control control) { diff --git a/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java b/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java index 0463039fac..b292a65bd1 100644 --- a/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java +++ b/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java @@ -122,7 +122,7 @@ public class PlistMerging extends Value<PlistMerging> { } /** - * Writes the results of a merge operation to a plist file. + * Writes the results of a merge operation to a binary plist file. * @param plistPath the path of the plist to write in binary format */ public PlistMerging writePlist(Path plistPath) throws IOException { @@ -133,6 +133,17 @@ public class PlistMerging extends Value<PlistMerging> { } /** + * Writes the results of a merge operation to an XML plist file. + * @param plistPath the path of the plist to write in XML format + */ + public PlistMerging writeXmlPlist(Path plistPath) throws IOException { + try (OutputStream out = Files.newOutputStream(plistPath)) { + PropertyListParser.saveAsXML(merged, out); + } + return this; + } + + /** * Writes a PkgInfo file based on certain keys in the merged plist. * @param pkgInfoPath the path of the PkgInfo file to write. In many iOS apps, this file just * contains the raw string {@code APPL????}. |