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

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 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
  - - ">="