aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/protobuf/bundlemerge.proto
blob: 41a338a09367ac48a71449142a67de558078b22d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// Copyright 2015 The Bazel Authors. 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.
// Next Id: 17
message Control {
  // Paths to the plist files to merge into the final Plist.info file. These
  // can be binary, XML, or ASCII format.
  // This field is deprecated, but is supported for backwards compatibility.
  // If bundle_info_plist_file is not supplied, this key will be used instead.
  repeated string source_plist_file = 1;

  // The single info.plist file to be bundled into the archive. This plist will
  // not be modified by bundlemerge.
  // This field replaces source_plist_file.
  optional string bundle_info_plist_file = 16;

  // 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.
  // This field is deprecated, and will not be used if a bundle_info_plist_file
  // is specified.  For backwards compatibility, if a bundle_info_plist_file
  // is not specified, source_plist_file will be used instead and variable
  // substitutions will be applied.
  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;
}