// Copyright 2015 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto2"; package devtools.xcode; option java_outer_classname = "BundleMergeProtos"; option java_package = "com.google.devtools.build.xcode.bundlemerge.proto"; // Contains all the arguments necessary to drive the BundleMerge tool, // including the path to the output file and extra files to include in the // bundle. message Control { // Paths to the plist files to merge into the final Plist.info file. These // can be binary, XML, or ASCII format. repeated string source_plist_file = 1; // Path to the .ipa file to write. This is the final application bundle. Note // this is ignored for nested bundles. optional string out_file = 2; // Which devices the app targets, which corresponds to the UIDeviceFamily // setting. Should be one or more of the symbols in the // com.google.devtools.build.xcode.common.TargetDeviceFamily enum (e.g. // "IPAD", "IPHONE"). repeated string target_device_family = 3; // One of the symbols in the com.google.devtools.build.xcode.common.Platform // (e.g. "DEVICE", "SIMULATOR"). optional string platform = 4; // The version of the SDK used to build the app. optional string sdk_version = 5; // Earliest iOS version on which the app will run. optional string minimum_os_version = 6; // The directory inside which all files are placed in the final bundle. // For the top-most bundle, this is generally "Payload/{app_name}.app". If // this bundle is nested, then this bundle_root is relative to to the parent's // bundle_root. optional string bundle_root = 7; // All files to put in the bundle besides automatically-generated files such // as Info.plist and PkgInfo. This should include the application binary. repeated BundleFile bundle_file = 8; repeated string merge_without_name_prefix_zip = 9 [deprecated=true]; // Zip files to merge with the final zip. Note that bundle_root is ignored // when merging zips, so to place items in the bundle root, you should do one // of the following: // 1. make the merge_zips have entries that are named "{bundle_root}/foo" // rather than just "foo" // 2. set the root property on the MergeZip protobuf to {bundle_root} // Note that the paths of these zips are always relative to the zip file root // - they are not relative to the containing bundle. repeated MergeZip merge_zip = 10; // Variable substitutions to perform on property values in the merged // .plist file. repeated VariableSubstitution variable_substitution = 11; // Bundles that are nested within this one. bundle_root in these bundles is // relative to the containing bundle's bundle_root. repeated Control nested_bundle = 12; // Name of the executable for this bundle or unset if no such executable // exists. optional string executable_name = 13; // A reverse-DNS string identifier for this bundle. optional string primary_bundle_identifier = 14; // A fallback bundle identifier used when primary is not filled. optional string fallback_bundle_identifier = 15; } // Represents a zip file to merge with the final zip. message MergeZip { // The prefix to prepend to every entry name before putting it in the final // zip. For instance, "Payload/Foo.app/" (notice the final slash). optional string entry_name_prefix = 1 [default = ""]; // The path to the source file to merge. optional string source_path = 2; } message BundleFile { // The path of the file to put in the bundle. optional string source_file = 1; // The path of the file in the bundle, relative to the bundle root. optional string bundle_path = 2; // The external file attribute field in the central directory record in the // .zip file. If omitted, the ZipInputEntry.DEFAULT_EXTERNAL_FILE_ATTRIBUTE // constant is used. optional int32 external_file_attribute = 3; } message VariableSubstitution { // The name of the varaible to substitute. required string name = 1; // The substitution value. required string value = 2; }