fastlane 2.36.0.beta.20170530010040 → 2.36.0.beta.20170531010050

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d4727c94b2d8c2029c0926db332e383bfb02a349
4
- data.tar.gz: e97161e2581881380bd68ade3bdb85f79b546fd3
3
+ metadata.gz: 4a7e97167dc89fa471f4602ad69d2b4044a89f4a
4
+ data.tar.gz: a0aed9383787dff07a3d48d8cbc23d4f3d1f8ebc
5
5
  SHA512:
6
- metadata.gz: a8acaa17c4c5f10b19a6301ffccafbdc8b55b57409478ae71b9c814d1131d2df7317c548206c5640a447e44b26b1184080d9f0d429fc39e00c853d097dea8d81
7
- data.tar.gz: 78da88540fa25e532376c441e6c16b043c705892996474f29980ed67a20e8fbec469c74e5ef9b03abef0d0fe56a7cd1c202e3528a54c92d47f6294187b755b1f
6
+ metadata.gz: 24ea7852f21b2813514383e80afc4c1dcfef93ce0197ba340af231e51c5f7fd4828afa06e1a70815ab18d44fa30d458095e171150a22d0e62b30c6f9055c6934
7
+ data.tar.gz: b93d3e7efd090f3888a7e4889f659c69b26dd3f860f95bc2df2d1960ff5a37056b8653dab916b10511b5ad8cb651d6c9a4e3030b4f126e4de5a1327a015d4db2
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015 Felix Krause
3
+ Copyright (c) 2015-present the fastlane authors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -258,13 +258,13 @@ module Fastlane
258
258
  raise e
259
259
  rescue FastlaneCore::Interface::FastlaneError => e # user_error!
260
260
  FastlaneCore::CrashReporter.report_crash(exception: e, action: method_sym)
261
- collector.did_raise_error(method_sym)
261
+ collector.did_raise_error(method_sym) if e.fastlane_should_report_metrics?
262
262
  raise e
263
263
  rescue Exception => e # rubocop:disable Lint/RescueException
264
264
  # high chance this is actually FastlaneCore::Interface::FastlaneCrash, but can be anything else
265
265
  # Catches all exceptions, since some plugins might use system exits to get out
266
266
  FastlaneCore::CrashReporter.report_crash(exception: e, action: method_sym)
267
- collector.did_crash(method_sym)
267
+ collector.did_crash(method_sym) if e.fastlane_should_report_metrics?
268
268
  raise e
269
269
  end
270
270
  end
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '2.36.0.beta.20170530010040'.freeze
2
+ VERSION = '2.36.0.beta.20170531010050'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  end
@@ -13,6 +13,7 @@ module FastlaneCore
13
13
  used_switches = []
14
14
  options.each do |option|
15
15
  next if option.description.to_s.empty? # "private" options
16
+ next unless option.display_in_shell
16
17
 
17
18
  short_switch = option.short_option
18
19
  key = option.key
@@ -39,6 +39,9 @@ module FastlaneCore
39
39
  # Allows items expected to be strings used in shell arguments to be alternatively provided as a Hash or Array for better readability and auto-escaped for us.
40
40
  attr_accessor :allow_shell_conversion
41
41
 
42
+ # [Boolean] Set if the variable can be used from shell
43
+ attr_accessor :display_in_shell
44
+
42
45
  # Creates a new option
43
46
  # @param key (Symbol) the key which is used as command parameters or key in the fastlane tools
44
47
  # @param env_name (String) the name of the environment variable, which is only used if no other values were found
@@ -55,7 +58,21 @@ module FastlaneCore
55
58
  # @param conflict_block an optional block which is called when options conflict happens
56
59
  # @param deprecated (String) Set if the option is deprecated. A deprecated option should be optional and is made optional if the parameter isn't set, and fails otherwise
57
60
  # @param sensitive (Boolean) Set if the variable is sensitive, such as a password or API token, to prevent echoing when prompted for the parameter
58
- def initialize(key: nil, env_name: nil, description: nil, short_option: nil, default_value: nil, verify_block: nil, is_string: true, type: nil, optional: nil, conflicting_options: nil, conflict_block: nil, deprecated: nil, sensitive: nil)
61
+ # @param display_in_shell (Boolean) Set if the variable can be used from shell
62
+ def initialize(key: nil,
63
+ env_name: nil,
64
+ description: nil,
65
+ short_option: nil,
66
+ default_value: nil,
67
+ verify_block: nil,
68
+ is_string: true,
69
+ type: nil,
70
+ optional: nil,
71
+ conflicting_options: nil,
72
+ conflict_block: nil,
73
+ deprecated: nil,
74
+ sensitive: nil,
75
+ display_in_shell: true)
59
76
  UI.user_error!("key must be a symbol") unless key.kind_of? Symbol
60
77
  UI.user_error!("env_name must be a String") unless (env_name || '').kind_of? String
61
78
 
@@ -81,8 +98,8 @@ module FastlaneCore
81
98
  # deprecated options are marked deprecated in their description
82
99
  description = "[DEPRECATED!] #{deprecated} - #{description}"
83
100
  end
84
- optional = false if optional.nil?
85
101
 
102
+ optional = false if optional.nil?
86
103
  sensitive = false if sensitive.nil?
87
104
 
88
105
  @key = key
@@ -100,6 +117,7 @@ module FastlaneCore
100
117
  @deprecated = deprecated
101
118
  @sensitive = sensitive
102
119
  @allow_shell_conversion = (type == :shell_string)
120
+ @display_in_shell = display_in_shell
103
121
  end
104
122
 
105
123
  def verify!(value)
@@ -28,8 +28,7 @@ module FastlaneCore
28
28
  if (plist || []).count > 5
29
29
  plist
30
30
  else
31
- UI.error("Error parsing provisioning profile at path '#{path}'")
32
- nil
31
+ UI.crash!("Error parsing provisioning profile at path '#{path}'")
33
32
  end
34
33
  end
35
34
 
@@ -34,4 +34,12 @@ class Exception
34
34
  plugin_frame = backtrace.find { |frame| frame.include?('fastlane-plugin-') }
35
35
  !plugin_frame.nil?
36
36
  end
37
+
38
+ def fastlane_should_report_metrics?
39
+ if fastlane_crash_came_from_plugin? || fastlane_crash_came_from_custom_action?
40
+ false
41
+ else
42
+ true
43
+ end
44
+ end
37
45
  end
@@ -15,6 +15,9 @@ module Commander
15
15
  # In particular we want to distinguish between user_error! and crash! (one with, one without stack trace)
16
16
  class Runner
17
17
  # Code taken from https://github.com/commander-rb/commander/blob/master/lib/commander/runner.rb#L50
18
+
19
+ attr_accessor :collector
20
+
18
21
  def run!
19
22
  require_program :version, :description
20
23
  trap('INT') { abort program(:int_message) } if program(:int_message)
@@ -31,8 +34,6 @@ module Commander
31
34
  parse_global_options
32
35
  remove_global_options options, @args
33
36
 
34
- collector = FastlaneCore::ToolCollector.new
35
-
36
37
  begin
37
38
  collector.did_launch_action(@program[:name])
38
39
  run_active_command
@@ -80,36 +81,56 @@ module Commander
80
81
  rescue FastlaneCore::Interface::FastlaneCommonException => e # these are exceptions that we dont count as crashes
81
82
  display_user_error!(e, e.to_s)
82
83
  rescue FastlaneCore::Interface::FastlaneError => e # user_error!
83
- collector.did_raise_error(@program[:name])
84
- show_github_issues(e.message) if e.show_github_issues
85
- FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
86
- display_user_error!(e, e.message)
84
+ rescue_fastlane_error(e)
87
85
  rescue Errno::ENOENT => e
88
- # We're also printing the new-lines, as otherwise the message is not very visible in-between the error and the stacktrace
89
- puts ""
90
- FastlaneCore::UI.important("Error accessing file, this might be due to fastlane's directory handling")
91
- FastlaneCore::UI.important("Check out https://docs.fastlane.tools/advanced/#directory-behavior for more details")
92
- puts ""
93
- FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
94
- raise e
86
+ rescue_file_error(e)
95
87
  rescue Faraday::SSLError => e # SSL issues are very common
96
88
  handle_ssl_error!(e)
97
89
  rescue Faraday::ConnectionFailed => e
98
- if e.message.include? 'Connection reset by peer - SSL_connect'
99
- handle_tls_error!(e)
100
- else
101
- FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
102
- handle_unknown_error!(e)
103
- end
90
+ rescue_connection_failed_error(e)
104
91
  rescue => e # high chance this is actually FastlaneCore::Interface::FastlaneCrash, but can be anything else
105
- FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
106
- collector.did_crash(@program[:name])
107
- handle_unknown_error!(e)
92
+ rescue_unknown_error(e)
108
93
  ensure
109
94
  collector.did_finish
110
95
  end
111
96
  end
112
97
 
98
+ def collector
99
+ @collector ||= FastlaneCore::ToolCollector.new
100
+ end
101
+
102
+ def rescue_file_error(e)
103
+ # We're also printing the new-lines, as otherwise the message is not very visible in-between the error and the stacktrace
104
+ puts ""
105
+ FastlaneCore::UI.important("Error accessing file, this might be due to fastlane's directory handling")
106
+ FastlaneCore::UI.important("Check out https://docs.fastlane.tools/advanced/#directory-behavior for more details")
107
+ puts ""
108
+ FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
109
+ raise e
110
+ end
111
+
112
+ def rescue_connection_failed_error(e)
113
+ if e.message.include? 'Connection reset by peer - SSL_connect'
114
+ handle_tls_error!(e)
115
+ else
116
+ FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
117
+ handle_unknown_error!(e)
118
+ end
119
+ end
120
+
121
+ def rescue_unknown_error(e)
122
+ FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
123
+ collector.did_crash(@program[:name]) if e.fastlane_should_report_metrics?
124
+ handle_unknown_error!(e)
125
+ end
126
+
127
+ def rescue_fastlane_error(e)
128
+ collector.did_raise_error(@program[:name]) if e.fastlane_should_report_metrics?
129
+ show_github_issues(e.message) if e.show_github_issues
130
+ FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
131
+ display_user_error!(e, e.message)
132
+ end
133
+
113
134
  def handle_tls_error!(e)
114
135
  # Apple has upgraded its iTunes Connect servers to require TLS 1.2, but
115
136
  # system Ruby 2.0 does not support it. We want to suggest that users upgrade
data/produce/README.md CHANGED
@@ -77,31 +77,37 @@ Get in contact with the developers on Twitter: [@FastlaneTools](https://twitter.
77
77
  To get a list of all available parameters:
78
78
 
79
79
  fastlane produce --help
80
-
80
+
81
81
  ```
82
- Commands:
83
- associate_group Associate with a group, which is created if needed or simply located otherwise
84
- create Creates a new app on iTunes Connect and the Apple Developer Portal
85
- disable_services Disable specific Application Services for a specific app on the Apple Developer Portal
86
- enable_services Enable specific Application Services for a specific app on the Apple Developer Portal
87
- group Ensure that a specific App Group exists
88
- help Display global or [command] help documentation
82
+ Commands: (* default)
83
+ associate_group Associate with a group, which is created if needed or simply located otherwise
84
+ create * Creates a new app on iTunes Connect and the Apple Developer Portal
85
+ disable_services Disable specific Application Services for a specific app on the Apple Developer Portal
86
+ enable_services Enable specific Application Services for a specific app on the Apple Developer Portal
87
+ group Ensure that a specific App Group exists
88
+ help Display global or [command] help documentation
89
89
 
90
90
  Global Options:
91
+ --verbose
92
+ -h, --help Display help documentation
93
+ -v, --version Display version information
94
+
95
+ Options for create:
91
96
  -u, --username STRING Your Apple ID Username (PRODUCE_USERNAME)
92
97
  -a, --app_identifier STRING App Identifier (Bundle ID, e.g. com.krausefx.app) (PRODUCE_APP_IDENTIFIER)
93
98
  -e, --bundle_identifier_suffix STRING App Identifier Suffix (Ignored if App Identifier does not ends with .*) (PRODUCE_APP_IDENTIFIER_SUFFIX)
94
99
  -q, --app_name STRING App Name (PRODUCE_APP_NAME)
95
100
  -z, --app_version STRING Initial version number (e.g. '1.0') (PRODUCE_VERSION)
96
101
  -y, --sku STRING SKU Number (e.g. '1234') (PRODUCE_SKU)
102
+ -j, --platform STRING The platform to use (optional) (PRODUCE_PLATFORM)
97
103
  -m, --language STRING Primary Language (e.g. 'English', 'German') (PRODUCE_LANGUAGE)
98
104
  -c, --company_name STRING The name of your company. Only required if it's the first app you create (PRODUCE_COMPANY_NAME)
99
- -i, --skip_itc Skip the creation of the app on iTunes Connect (PRODUCE_SKIP_ITC)
100
- -d, --skip_devcenter Skip the creation of the app on the Apple Developer Portal (PRODUCE_SKIP_DEVCENTER)
101
- -b, --team_id STRING The ID of your team if you're in multiple teams (PRODUCE_TEAM_ID)
102
- -l, --team_name STRING The name of your team if you're in multiple teams (PRODUCE_TEAM_NAME)
103
- -h, --help Display help documentation
104
- -v, --version Display version information
105
+ -i, --skip_itc [VALUE] Skip the creation of the app on iTunes Connect (PRODUCE_SKIP_ITC)
106
+ -d, --skip_devcenter [VALUE] Skip the creation of the app on the Apple Developer Portal (PRODUCE_SKIP_DEVCENTER)
107
+ -b, --team_id STRING The ID of your Developer Portal team if you're in multiple teams (PRODUCE_TEAM_ID)
108
+ -l, --team_name STRING The name of your Developer Portal team if you're in multiple teams (PRODUCE_TEAM_NAME)
109
+ -k, --itc_team_id [VALUE] The ID of your iTunes Connect team if you're in multiple teams (PRODUCE_ITC_TEAM_ID)
110
+ -p, --itc_team_name STRING The name of your iTunes Connect team if you're in multiple teams (PRODUCE_ITC_TEAM_NAME)
105
111
  ```
106
112
 
107
113
  ## Enabling / Disabling Application Services
@@ -183,6 +189,26 @@ lane :release do
183
189
  app_version: '1.0',
184
190
  sku: '123',
185
191
  team_name: 'SunApps GmbH' # only necessary when in multiple teams
192
+
193
+ # Optional
194
+ # App services can be enabled during app creation
195
+ enable_services: {
196
+ app_group: "on" # Valid values: "on", "off"
197
+ apple_pay: "on" # Valid values: "on", "off"
198
+ associated_domains: "on" # Valid values: "on", "off"
199
+ data_protection: "complete" # Valid values: "complete", "unlessopen", "untilfirstauth"
200
+ game_center: "on" # Valid values: "on", "off"
201
+ health_kit: "on" # Valid values: "on", "off"
202
+ home_kit: "on" # Valid values: "on", "off"
203
+ wireless_accessory: "on" # Valid values: "on", "off"
204
+ icloud: "cloudkit" # Valid values: "legacy", "cloudkit"
205
+ in_app_purchase: "on" # Valid values: "on", "off"
206
+ inter_app_audio: "on" # Valid values: "on", "off"
207
+ passbook: "on" # Valid values: "on", "off"
208
+ push_notification: "on" # Valid values: "on", "off"
209
+ siri_kit: "on" # Valid values: "on", "off"
210
+ vpn_configuration: "on" # Valid values: "on", "off"
211
+ }
186
212
  )
187
213
 
188
214
  deliver
@@ -2,6 +2,36 @@ require 'spaceship'
2
2
 
3
3
  module Produce
4
4
  class DeveloperCenter
5
+ SERVICE_ON = "on"
6
+ SERVICE_OFF = "off"
7
+ SERVICE_COMPLETE = "complete"
8
+ SERVICE_UNLESS_OPEN = "unlessopen"
9
+ SERVICE_UNTIL_FIRST_LAUNCH = "untilfirstauth"
10
+ SERVICE_LEGACY = "legacy"
11
+ SERVICE_CLOUDKIT = "cloudkit"
12
+
13
+ ALLOWED_SERVICES = {
14
+ app_group: [SERVICE_ON, SERVICE_OFF],
15
+ apple_pay: [SERVICE_ON, SERVICE_OFF],
16
+ associated_domains: [SERVICE_ON, SERVICE_OFF],
17
+ data_protection: [
18
+ SERVICE_COMPLETE,
19
+ SERVICE_UNLESS_OPEN,
20
+ SERVICE_UNTIL_FIRST_LAUNCH
21
+ ],
22
+ game_center: [SERVICE_ON, SERVICE_OFF],
23
+ health_kit: [SERVICE_ON, SERVICE_OFF],
24
+ home_kit: [SERVICE_ON, SERVICE_OFF],
25
+ wireless_accessory: [SERVICE_ON, SERVICE_OFF],
26
+ icloud: [SERVICE_LEGACY, SERVICE_CLOUDKIT],
27
+ in_app_purchase: [SERVICE_ON, SERVICE_OFF],
28
+ inter_app_audio: [SERVICE_ON, SERVICE_OFF],
29
+ passbook: [SERVICE_ON, SERVICE_OFF],
30
+ push_notification: [SERVICE_ON, SERVICE_OFF],
31
+ siri_kit: [SERVICE_ON, SERVICE_OFF],
32
+ vpn_configuration: [SERVICE_ON, SERVICE_OFF]
33
+ }
34
+
5
35
  def run
6
36
  login
7
37
  create_new_app
@@ -19,7 +49,7 @@ module Produce
19
49
 
20
50
  app = Spaceship.app.create!(bundle_id: app_identifier,
21
51
  name: app_name,
22
- enabled_features: enabled_features,
52
+ enable_services: enable_services,
23
53
  mac: Produce.config[:platform] == "osx")
24
54
 
25
55
  if app.name != Produce.config[:app_name]
@@ -40,30 +70,34 @@ module Produce
40
70
  return true
41
71
  end
42
72
 
43
- def enabled_features
73
+ def enable_services
44
74
  app_service = Spaceship.app_service
45
75
  enabled_clean_options = {}
46
- Produce.config[:enabled_features].each do |k, v|
76
+
77
+ # "enable_services" was deprecated in favor of "enable_services"
78
+ config_enabled_services = Produce.config[:enable_services] || Produce.config[:enable_services]
79
+
80
+ config_enabled_services.each do |k, v|
47
81
  if k.to_sym == :data_protection
48
82
  case v
49
- when "complete"
83
+ when SERVICE_COMPLETE
50
84
  enabled_clean_options[app_service.data_protection.complete.service_id] = app_service.data_protection.complete
51
- when "unlessopen"
85
+ when SERVICE_UNLESS_OPEN
52
86
  enabled_clean_options[app_service.data_protection.unlessopen.service_id] = app_service.data_protection.unlessopen
53
- when "untilfirstauth"
87
+ when SERVICE_UNTIL_FIRST_LAUNCH
54
88
  enabled_clean_options[app_service.data_protection.untilfirstauth.service_id] = app_service.data_protection.untilfirstauth
55
89
  end
56
90
  elsif k.to_sym == :icloud
57
91
  case v
58
- when "legacy"
92
+ when SERVICE_LEGACY
59
93
  enabled_clean_options[app_service.icloud.on.service_id] = app_service.icloud.on
60
94
  enabled_clean_options[app_service.cloud_kit.xcode5_compatible.service_id] = app_service.cloud_kit.xcode5_compatible
61
- when "cloudkit"
95
+ when SERVICE_CLOUDKIT
62
96
  enabled_clean_options[app_service.icloud.on.service_id] = app_service.icloud.on
63
97
  enabled_clean_options[app_service.cloud_kit.cloud_kit.service_id] = app_service.cloud_kit.cloud_kit
64
98
  end
65
99
  else
66
- if v == "on"
100
+ if v == SERVICE_ON
67
101
  enabled_clean_options[app_service.send(k.to_s).on.service_id] = app_service.send(k.to_s).on
68
102
  else
69
103
  enabled_clean_options[app_service.send(k.to_s).off.service_id] = app_service.send(k.to_s).off
@@ -66,20 +66,34 @@ module Produce
66
66
  is_string: false,
67
67
  default_value: false),
68
68
 
69
+ # Deprecating this in favor of a rename from "enabled_features" to "enable_services"
69
70
  FastlaneCore::ConfigItem.new(key: :enabled_features,
70
- short_option: "-P",
71
+ deprecated: "Please use `enable_services` instead",
72
+ display_in_shell: false,
71
73
  env_name: "PRODUCE_ENABLED_FEATURES",
72
- description: "Array with Spaceship App Features",
74
+ description: "Array with Spaceship App Services",
73
75
  is_string: false,
74
76
  default_value: {},
75
77
  verify_block: proc do |value|
76
- allowed_keys = [:app_group, :apple_pay, :associated_domains, :data_protection, :game_center, :health_kit, :home_kit,
77
- :wireless_accessory, :icloud, :in_app_purchase, :inter_app_audio, :passbook, :push_notification, :siri_kit, :vpn_configuration]
78
+ allowed_keys = Produce::DeveloperCenter::ALLOWED_SERVICES.keys
78
79
  UI.user_error!("enabled_features has to be of type Hash") unless value.kind_of?(Hash)
79
80
  value.each do |key, v|
80
81
  UI.user_error!("The key: '#{key}' is not supported in `enabled_features' - following keys are available: [#{allowed_keys.join(',')}]") unless allowed_keys.include? key.to_sym
81
82
  end
82
83
  end),
84
+ FastlaneCore::ConfigItem.new(key: :enable_services,
85
+ display_in_shell: false,
86
+ env_name: "PRODUCE_ENABLE_SERVICES",
87
+ description: "Array with Spaceship App Services (e.g. #{allowed_services_description})",
88
+ is_string: false,
89
+ default_value: {},
90
+ verify_block: proc do |value|
91
+ allowed_keys = Produce::DeveloperCenter::ALLOWED_SERVICES.keys
92
+ UI.user_error!("enable_services has to be of type Hash") unless value.kind_of?(Hash)
93
+ value.each do |key, v|
94
+ UI.user_error!("The key: '#{key}' is not supported in `enable_services' - following keys are available: [#{allowed_keys.join(',')}]") unless allowed_keys.include? key.to_sym
95
+ end
96
+ end),
83
97
 
84
98
  FastlaneCore::ConfigItem.new(key: :skip_devcenter,
85
99
  short_option: "-d",
@@ -126,5 +140,11 @@ module Produce
126
140
  end)
127
141
  ]
128
142
  end
143
+
144
+ def self.allowed_services_description
145
+ return Produce::DeveloperCenter::ALLOWED_SERVICES.map do |k, v|
146
+ "#{k}: (#{v.join('|')})"
147
+ end.join(", ")
148
+ end
129
149
  end
130
150
  end
@@ -33,8 +33,8 @@ module Spaceship
33
33
  # @return (Hash) Feature details
34
34
  attr_accessor :features
35
35
 
36
- # @return (Array) List of enabled features
37
- attr_accessor :enabled_features
36
+ # @return (Array) List of enabled services
37
+ attr_accessor :enable_services
38
38
 
39
39
  # @return (Bool) Development Push Enabled?
40
40
  attr_accessor :dev_push_enabled
@@ -62,7 +62,7 @@ module Spaceship
62
62
  'identifier' => :bundle_id,
63
63
  'isWildCard' => :is_wildcard,
64
64
  'features' => :features,
65
- 'enabledFeatures' => :enabled_features,
65
+ 'enabledFeatures' => :enable_services,
66
66
  'isDevPushEnabled' => :dev_push_enabled,
67
67
  'isProdPushEnabled' => :prod_push_enabled,
68
68
  'associatedApplicationGroupsCount' => :app_groups_count,
@@ -92,14 +92,14 @@ module Spaceship
92
92
  # @param name [String] the name of the App
93
93
  # @param mac [Bool] is this a Mac app?
94
94
  # @return (App) The app you just created
95
- def create!(bundle_id: nil, name: nil, mac: false, enabled_features: {})
95
+ def create!(bundle_id: nil, name: nil, mac: false, enable_services: {})
96
96
  if bundle_id.end_with?('*')
97
97
  type = :wildcard
98
98
  else
99
99
  type = :explicit
100
100
  end
101
101
 
102
- new_app = client.create_app!(type, name, bundle_id, mac: mac, enabled_features: enabled_features)
102
+ new_app = client.create_app!(type, name, bundle_id, mac: mac, enable_services: enable_services)
103
103
  self.new(new_app)
104
104
  end
105
105
 
@@ -144,7 +144,7 @@ module Spaceship
144
144
  latinized
145
145
  end
146
146
 
147
- def create_app!(type, name, bundle_id, mac: false, enabled_features: {})
147
+ def create_app!(type, name, bundle_id, mac: false, enable_services: {})
148
148
  # We moved the ensure_csrf to the top of this method
149
149
  # as we got some users with issues around creating new apps
150
150
  # https://github.com/fastlane/fastlane/issues/5813
@@ -171,7 +171,7 @@ module Spaceship
171
171
  teamId: team_id
172
172
  }
173
173
  params.merge!(ident_params)
174
- enabled_features.each do |k, v|
174
+ enable_services.each do |k, v|
175
175
  params[v.service_id.to_sym] = v.value
176
176
  end
177
177
  r = request(:post, "account/#{platform_slug(mac)}/identifiers/addAppId.action", params)
@@ -26,7 +26,7 @@ module Supply
26
26
  description: "The percentage of the user fraction when uploading to the rollout track",
27
27
  default_value: '0.1',
28
28
  verify_block: proc do |value|
29
- min = 0.05
29
+ min = 0.01
30
30
  max = 0.5
31
31
  UI.user_error! "Invalid value '#{value}', must be between #{min} and #{max}" unless value.to_f.between?(min, max)
32
32
  end),
@@ -41,7 +41,7 @@ module Supply
41
41
  def promote_track
42
42
  version_codes = client.track_version_codes(Supply.config[:track])
43
43
  # the actual value passed for the rollout argument does not matter because it will be ignored by the Google Play API
44
- # but it has to be between 0.05 and 0.5 to pass the validity check. So we are passing the default value 0.1
44
+ # but it has to be between 0.01 and 0.5 to pass the validity check. So we are passing the default value 0.1
45
45
  client.update_track(Supply.config[:track], 0.1, nil)
46
46
  client.update_track(Supply.config[:track_promote_to], Supply.config[:rollout], version_codes)
47
47
  end
@@ -162,8 +162,12 @@ module Supply
162
162
  end
163
163
  end
164
164
 
165
+ # returns only language directories from metadata_path
165
166
  def all_languages
166
- Dir.foreach(metadata_path).sort { |x, y| x <=> y }
167
+ Dir.entries(metadata_path)
168
+ .select { |f| File.directory? File.join(metadata_path, f) }
169
+ .reject { |f| f.start_with?('.') }
170
+ .sort { |x, y| x <=> y }
167
171
  end
168
172
 
169
173
  def client
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.36.0.beta.20170530010040
4
+ version: 2.36.0.beta.20170531010050
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2017-05-30 00:00:00.000000000 Z
18
+ date: 2017-05-31 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: slack-notifier
@@ -1368,23 +1368,23 @@ metadata:
1368
1368
  post_install_message:
1369
1369
  rdoc_options: []
1370
1370
  require_paths:
1371
- - cert/lib
1372
- - pem/lib
1373
- - scan/lib
1374
- - frameit/lib
1375
1371
  - fastlane_core/lib
1376
- - credentials_manager/lib
1372
+ - match/lib
1377
1373
  - fastlane/lib
1378
- - sigh/lib
1379
- - spaceship/lib
1380
1374
  - gym/lib
1381
- - match/lib
1382
- - snapshot/lib
1383
- - produce/lib
1384
- - pilot/lib
1375
+ - scan/lib
1385
1376
  - screengrab/lib
1377
+ - pem/lib
1378
+ - snapshot/lib
1379
+ - spaceship/lib
1380
+ - sigh/lib
1381
+ - cert/lib
1386
1382
  - deliver/lib
1383
+ - credentials_manager/lib
1384
+ - produce/lib
1385
+ - frameit/lib
1387
1386
  - supply/lib
1387
+ - pilot/lib
1388
1388
  required_ruby_version: !ruby/object:Gem::Requirement
1389
1389
  requirements:
1390
1390
  - - ">="