fastlane 2.82.0.beta.20180222010003 → 2.82.0.beta.20180223010003
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/fastlane/lib/assets/ActionDetails.md.erb +2 -3
- data/fastlane/lib/fastlane/actions/add_git_tag.rb +3 -1
- data/fastlane/lib/fastlane/actions/appetize.rb +1 -1
- data/fastlane/lib/fastlane/actions/backup_xcarchive.rb +4 -3
- data/fastlane/lib/fastlane/actions/commit_github_file.rb +1 -0
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +4 -0
- data/fastlane/lib/fastlane/actions/gradle.rb +1 -1
- data/fastlane/lib/fastlane/actions/hg_push.rb +1 -1
- data/fastlane/lib/fastlane/actions/import_from_git.rb +4 -4
- data/fastlane/lib/fastlane/actions/ipa.rb +1 -0
- data/fastlane/lib/fastlane/actions/nexus_upload.rb +1 -1
- data/fastlane/lib/fastlane/actions/push_git_tags.rb +1 -1
- data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +5 -3
- data/fastlane/lib/fastlane/actions/reset_git_repo.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +1 -1
- data/fastlane/lib/fastlane/documentation/actions_list.rb +1 -6
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +15 -0
- data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +14 -10
- data/gym/lib/gym/options.rb +1 -0
- data/match/lib/match/runner.rb +6 -6
- data/pem/lib/pem/options.rb +1 -1
- data/scan/lib/scan/options.rb +1 -0
- data/sigh/lib/assets/resign.sh +92 -29
- data/snapshot/lib/snapshot/options.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff02f04c2efc782d90b6082d827aa42b8779915c
|
4
|
+
data.tar.gz: 5c35f24eb249af77add3fa24d19c1f69411f3626
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46efa7c14c4881c6d6d426295a48407ac3dd5ecfd9f56114d6191e5311cfeda40b9db46603464b0cf98ed1370991e1fcb4e46b21adb0e843007916328576ef03
|
7
|
+
data.tar.gz: 83647d742c6f92503ff756de030b72fedc698d40ba4d2dc190579e1e0184ff3c976366456099cb597214b26f7d5944ff986a8f158c5494911edfdf265751de2b
|
@@ -44,10 +44,9 @@ Key | Description | Default
|
|
44
44
|
<%- (action.available_options || []).each do |config_item| -%>
|
45
45
|
<%- next unless config_item.kind_of?(FastlaneCore::ConfigItem) -%>
|
46
46
|
<%- next if config_item.description.to_s.length == 0 -%>
|
47
|
-
`<%= config_item.key %>` | <%= config_item.description %> | <%= config_item.
|
47
|
+
`<%= config_item.key %>` | <%= config_item.description %> | <%= config_item.doc_default_value %>
|
48
48
|
<%- end %>
|
49
|
-
|
50
|
-
_* = this default value is dependent on the user's system_
|
49
|
+
<em id="dynamic">* = default value is dependent on the user's system</em>
|
51
50
|
<% end %><%# End of action.available_options... %>
|
52
51
|
|
53
52
|
<hr />
|
@@ -46,7 +46,7 @@ module Fastlane
|
|
46
46
|
optional: true),
|
47
47
|
FastlaneCore::ConfigItem.new(key: :grouping,
|
48
48
|
env_name: "FL_GIT_TAG_GROUPING",
|
49
|
-
description: "Is used to keep your tags organised under one 'folder'
|
49
|
+
description: "Is used to keep your tags organised under one 'folder'",
|
50
50
|
default_value: 'builds'),
|
51
51
|
FastlaneCore::ConfigItem.new(key: :prefix,
|
52
52
|
env_name: "FL_GIT_TAG_PREFIX",
|
@@ -65,10 +65,12 @@ module Fastlane
|
|
65
65
|
FastlaneCore::ConfigItem.new(key: :message,
|
66
66
|
env_name: "FL_GIT_TAG_MESSAGE",
|
67
67
|
description: "The tag message. Defaults to the tag's name",
|
68
|
+
default_value_dynamic: true,
|
68
69
|
optional: true),
|
69
70
|
FastlaneCore::ConfigItem.new(key: :commit,
|
70
71
|
env_name: "FL_GIT_TAG_COMMIT",
|
71
72
|
description: "The commit or object where the tag will be set. Defaults to the current HEAD",
|
73
|
+
default_value_dynamic: true,
|
72
74
|
optional: true),
|
73
75
|
FastlaneCore::ConfigItem.new(key: :force,
|
74
76
|
env_name: "FL_GIT_TAG_FORCE",
|
@@ -115,7 +115,7 @@ module Fastlane
|
|
115
115
|
optional: true),
|
116
116
|
FastlaneCore::ConfigItem.new(key: :platform,
|
117
117
|
env_name: "APPETIZE_PLATFORM",
|
118
|
-
description: "Platform. Either `ios` or `android
|
118
|
+
description: "Platform. Either `ios` or `android`",
|
119
119
|
is_string: true,
|
120
120
|
default_value: 'ios'),
|
121
121
|
FastlaneCore::ConfigItem.new(key: :path,
|
@@ -82,17 +82,18 @@ module Fastlane
|
|
82
82
|
UI.user_error!("Couldn't find the destination folder at '#{value}'") if !Helper.test? && !File.directory?(value) && !File.exist?(value)
|
83
83
|
end),
|
84
84
|
FastlaneCore::ConfigItem.new(key: :zip,
|
85
|
-
description: 'Enable compression of the archive
|
85
|
+
description: 'Enable compression of the archive',
|
86
86
|
is_string: false,
|
87
87
|
default_value: true,
|
88
88
|
optional: true,
|
89
89
|
env_name: 'BACKUP_XCARCHIVE_ZIP'),
|
90
90
|
FastlaneCore::ConfigItem.new(key: :zip_filename,
|
91
91
|
description: 'Filename of the compressed archive. Will be appended by `.xcarchive.zip`. Default value is the output xcarchive filename',
|
92
|
+
default_value_dynamic: true,
|
92
93
|
optional: true,
|
93
94
|
env_name: 'BACKUP_XCARCHIVE_ZIP_FILENAME'),
|
94
95
|
FastlaneCore::ConfigItem.new(key: :versioned,
|
95
|
-
description: 'Create a versioned (date and app version) subfolder where to put the archive
|
96
|
+
description: 'Create a versioned (date and app version) subfolder where to put the archive',
|
96
97
|
is_string: false,
|
97
98
|
default_value: true,
|
98
99
|
optional: true,
|
@@ -120,7 +121,7 @@ module Fastlane
|
|
120
121
|
xcarchive: "/path/to/file.xcarchive", # Optional if you use the `xcodebuild` action
|
121
122
|
destination: "/somewhere/else/file.xcarchive", # Where the backup should be created
|
122
123
|
zip: false, # Enable compression of the archive. Defaults to `true`.
|
123
|
-
versioned: true # Create a versioned (date and app version) subfolder where to put the archive
|
124
|
+
versioned: true # Create a versioned (date and app version) subfolder where to put the archive
|
124
125
|
)'
|
125
126
|
]
|
126
127
|
end
|
@@ -126,6 +126,7 @@ module Fastlane
|
|
126
126
|
FastlaneCore::ConfigItem.new(key: :message,
|
127
127
|
env_name: "FL_COMMIT_GITHUB_FILE_MESSAGE",
|
128
128
|
description: "The commit message. Defaults to the file name",
|
129
|
+
default_value_dynamic: true,
|
129
130
|
optional: true),
|
130
131
|
FastlaneCore::ConfigItem.new(key: :secure,
|
131
132
|
env_name: "FL_COMMIT_GITHUB_FILE_SECURE",
|
@@ -221,6 +221,10 @@ fastlane snapshot reset_simulators
|
|
221
221
|
|
222
222
|
You can use the environment variable `SNAPSHOT_FORCE_DELETE` to stop asking for confirmation before deleting.
|
223
223
|
|
224
|
+
```no-highlight
|
225
|
+
SNAPSHOT_FORCE_DELETE=1 fastlane snapshot reset_simulators
|
226
|
+
```
|
227
|
+
|
224
228
|
## Update snapshot helpers
|
225
229
|
|
226
230
|
Some updates require the helper files to be updated. _snapshot_ will automatically warn you and tell you how to update.
|
@@ -113,7 +113,7 @@ module Fastlane
|
|
113
113
|
is_string: true),
|
114
114
|
FastlaneCore::ConfigItem.new(key: :project_dir,
|
115
115
|
env_name: 'FL_GRADLE_PROJECT_DIR',
|
116
|
-
description: 'The root directory of the gradle project
|
116
|
+
description: 'The root directory of the gradle project',
|
117
117
|
default_value: '.',
|
118
118
|
is_string: true),
|
119
119
|
FastlaneCore::ConfigItem.new(key: :gradle_path,
|
@@ -26,7 +26,7 @@ module Fastlane
|
|
26
26
|
[
|
27
27
|
FastlaneCore::ConfigItem.new(key: :force,
|
28
28
|
env_name: "FL_HG_PUSH_FORCE",
|
29
|
-
description: "Force push to remote
|
29
|
+
description: "Force push to remote",
|
30
30
|
is_string: false,
|
31
31
|
default_value: false),
|
32
32
|
FastlaneCore::ConfigItem.new(key: :destination,
|
@@ -52,14 +52,14 @@ module Fastlane
|
|
52
52
|
[
|
53
53
|
'import_from_git(
|
54
54
|
url: "git@github.com:fastlane/fastlane.git", # The URL of the repository to import the Fastfile from.
|
55
|
-
branch: "HEAD", # The branch to checkout on the repository
|
56
|
-
path: "fastlane/Fastfile" # The path of the Fastfile in the repository
|
55
|
+
branch: "HEAD", # The branch to checkout on the repository
|
56
|
+
path: "fastlane/Fastfile", # The path of the Fastfile in the repository
|
57
57
|
version: "~> 1.0.0" # The version to checkout on the repository. Optimistic match operator can be used to select the latest version within constraints.
|
58
58
|
)',
|
59
59
|
'import_from_git(
|
60
60
|
url: "git@github.com:fastlane/fastlane.git", # The URL of the repository to import the Fastfile from.
|
61
|
-
branch: "HEAD", # The branch to checkout on the repository
|
62
|
-
path: "fastlane/Fastfile" # The path of the Fastfile in the repository
|
61
|
+
branch: "HEAD", # The branch to checkout on the repository
|
62
|
+
path: "fastlane/Fastfile", # The path of the Fastfile in the repository
|
63
63
|
version: [">= 1.1.0", "< 2.0.0"] # The version to checkout on the repository. Multiple conditions can be used to select the latest version within constraints.
|
64
64
|
)'
|
65
65
|
]
|
@@ -163,6 +163,7 @@ module Fastlane
|
|
163
163
|
FastlaneCore::ConfigItem.new(key: :destination,
|
164
164
|
env_name: "IPA_DESTINATION",
|
165
165
|
description: "Build destination. Defaults to current directory",
|
166
|
+
default_value_dynamic: true,
|
166
167
|
optional: true),
|
167
168
|
FastlaneCore::ConfigItem.new(key: :embed,
|
168
169
|
env_name: "IPA_EMBED",
|
@@ -107,7 +107,7 @@ module Fastlane
|
|
107
107
|
optional: false),
|
108
108
|
FastlaneCore::ConfigItem.new(key: :mount_path,
|
109
109
|
env_name: "FL_NEXUS_MOUNT_PATH",
|
110
|
-
description: "Nexus mount path
|
110
|
+
description: "Nexus mount path",
|
111
111
|
default_value: "/nexus",
|
112
112
|
optional: true),
|
113
113
|
FastlaneCore::ConfigItem.new(key: :username,
|
@@ -29,7 +29,7 @@ module Fastlane
|
|
29
29
|
[
|
30
30
|
FastlaneCore::ConfigItem.new(key: :force,
|
31
31
|
env_name: "FL_PUSH_GIT_FORCE",
|
32
|
-
description: "Force push to remote
|
32
|
+
description: "Force push to remote",
|
33
33
|
is_string: false,
|
34
34
|
default_value: false,
|
35
35
|
optional: true),
|
@@ -40,24 +40,26 @@ module Fastlane
|
|
40
40
|
FastlaneCore::ConfigItem.new(key: :local_branch,
|
41
41
|
env_name: "FL_GIT_PUSH_LOCAL_BRANCH",
|
42
42
|
description: "The local branch to push from. Defaults to the current branch",
|
43
|
+
default_value_dynamic: true,
|
43
44
|
optional: true),
|
44
45
|
FastlaneCore::ConfigItem.new(key: :remote_branch,
|
45
46
|
env_name: "FL_GIT_PUSH_REMOTE_BRANCH",
|
46
47
|
description: "The remote branch to push to. Defaults to the local branch",
|
48
|
+
default_value_dynamic: true,
|
47
49
|
optional: true),
|
48
50
|
FastlaneCore::ConfigItem.new(key: :force,
|
49
51
|
env_name: "FL_PUSH_GIT_FORCE",
|
50
|
-
description: "Force push to remote
|
52
|
+
description: "Force push to remote",
|
51
53
|
is_string: false,
|
52
54
|
default_value: false),
|
53
55
|
FastlaneCore::ConfigItem.new(key: :tags,
|
54
56
|
env_name: "FL_PUSH_GIT_TAGS",
|
55
|
-
description: "Whether tags are pushed to remote
|
57
|
+
description: "Whether tags are pushed to remote",
|
56
58
|
is_string: false,
|
57
59
|
default_value: true),
|
58
60
|
FastlaneCore::ConfigItem.new(key: :remote,
|
59
61
|
env_name: "FL_GIT_PUSH_REMOTE",
|
60
|
-
description: "The remote to push to
|
62
|
+
description: "The remote to push to",
|
61
63
|
default_value: 'origin')
|
62
64
|
]
|
63
65
|
end
|
@@ -88,7 +88,7 @@ module Fastlane
|
|
88
88
|
default_value: false),
|
89
89
|
FastlaneCore::ConfigItem.new(key: :skip_clean,
|
90
90
|
env_name: "FL_RESET_GIT_SKIP_CLEAN",
|
91
|
-
description: "Skip 'git clean' to avoid removing untracked files like `.env
|
91
|
+
description: "Skip 'git clean' to avoid removing untracked files like `.env`",
|
92
92
|
is_string: false,
|
93
93
|
default_value: false),
|
94
94
|
FastlaneCore::ConfigItem.new(key: :disregard_gitignore,
|
@@ -134,7 +134,7 @@ module Fastlane
|
|
134
134
|
default_value: false),
|
135
135
|
FastlaneCore::ConfigItem.new(key: :no_update,
|
136
136
|
env_name: "FL_NO_UPDATE",
|
137
|
-
description: "Don't update during this run.
|
137
|
+
description: "Don't update during this run. This is used internally",
|
138
138
|
is_string: false,
|
139
139
|
default_value: false),
|
140
140
|
FastlaneCore::ConfigItem.new(key: :tools,
|
@@ -135,7 +135,6 @@ module Fastlane
|
|
135
135
|
else
|
136
136
|
puts("No available options".yellow)
|
137
137
|
end
|
138
|
-
puts("- = this parameter doesn't have a default value")
|
139
138
|
puts("* = this default value is dependent on the user's system")
|
140
139
|
puts("")
|
141
140
|
end
|
@@ -192,11 +191,7 @@ module Fastlane
|
|
192
191
|
if options.kind_of?(Array)
|
193
192
|
options.each do |current|
|
194
193
|
if current.kind_of?(FastlaneCore::ConfigItem)
|
195
|
-
|
196
|
-
# rubocop:disable Metrics/BlockNesting, Style/NestedTernaryOperator
|
197
|
-
default = current.default_value_dynamic ? "#{current_default} *".strip : (current_default.nil? ? "-" : current_default)
|
198
|
-
# rubocop:enable Metrics/BlockNesting, Style/NestedTernaryOperator
|
199
|
-
rows << [current.key.to_s.yellow, current.description, current.env_name, default]
|
194
|
+
rows << [current.key.to_s.yellow, current.description, current.env_name, current.help_default_value]
|
200
195
|
elsif current.kind_of?(Array)
|
201
196
|
# Legacy actions that don't use the new config manager
|
202
197
|
UI.user_error!("Invalid number of elements in this row: #{current}. Must be 2 or 3") unless [2, 3].include?(current.count)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.82.0.beta.
|
2
|
+
VERSION = '2.82.0.beta.20180223010003'.freeze
|
3
3
|
DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
|
4
4
|
MINIMUM_XCODE_RELEASE = "7.0".freeze
|
5
5
|
RUBOCOP_REQUIREMENT = '0.49.1'.freeze
|
@@ -277,5 +277,20 @@ module FastlaneCore
|
|
277
277
|
def to_s
|
278
278
|
[@key, @description].join(": ")
|
279
279
|
end
|
280
|
+
|
281
|
+
def doc_default_value
|
282
|
+
return "[*](#dynamic)" if self.default_value_dynamic
|
283
|
+
return "" if self.default_value.nil?
|
284
|
+
return "`''`" if self.default_value.instance_of?(String) && self.default_value.empty?
|
285
|
+
|
286
|
+
"`#{self.default_value}`"
|
287
|
+
end
|
288
|
+
|
289
|
+
def help_default_value
|
290
|
+
return "#{self.default_value} *".strip if self.default_value_dynamic
|
291
|
+
return "" if self.default_value.nil?
|
292
|
+
|
293
|
+
self.default_value
|
294
|
+
end
|
280
295
|
end
|
281
296
|
end
|
@@ -23,10 +23,10 @@ module FastlaneCore
|
|
23
23
|
# "TimeToLive"=>185,
|
24
24
|
# "UUID"=>"1752e382-53bd-4910-a393-aaa7de0005ad",
|
25
25
|
# "Version"=>1}
|
26
|
-
def parse(path)
|
26
|
+
def parse(path, keychain_path = nil)
|
27
27
|
require 'plist'
|
28
28
|
|
29
|
-
plist = Plist.parse_xml(decode(path))
|
29
|
+
plist = Plist.parse_xml(decode(path, keychain_path))
|
30
30
|
if (plist || []).count > 5
|
31
31
|
plist
|
32
32
|
else
|
@@ -35,13 +35,13 @@ module FastlaneCore
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# @return [String] The UUID of the given provisioning profile
|
38
|
-
def uuid(path)
|
39
|
-
parse(path).fetch("UUID")
|
38
|
+
def uuid(path, keychain_path = nil)
|
39
|
+
parse(path, keychain_path).fetch("UUID")
|
40
40
|
end
|
41
41
|
|
42
42
|
# @return [String] The Name of the given provisioning profile
|
43
|
-
def name(path)
|
44
|
-
parse(path).fetch("Name")
|
43
|
+
def name(path, keychain_path = nil)
|
44
|
+
parse(path, keychain_path).fetch("Name")
|
45
45
|
end
|
46
46
|
|
47
47
|
def profiles_path
|
@@ -55,9 +55,9 @@ module FastlaneCore
|
|
55
55
|
end
|
56
56
|
|
57
57
|
# Installs a provisioning profile for Xcode to use
|
58
|
-
def install(path)
|
58
|
+
def install(path, keychain_path = nil)
|
59
59
|
UI.message("Installing provisioning profile...")
|
60
|
-
profile_filename = uuid(path) + ".mobileprovision"
|
60
|
+
profile_filename = uuid(path, keychain_path) + ".mobileprovision"
|
61
61
|
destination = File.join(profiles_path, profile_filename)
|
62
62
|
|
63
63
|
if path != destination
|
@@ -73,13 +73,17 @@ module FastlaneCore
|
|
73
73
|
|
74
74
|
private
|
75
75
|
|
76
|
-
def decode(path)
|
76
|
+
def decode(path, keychain_path = nil)
|
77
77
|
require 'tmpdir'
|
78
78
|
Dir.mktmpdir('fastlane') do |dir|
|
79
79
|
err = "#{dir}/cms.err"
|
80
80
|
# we want to prevent the error output to mix up with the standard output because of
|
81
81
|
# /dev/null: https://github.com/fastlane/fastlane/issues/6387
|
82
|
-
|
82
|
+
if keychain_path.nil?
|
83
|
+
decoded = `security cms -D -i "#{path}" 2> #{err}`
|
84
|
+
else
|
85
|
+
decoded = `security cms -D -i "#{path}" -k "#{keychain_path.shellescape}" 2> #{err}`
|
86
|
+
end
|
83
87
|
UI.error("Failure to decode #{path}. Exit: #{$?.exitstatus}: #{File.read(err)}") if $?.exitstatus != 0
|
84
88
|
decoded
|
85
89
|
end
|
data/gym/lib/gym/options.rb
CHANGED
@@ -67,6 +67,7 @@ module Gym
|
|
67
67
|
short_option: "-q",
|
68
68
|
env_name: "GYM_CONFIGURATION",
|
69
69
|
description: "The configuration to use when building the app. Defaults to 'Release'",
|
70
|
+
default_value_dynamic: true,
|
70
71
|
optional: true),
|
71
72
|
FastlaneCore::ConfigItem.new(key: :silent,
|
72
73
|
short_option: "-a",
|
data/match/lib/match/runner.rb
CHANGED
@@ -135,13 +135,14 @@ module Match
|
|
135
135
|
profile_name = names.join("_").gsub("*", '\*') # this is important, as it shouldn't be a wildcard
|
136
136
|
base_dir = File.join(params[:workspace], "profiles", prov_type.to_s)
|
137
137
|
profiles = Dir[File.join(base_dir, "#{profile_name}.mobileprovision")]
|
138
|
+
keychain_path = FastlaneCore::Helper.keychain_path(params[:keychain_name]) unless params[:keychain_name].nil?
|
138
139
|
|
139
140
|
# Install the provisioning profiles
|
140
141
|
profile = profiles.last
|
141
142
|
|
142
143
|
if params[:force_for_new_devices] && !params[:readonly]
|
143
144
|
if prov_type != :appstore
|
144
|
-
params[:force] = device_count_different?(profile: profile) unless params[:force]
|
145
|
+
params[:force] = device_count_different?(profile: profile, keychain_path: keychain_path) unless params[:force]
|
145
146
|
else
|
146
147
|
# App Store provisioning profiles don't contain device identifiers and
|
147
148
|
# thus shouldn't be renewed if the device count has changed.
|
@@ -167,9 +168,8 @@ module Match
|
|
167
168
|
self.files_to_commmit << profile
|
168
169
|
end
|
169
170
|
|
170
|
-
installed_profile = FastlaneCore::ProvisioningProfile.install(profile)
|
171
|
-
|
172
|
-
parsed = FastlaneCore::ProvisioningProfile.parse(profile)
|
171
|
+
installed_profile = FastlaneCore::ProvisioningProfile.install(profile, keychain_path)
|
172
|
+
parsed = FastlaneCore::ProvisioningProfile.parse(profile, keychain_path)
|
173
173
|
uuid = parsed["UUID"]
|
174
174
|
|
175
175
|
if spaceship && !spaceship.profile_exists(username: params[:username], uuid: uuid)
|
@@ -204,9 +204,9 @@ module Match
|
|
204
204
|
return uuid
|
205
205
|
end
|
206
206
|
|
207
|
-
def device_count_different?(profile: nil)
|
207
|
+
def device_count_different?(profile: nil, keychain_path: nil)
|
208
208
|
if profile
|
209
|
-
parsed = FastlaneCore::ProvisioningProfile.parse(profile)
|
209
|
+
parsed = FastlaneCore::ProvisioningProfile.parse(profile, keychain_path)
|
210
210
|
uuid = parsed["UUID"]
|
211
211
|
portal_profile = Spaceship.provisioning_profile.all.detect { |i| i.uuid == uuid }
|
212
212
|
|
data/pem/lib/pem/options.rb
CHANGED
@@ -22,7 +22,7 @@ module PEM
|
|
22
22
|
default_value: true),
|
23
23
|
FastlaneCore::ConfigItem.new(key: :active_days_limit,
|
24
24
|
env_name: "PEM_ACTIVE_DAYS_LIMIT",
|
25
|
-
description: "If the current certificate is active for less than this number of days, generate a new one
|
25
|
+
description: "If the current certificate is active for less than this number of days, generate a new one",
|
26
26
|
default_value: 30,
|
27
27
|
is_string: false,
|
28
28
|
type: Integer,
|
data/scan/lib/scan/options.rb
CHANGED
@@ -196,6 +196,7 @@ module Scan
|
|
196
196
|
short_option: "-q",
|
197
197
|
env_name: "SCAN_CONFIGURATION",
|
198
198
|
description: "The configuration to use when building the app. Defaults to 'Release'",
|
199
|
+
default_value_dynamic: true,
|
199
200
|
optional: true),
|
200
201
|
FastlaneCore::ConfigItem.new(key: :destination,
|
201
202
|
short_option: "-d",
|
data/sigh/lib/assets/resign.sh
CHANGED
@@ -638,6 +638,71 @@ function resign {
|
|
638
638
|
# Start with using what comes in provisioning profile entitlements before patching
|
639
639
|
cp -f "$PROFILE_ENTITLEMENTS" "$PATCHED_ENTITLEMENTS"
|
640
640
|
|
641
|
+
log "Removing blacklisted keys from patched profile"
|
642
|
+
# See https://github.com/facebook/buck/issues/798 and https://github.com/facebook/buck/pull/802/files
|
643
|
+
|
644
|
+
# Update in https://github.com/facebook/buck/commit/99c0fbc3ab5ecf04d186913374f660683deccdef
|
645
|
+
# Update in https://github.com/facebook/buck/commit/36db188da9f6acbb9df419dc1904315ab00c4e19
|
646
|
+
|
647
|
+
# Buck changes referenced above are not self-explanatory and do not seem exhaustive or up-to-date
|
648
|
+
# Comments below explain the rules applied to each key in order to make realignment with future Xcode export logic easier
|
649
|
+
BLACKLISTED_KEYS=(\
|
650
|
+
# PP list identifiers inconsistent with app-defined ones and this key does not seem to appear in IPA entitlements, so ignore it
|
651
|
+
"com.apple.developer.icloud-container-development-container-identifiers" \
|
652
|
+
# This key has an invalid generic value in PP (actual value is set by Xcode during export), see dedicated processing a few blocks below
|
653
|
+
"com.apple.developer.icloud-container-environment" \
|
654
|
+
# PP list identifiers inconsistent with app-defined ones, must use App entitlements value
|
655
|
+
"com.apple.developer.icloud-container-identifiers" \
|
656
|
+
# PP enable all available services and not app-defined ones, must use App entitlements value
|
657
|
+
"com.apple.developer.icloud-services" \
|
658
|
+
# Was already blacklisted in previous version, but has someone ever seen this key in a PP?
|
659
|
+
"com.apple.developer.restricted-resource-mode" \
|
660
|
+
# If actually used by the App, this value will be set in its entitlements
|
661
|
+
"com.apple.developer.nfc.readersession.formats" \
|
662
|
+
# PP list a single TeamID.* identifier and not app-defined ones, must use App entitlements value
|
663
|
+
"com.apple.developer.pass-type-identifiers" \
|
664
|
+
# If actually used by the App, this value will be set in its entitlements
|
665
|
+
"com.apple.developer.siri" \
|
666
|
+
# PP list identifiers inconsistent with app-defined ones, must use App entitlements value
|
667
|
+
"com.apple.developer.ubiquity-container-identifiers" \
|
668
|
+
# PP define a generic TeamID.* identifier and not the app-defined one, must use App entitlements value
|
669
|
+
"com.apple.developer.ubiquity-kvstore-identifier" \
|
670
|
+
# If actually used by the App, this value will be set in its entitlements
|
671
|
+
"inter-app-audio" \
|
672
|
+
# PP define a generic TeamID.* identifier and not the app-defined one, must use App entitlements value
|
673
|
+
"keychain-access-groups" \
|
674
|
+
# If actually used by the App, this value will be set in its entitlements
|
675
|
+
"com.apple.developer.homekit" \
|
676
|
+
# If actually used by the App, this value will be set in its entitlements
|
677
|
+
"com.apple.developer.healthkit" \
|
678
|
+
# PP list identifiers inconsistent with app-defined ones, must use App entitlements value
|
679
|
+
"com.apple.developer.in-app-payments" \
|
680
|
+
# If actually used by the App, this value will be set in its entitlements
|
681
|
+
"com.apple.developer.networking.vpn.api" \
|
682
|
+
# If actually used by the App, this value will be set in its entitlements
|
683
|
+
"com.apple.developer.networking.HotspotConfiguration" \
|
684
|
+
# PP list all available extensions and not app-defined ones, must use App entitlements value
|
685
|
+
"com.apple.developer.networking.networkextension" \
|
686
|
+
# If actually used by the App, this value will be set in its entitlements
|
687
|
+
"com.apple.developer.networking.multipath" \
|
688
|
+
# PP enable all domains via a non-AppStore-compliant '*' value, must use App entitlements value
|
689
|
+
"com.apple.developer.associated-domains" \
|
690
|
+
# If actually used by the App, this value will be set in its entitlements
|
691
|
+
"com.apple.developer.default-data-protection" \
|
692
|
+
# PP seem to list the same groups as the App, but use App entitlements value to be sure
|
693
|
+
"com.apple.security.application-groups" \
|
694
|
+
# Was already blacklisted in previous version, seems to be an artifact from an old Xcode release
|
695
|
+
"com.apple.developer.maps" \
|
696
|
+
# If actually used by the App, this value will be set in its entitlements
|
697
|
+
"com.apple.external-accessory.wireless-configuration"
|
698
|
+
)
|
699
|
+
|
700
|
+
# Blacklisted keys must not be included into new profile, so remove them from patched profile
|
701
|
+
for KEY in "${BLACKLISTED_KEYS[@]}"; do
|
702
|
+
log "Removing blacklisted key: $KEY"
|
703
|
+
PlistBuddy -c "Delete $KEY" "$PATCHED_ENTITLEMENTS" 2>/dev/null
|
704
|
+
done
|
705
|
+
|
641
706
|
# Get the old and new app identifier (prefix)
|
642
707
|
APP_ID_KEY="application-identifier"
|
643
708
|
# Extract just the identifier from the value
|
@@ -664,13 +729,22 @@ function resign {
|
|
664
729
|
# There can be only one ID_TYPE specified
|
665
730
|
# If entitlements use more than one ID type for single entitlement, then this way of resigning will not work
|
666
731
|
# instead an entitlements file must be provided explicitly
|
667
|
-
ENTITLEMENTS_TRANSFER_RULES=(
|
732
|
+
ENTITLEMENTS_TRANSFER_RULES=(\
|
733
|
+
"com.apple.developer.associated-domains" \
|
734
|
+
"com.apple.developer.default-data-protection" \
|
668
735
|
"com.apple.developer.healthkit" \
|
669
736
|
"com.apple.developer.homekit" \
|
737
|
+
"com.apple.developer.icloud-container-environment" \
|
670
738
|
"com.apple.developer.icloud-container-identifiers" \
|
671
739
|
"com.apple.developer.icloud-services" \
|
672
740
|
"com.apple.developer.in-app-payments" \
|
741
|
+
"com.apple.developer.networking.HotspotConfiguration" \
|
742
|
+
"com.apple.developer.networking.multipath" \
|
743
|
+
"com.apple.developer.networking.networkextension" \
|
673
744
|
"com.apple.developer.networking.vpn.api" \
|
745
|
+
"com.apple.developer.nfc.readersession.formats" \
|
746
|
+
"com.apple.developer.pass-type-identifiers|TEAM_ID" \
|
747
|
+
"com.apple.developer.siri" \
|
674
748
|
"com.apple.developer.ubiquity-container-identifiers" \
|
675
749
|
"com.apple.developer.ubiquity-kvstore-identifier|TEAM_ID" \
|
676
750
|
"com.apple.external-accessory.wireless-configuration" \
|
@@ -691,6 +765,22 @@ function resign {
|
|
691
765
|
continue
|
692
766
|
fi
|
693
767
|
|
768
|
+
if [[ "$KEY" == "com.apple.developer.icloud-container-environment" ]]; then
|
769
|
+
# Add specific iCloud Environment key to patched entitlements
|
770
|
+
# This value is set by Xcode during export (manually selected for Development and AdHoc, automatically set to Production for Store)
|
771
|
+
# Would need an additional dedicated option to specify the iCloud environment to be used (Development or Production)
|
772
|
+
# For now, we assume Production is to be used when signing with a Distribution certificate, Development if not
|
773
|
+
if [[ "$CERTIFICATE" =~ "Distribution:" ]]; then
|
774
|
+
ICLOUD_ENV="Production"
|
775
|
+
else
|
776
|
+
ICLOUD_ENV="Development"
|
777
|
+
fi
|
778
|
+
log "Overriding value for $KEY"
|
779
|
+
log "Old value: $ENTITLEMENTS_VALUE"
|
780
|
+
log "New value: $ICLOUD_ENV"
|
781
|
+
ENTITLEMENTS_VALUE="$ICLOUD_ENV"
|
782
|
+
fi
|
783
|
+
|
694
784
|
log "App entitlements value for key '$KEY':"
|
695
785
|
log "$ENTITLEMENTS_VALUE"
|
696
786
|
|
@@ -711,7 +801,7 @@ function resign {
|
|
711
801
|
log "Replacing old app identifier prefix '$OLD_APP_ID' with new value '$NEW_APP_ID'"
|
712
802
|
sed -i .bak "s/$OLD_APP_ID/$NEW_APP_ID/g" "$PATCHED_ENTITLEMENTS"
|
713
803
|
elif [[ "$ID_TYPE" == "TEAM_ID" ]]; then
|
714
|
-
# Replace
|
804
|
+
# Replace old team identifier with new value
|
715
805
|
log "Replacing old team ID '$OLD_TEAM_ID' with new team ID: '$NEW_TEAM_ID'"
|
716
806
|
sed -i .bak "s/$OLD_TEAM_ID/$NEW_TEAM_ID/g" "$PATCHED_ENTITLEMENTS"
|
717
807
|
else
|
@@ -726,33 +816,6 @@ function resign {
|
|
726
816
|
log "Replacing old bundle ID '$OLD_BUNDLE_ID' with new bundle ID '$NEW_BUNDLE_ID' in patched entitlements"
|
727
817
|
sed -i .bak "s/$OLD_BUNDLE_ID/$NEW_BUNDLE_ID/g" "$PATCHED_ENTITLEMENTS"
|
728
818
|
|
729
|
-
log "Removing blacklisted keys from patched profile"
|
730
|
-
# See https://github.com/facebook/buck/issues/798 and https://github.com/facebook/buck/pull/802/files
|
731
|
-
|
732
|
-
# Update in https://github.com/facebook/buck/commit/99c0fbc3ab5ecf04d186913374f660683deccdef
|
733
|
-
# Update in https://github.com/facebook/buck/commit/36db188da9f6acbb9df419dc1904315ab00c4e19
|
734
|
-
BLACKLISTED_KEYS=(\
|
735
|
-
"com.apple.developer.icloud-container-development-container-identifiers" \
|
736
|
-
"com.apple.developer.icloud-container-environment" \
|
737
|
-
"com.apple.developer.icloud-container-identifiers" \
|
738
|
-
"com.apple.developer.icloud-services" \
|
739
|
-
"com.apple.developer.restricted-resource-mode" \
|
740
|
-
"com.apple.developer.ubiquity-container-identifiers" \
|
741
|
-
"com.apple.developer.ubiquity-kvstore-identifier" \
|
742
|
-
"inter-app-audio" \
|
743
|
-
"com.apple.developer.homekit" \
|
744
|
-
"com.apple.developer.healthkit" \
|
745
|
-
"com.apple.developer.in-app-payments" \
|
746
|
-
"com.apple.developer.maps" \
|
747
|
-
"com.apple.external-accessory.wireless-configuration"
|
748
|
-
)
|
749
|
-
|
750
|
-
# Blacklisted keys must not be included into new profile, so remove them from patched profile
|
751
|
-
for KEY in "${BLACKLISTED_KEYS[@]}"; do
|
752
|
-
log "Removing blacklisted key: $KEY"
|
753
|
-
PlistBuddy -c "Delete $KEY" "$PATCHED_ENTITLEMENTS" 2>/dev/null
|
754
|
-
done
|
755
|
-
|
756
819
|
log "Resigning application using certificate: '$CERTIFICATE'"
|
757
820
|
log "and patched entitlements:"
|
758
821
|
log "$(cat "$PATCHED_ENTITLEMENTS")"
|
@@ -153,6 +153,7 @@ module Snapshot
|
|
153
153
|
short_option: "-q",
|
154
154
|
env_name: "SNAPSHOT_CONFIGURATION",
|
155
155
|
description: "The configuration to use when building the app. Defaults to 'Release'",
|
156
|
+
default_value_dynamic: true,
|
156
157
|
optional: true),
|
157
158
|
FastlaneCore::ConfigItem.new(key: :xcpretty_args,
|
158
159
|
short_option: "-x",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.82.0.beta.
|
4
|
+
version: 2.82.0.beta.20180223010003
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Olivier Halligon
|
@@ -25,7 +25,7 @@ authors:
|
|
25
25
|
autorequire:
|
26
26
|
bindir: bin
|
27
27
|
cert_chain: []
|
28
|
-
date: 2018-02-
|
28
|
+
date: 2018-02-23 00:00:00.000000000 Z
|
29
29
|
dependencies:
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: slack-notifier
|