aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/protobuf/bundlemerge.proto
blob: 18154a23bee40fc29525a7ae1a019d2a803ee785 (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
// 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;
}