fastlane 2.69.0.beta.20171212010004 → 2.69.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/deliver/lib/assets/DeliverfileDefault.swift +13 -0
  3. data/deliver/lib/deliver/commands_generator.rb +2 -1
  4. data/deliver/lib/deliver/options.rb +8 -3
  5. data/deliver/lib/deliver/setup.rb +19 -3
  6. data/fastlane/lib/assets/AppfileTemplate.swift +8 -0
  7. data/fastlane/lib/assets/DefaultFastfileTemplate.swift +72 -0
  8. data/fastlane/lib/fastlane.rb +6 -0
  9. data/fastlane/lib/fastlane/.DS_Store +0 -0
  10. data/fastlane/lib/fastlane/action.rb +13 -0
  11. data/fastlane/lib/fastlane/actions/adb.rb +4 -0
  12. data/fastlane/lib/fastlane/actions/appium.rb +2 -0
  13. data/fastlane/lib/fastlane/actions/bundle_install.rb +2 -0
  14. data/fastlane/lib/fastlane/actions/carthage.rb +12 -24
  15. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +5 -0
  16. data/fastlane/lib/fastlane/actions/cocoapods.rb +2 -1
  17. data/fastlane/lib/fastlane/actions/commit_github_file.rb +4 -0
  18. data/fastlane/lib/fastlane/actions/environment_variable.rb +73 -0
  19. data/fastlane/lib/fastlane/actions/get_version_number.rb +4 -4
  20. data/fastlane/lib/fastlane/actions/increment_build_number.rb +4 -0
  21. data/fastlane/lib/fastlane/actions/increment_version_number.rb +4 -0
  22. data/fastlane/lib/fastlane/actions/is_ci.rb +4 -0
  23. data/fastlane/lib/fastlane/actions/last_git_commit.rb +4 -0
  24. data/fastlane/lib/fastlane/actions/last_git_tag.rb +4 -0
  25. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +4 -0
  26. data/fastlane/lib/fastlane/actions/modify_services.rb +1 -0
  27. data/fastlane/lib/fastlane/actions/number_of_commits.rb +4 -0
  28. data/fastlane/lib/fastlane/actions/podio_item.rb +1 -0
  29. data/fastlane/lib/fastlane/actions/prompt.rb +4 -0
  30. data/fastlane/lib/fastlane/actions/read_podspec.rb +4 -0
  31. data/fastlane/lib/fastlane/actions/register_device.rb +4 -0
  32. data/fastlane/lib/fastlane/actions/register_devices.rb +1 -0
  33. data/fastlane/lib/fastlane/actions/rocket.rb +4 -0
  34. data/fastlane/lib/fastlane/actions/set_github_release.rb +4 -0
  35. data/fastlane/lib/fastlane/actions/sh.rb +5 -0
  36. data/fastlane/lib/fastlane/actions/slather.rb +14 -0
  37. data/fastlane/lib/fastlane/actions/update_urban_airship_configuration.rb +1 -0
  38. data/fastlane/lib/fastlane/actions/xcode_install.rb +4 -0
  39. data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +4 -0
  40. data/fastlane/lib/fastlane/actions/zip.rb +4 -0
  41. data/fastlane/lib/fastlane/boolean.rb +5 -0
  42. data/fastlane/lib/fastlane/command_line_handler.rb +6 -1
  43. data/fastlane/lib/fastlane/commands_generator.rb +40 -1
  44. data/fastlane/lib/fastlane/fast_file.rb +5 -1
  45. data/fastlane/lib/fastlane/lane_list.rb +67 -4
  46. data/fastlane/lib/fastlane/lane_manager.rb +3 -69
  47. data/fastlane/lib/fastlane/lane_manager_base.rb +124 -0
  48. data/fastlane/lib/fastlane/runner.rb +2 -2
  49. data/fastlane/lib/fastlane/server/command.rb +70 -0
  50. data/fastlane/lib/fastlane/server/command_executor.rb +9 -0
  51. data/fastlane/lib/fastlane/server/socket_server.rb +212 -0
  52. data/fastlane/lib/fastlane/server/socket_server_action_command_executor.rb +100 -0
  53. data/fastlane/lib/fastlane/setup/setup.rb +7 -2
  54. data/fastlane/lib/fastlane/setup/setup_ios.rb +72 -15
  55. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +265 -0
  56. data/fastlane/lib/fastlane/swift_fastlane_function.rb +342 -0
  57. data/fastlane/lib/fastlane/swift_lane_manager.rb +246 -0
  58. data/fastlane/lib/fastlane/tools.rb +13 -0
  59. data/fastlane/lib/fastlane/version.rb +1 -1
  60. data/fastlane_core/lib/fastlane_core.rb +3 -0
  61. data/fastlane_core/lib/fastlane_core/analytics/action_launch_context.rb +6 -3
  62. data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +7 -0
  63. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +13 -0
  64. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +33 -2
  65. data/fastlane_core/lib/fastlane_core/fastlane_folder.rb +32 -0
  66. data/gym/lib/assets/GymfileTemplate.swift +13 -0
  67. data/gym/lib/gym/commands_generator.rb +14 -2
  68. data/gym/lib/gym/generators/build_command_generator.rb +2 -2
  69. data/gym/lib/gym/options.rb +11 -0
  70. data/match/lib/assets/MatchfileTemplate.swift +9 -0
  71. data/match/lib/match/commands_generator.rb +9 -3
  72. data/match/lib/match/options.rb +1 -0
  73. data/match/lib/match/setup.rb +6 -2
  74. data/precheck/lib/.DS_Store +0 -0
  75. data/precheck/lib/assets/PrecheckfileTemplate +1 -1
  76. data/precheck/lib/assets/PrecheckfileTemplate.swift +19 -0
  77. data/precheck/lib/precheck/commands_generator.rb +13 -2
  78. data/scan/lib/assets/ScanfileTemplate.swift +13 -0
  79. data/scan/lib/scan/commands_generator.rb +14 -2
  80. data/scan/lib/scan/options.rb +6 -0
  81. data/screengrab/lib/assets/ScreengrabfileTemplate.swift +15 -0
  82. data/screengrab/lib/screengrab/commands_generator.rb +2 -1
  83. data/screengrab/lib/screengrab/setup.rb +9 -3
  84. data/snapshot/lib/assets/SnapfileTemplate.swift +41 -0
  85. data/snapshot/lib/snapshot/commands_generator.rb +2 -1
  86. data/snapshot/lib/snapshot/setup.rb +9 -3
  87. data/spaceship/lib/spaceship/client.rb +4 -1
  88. metadata +38 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 670eaaf7501902c99c3ef87899e4f1318fc0f47f
4
- data.tar.gz: ad212a4cbdece8817f78788beb93dcfd15fa2c68
3
+ metadata.gz: c84dc9589f4d0140988040aa2d7cc6eae54d513d
4
+ data.tar.gz: cfaa220b540897f4162dc3efdd323cbb59128156
5
5
  SHA512:
6
- metadata.gz: fe1b475b9c557933f5676d4c8252abfeff77ed06ae092eabc92dce2044f2147b660d02196b03fadb53c2bf259308ee9bbdb74d274ad8e7069d41c9985565a602
7
- data.tar.gz: 2976533d79f0bdbf1ad3e20f70c39994a3ebde2662977b8a21e807a92248a2c76de1279638ce51634c1eaabd7991f1f9e55e22cd7af4c29f6f12390ec2a95e26
6
+ metadata.gz: 760bf04a97de90d938554bcfa77249e2a91b232aabab01387b44d391ae96f64d9cf9a4a669dafe18aa960af77c6cf9d9e796e481882ca2b114a03d7dbf368bc8
7
+ data.tar.gz: bd7e6d82a6d898db2bbeb67da7be6ce4db4b6d2dcfde8ab0d7e733cf0e916fa9ef18937565a43a55e74ae44b1487f98df94a76170c86255a1ee4aeed6c937cf0
@@ -0,0 +1,13 @@
1
+ /************************ More Options ************************/
2
+ // If you want to have even more control, check out the documentation
3
+ // https://docs.fastlane.tools/actions/deliver
4
+
5
+
6
+ /************************ Automatically generated ************************/
7
+
8
+ class Deliverfile: DeliverfileProtocol {
9
+ // Feel free to remove the following lines
10
+ // These values can go in Appfile.swift
11
+ var appIdentifier: String { return "[[APP_IDENTIFIER]]" } // The bundle identifier of your app
12
+ var username: String { return "[[USERNAME]]" } // your Apple ID user
13
+ }
@@ -63,9 +63,10 @@ module Deliver
63
63
  loaded = true if File.exist?(File.join(FastlaneCore::FastlaneFolder.path || ".", "metadata"))
64
64
  unless loaded
65
65
  if UI.confirm("No deliver configuration found in the current directory. Do you want to setup deliver?")
66
+ is_swift = UI.confirm("Would you like to use Swift instead of Ruby?")
66
67
  require 'deliver/setup'
67
68
  Deliver::Runner.new(options) # to login...
68
- Deliver::Setup.new.run(options)
69
+ Deliver::Setup.new.run(options, is_swift: is_swift)
69
70
  return 0
70
71
  end
71
72
  end
@@ -125,7 +125,7 @@ module Deliver
125
125
  description: "Enable the phased release feature of iTC",
126
126
  optional: true,
127
127
  is_string: false,
128
- default_value: nil),
128
+ default_value: false),
129
129
  FastlaneCore::ConfigItem.new(key: :price_tier,
130
130
  short_option: "-r",
131
131
  description: "The price tier of this application",
@@ -264,11 +264,13 @@ module Deliver
264
264
  FastlaneCore::ConfigItem.new(key: :trade_representative_contact_information,
265
265
  description: "Metadata: A hash containing the trade representative contact information",
266
266
  optional: true,
267
- is_string: false),
267
+ is_string: false,
268
+ type: Hash),
268
269
  FastlaneCore::ConfigItem.new(key: :app_review_information,
269
270
  description: "Metadata: A hash containing the review information",
270
271
  optional: true,
271
- is_string: false),
272
+ is_string: false,
273
+ type: Hash),
272
274
  # Localised
273
275
  FastlaneCore::ConfigItem.new(key: :description,
274
276
  description: "Metadata: The localised app description",
@@ -282,6 +284,7 @@ module Deliver
282
284
  description: "Metadata: The localised app subtitle",
283
285
  optional: true,
284
286
  is_string: false,
287
+ type: Hash,
285
288
  verify_block: proc do |value|
286
289
  UI.user_error!(":subtitle must be a hash, with the language being the key") unless value.kind_of?(Hash)
287
290
  end),
@@ -289,6 +292,7 @@ module Deliver
289
292
  description: "Metadata: An array of localised keywords",
290
293
  optional: true,
291
294
  is_string: false,
295
+ type: Hash,
292
296
  verify_block: proc do |value|
293
297
  UI.user_error!(":keywords must be a hash, with the language being the key") unless value.kind_of?(Hash)
294
298
  value.each do |language, keywords|
@@ -303,6 +307,7 @@ module Deliver
303
307
  description: "Metadata: An array of localised promotional texts",
304
308
  optional: true,
305
309
  is_string: false,
310
+ type: Hash,
306
311
  verify_block: proc do |value|
307
312
  UI.user_error!(":keywords must be a hash, with the language being the key") unless value.kind_of?(Hash)
308
313
  end),
@@ -2,9 +2,17 @@ require 'fastlane_core'
2
2
 
3
3
  module Deliver
4
4
  class Setup
5
- def run(options)
5
+ attr_accessor :is_swift
6
+
7
+ def run(options, is_swift: false)
6
8
  containing = FastlaneCore::Helper.fastlane_enabled_folder_path
7
- file_path = File.join(containing, 'Deliverfile')
9
+ self.is_swift = is_swift
10
+
11
+ if is_swift
12
+ file_path = File.join(containing, 'Deliverfile.swift')
13
+ else
14
+ file_path = File.join(containing, 'Deliverfile')
15
+ end
8
16
  data = generate_deliver_file(containing, options)
9
17
  setup_deliver(file_path, data, containing, options)
10
18
  end
@@ -30,12 +38,20 @@ module Deliver
30
38
  generate_metadata_files(v, File.join(deliver_path, 'metadata'))
31
39
 
32
40
  # Generate the final Deliverfile here
33
- deliver = File.read("#{Deliver::ROOT}/lib/assets/DeliverfileDefault")
41
+ deliver = File.read(deliverfile_path)
34
42
  deliver.gsub!("[[APP_IDENTIFIER]]", options[:app].bundle_id)
35
43
  deliver.gsub!("[[USERNAME]]", Spaceship::Tunes.client.user)
36
44
  return deliver
37
45
  end
38
46
 
47
+ def deliverfile_path
48
+ if self.is_swift
49
+ return "#{Deliver::ROOT}/lib/assets/DeliverfileDefault.swift"
50
+ else
51
+ return "#{Deliver::ROOT}/lib/assets/DeliverfileDefault"
52
+ end
53
+ end
54
+
39
55
  def generate_metadata_files(v, path)
40
56
  app_details = v.application.details
41
57
 
@@ -0,0 +1,8 @@
1
+ var appIdentifier: String { return "[[APP_IDENTIFIER]]" } // The bundle identifier of your app
2
+ var appleID: String { return "[[APPLE_ID]]" } // Your Apple email address
3
+
4
+ var teamID: String { return "[[DEV_PORTAL_TEAM_ID]]" } // Developer Portal Team ID
5
+ var itcTeam: String? { return [[ITC_TEAM]] } // iTunes Connect Team ID (may be nil if no team)
6
+
7
+ // you can even provide different app identifiers, Apple IDs and team names per lane:
8
+ // More information: https://docs.fastlane.tools/advanced/#appfile
@@ -0,0 +1,72 @@
1
+ // Customize this file, documentation can be found here:
2
+ // https://docs.fastlane.tools/
3
+ // All available actions: https://docs.fastlane.tools/actions
4
+ // can also be listed using the `fastlane actions` command
5
+
6
+ // Change the syntax highlighting to Swift
7
+ // All lines starting with // are ignored when running `fastlane`
8
+
9
+ // If you want to automatically update fastlane if a new version is available:
10
+ // updateFastlane()
11
+
12
+ import Foundation
13
+
14
+ class Fastfile: LaneFile {
15
+ // This is the minimum version number required.
16
+ // Update this, if you use features of a newer version
17
+ var fastlaneVersion: String { return "[[FASTLANE_VERSION]]" }
18
+
19
+ func beforeAll() {
20
+ // environmentVariables["SLACK_URL"] = "https://hooks.slack.com/services/..."
21
+ cocoapods()
22
+ carthage()
23
+ }
24
+
25
+ func testLane() {
26
+ desc("Runs all the tests")
27
+ scan()
28
+ }
29
+
30
+ func betaLane() {
31
+ desc("Submit a new Beta Build to Apple TestFlight. This will also make sure the profile is up to date")
32
+
33
+ match(gitUrl: "gitUrl", appIdentifier: [appIdentifier], username: appleID)
34
+ // Build your app - more options available
35
+ gym([[SCHEME]])
36
+ pilot(username: appleID)
37
+ // You can also use other beta testing services here (run `fastlane actions`)
38
+ }
39
+
40
+ func releaseLane() {
41
+ desc("Deploy a new version to the App Store")
42
+
43
+ match(gitUrl: "gitUrl", type: "appstore", appIdentifier: [appIdentifier], username: appleID)
44
+ snapshot()
45
+ gym([[SCHEME]]) // Build your app - more options available
46
+ deliver(username: appleID, app: appIdentifier, force: true)
47
+ // frameit()
48
+ }
49
+
50
+ // You can define as many lanes as you want
51
+
52
+ func afterAll(currentLane: String) {
53
+ // This block is called, only if the executed lane was successful
54
+ // slack(
55
+ // message: "Successfully deployed new App Update.",
56
+ // slackUrl: "slackURL"
57
+ // )
58
+ }
59
+
60
+ func onError(currentLane: String, errorInfo: String) {
61
+ // slack(
62
+ // message: errorInfo,
63
+ // slackUrl: "slackUrl",
64
+ // success: false
65
+ // )
66
+ }
67
+
68
+ // All available actions: https://docs.fastlane.tools/actions
69
+
70
+ // fastlane reports which actions are used. No personal data is recorded.
71
+ // Learn more at https://github.com/fastlane/fastlane/#metrics
72
+ }
@@ -12,11 +12,17 @@ require 'fastlane/setup/setup'
12
12
  require 'fastlane/lane'
13
13
  require 'fastlane/junit_generator'
14
14
  require 'fastlane/lane_manager'
15
+ require 'fastlane/lane_manager_base'
16
+ require 'fastlane/swift_lane_manager'
15
17
  require 'fastlane/action'
16
18
  require 'fastlane/action_collector'
17
19
  require 'fastlane/supported_platforms'
18
20
  require 'fastlane/configuration_helper'
19
21
  require 'fastlane/one_off'
22
+ require 'fastlane/server/socket_server_action_command_executor'
23
+ require 'fastlane/server/command_executor'
24
+ require 'fastlane/server/command'
25
+ require 'fastlane/server/socket_server'
20
26
  require 'fastlane/command_line_handler'
21
27
  require 'fastlane/documentation/docs_generator'
22
28
  require 'fastlane/other_action'
Binary file
@@ -19,6 +19,14 @@ module Fastlane
19
19
  :deprecated # This should be the last item
20
20
  ]
21
21
 
22
+ RETURN_TYPES = [
23
+ :string,
24
+ :array_of_strings,
25
+ :hash_of_strings,
26
+ :bool,
27
+ :int
28
+ ]
29
+
22
30
  class << self
23
31
  attr_accessor :runner
24
32
 
@@ -57,6 +65,11 @@ module Fastlane
57
65
  nil
58
66
  end
59
67
 
68
+ def self.return_type
69
+ # Describes what type of data is expected to be returned, see RETURN_TYPES
70
+ nil
71
+ end
72
+
60
73
  def self.return_value
61
74
  # Describes what this method returns
62
75
  nil
@@ -64,6 +64,10 @@ module Fastlane
64
64
  "The output of the adb command"
65
65
  end
66
66
 
67
+ def self.return_type
68
+ :string
69
+ end
70
+
67
71
  def self.authors
68
72
  ["hjanuschka"]
69
73
  end
@@ -161,6 +161,7 @@ module Fastlane
161
161
  env_name: 'FL_APPIUM_CAPS',
162
162
  description: 'Hash of caps for Appium::Driver',
163
163
  is_string: false,
164
+ type: Hash,
164
165
  optional: true
165
166
  ),
166
167
  FastlaneCore::ConfigItem.new(
@@ -168,6 +169,7 @@ module Fastlane
168
169
  env_name: 'FL_APPIUM_LIB',
169
170
  description: 'Hash of appium_lib for Appium::Driver',
170
171
  is_string: false,
172
+ type: Hash,
171
173
  optional: true
172
174
  )
173
175
  ]
@@ -88,6 +88,7 @@ module Fastlane
88
88
  env_name: "FL_BUNDLE_INSTALL_JOBS",
89
89
  description: "Install gems using parallel workers",
90
90
  is_string: false,
91
+ type: Boolean,
91
92
  optional: true),
92
93
  FastlaneCore::ConfigItem.new(key: :local,
93
94
  env_name: "FL_BUNDLE_INSTALL_LOCAL",
@@ -127,6 +128,7 @@ module Fastlane
127
128
  env_name: "FL_BUNDLE_INSTALL_RETRY",
128
129
  description: "Retry network and git requests that have failed",
129
130
  is_string: false,
131
+ type: Boolean,
130
132
  optional: true),
131
133
  FastlaneCore::ConfigItem.new(key: :shebang,
132
134
  env_name: "FL_BUNDLE_INSTALL_SHEBANG",
@@ -73,42 +73,32 @@ module Fastlane
73
73
  env_name: "FL_CARTHAGE_USE_SSH",
74
74
  description: "Use SSH for downloading GitHub repositories",
75
75
  is_string: false,
76
- optional: true,
77
- verify_block: proc do |value|
78
- UI.user_error!("Please pass a valid value for use_ssh. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
79
- end),
76
+ type: Boolean,
77
+ optional: true),
80
78
  FastlaneCore::ConfigItem.new(key: :use_submodules,
81
79
  env_name: "FL_CARTHAGE_USE_SUBMODULES",
82
80
  description: "Add dependencies as Git submodules",
83
81
  is_string: false,
84
- optional: true,
85
- verify_block: proc do |value|
86
- UI.user_error!("Please pass a valid value for use_submodules. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
87
- end),
82
+ type: Boolean,
83
+ optional: true),
88
84
  FastlaneCore::ConfigItem.new(key: :use_binaries,
89
85
  env_name: "FL_CARTHAGE_USE_BINARIES",
90
86
  description: "Check out dependency repositories even when prebuilt frameworks exist",
91
87
  is_string: false,
92
- optional: true,
93
- verify_block: proc do |value|
94
- UI.user_error!("Please pass a valid value for use_binaries. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
95
- end),
88
+ type: Boolean,
89
+ optional: true),
96
90
  FastlaneCore::ConfigItem.new(key: :no_build,
97
91
  env_name: "FL_CARTHAGE_NO_BUILD",
98
92
  description: "When bootstrapping Carthage do not build",
99
93
  is_string: false,
100
- optional: true,
101
- verify_block: proc do |value|
102
- UI.user_error!("Please pass a valid value for no_build. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
103
- end),
94
+ type: Boolean,
95
+ optional: true),
104
96
  FastlaneCore::ConfigItem.new(key: :no_skip_current,
105
97
  env_name: "FL_CARTHAGE_NO_SKIP_CURRENT",
106
98
  description: "Don't skip building the Carthage project (in addition to its dependencies)",
107
99
  is_string: false,
108
- optional: true,
109
- verify_block: proc do |value|
110
- UI.user_error!("Please pass a valid value for no_skip_current. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
111
- end),
100
+ type: Boolean,
101
+ optional: true),
112
102
  FastlaneCore::ConfigItem.new(key: :derived_data,
113
103
  env_name: "FL_CARTHAGE_DERIVED_DATA",
114
104
  description: "Use derived data folder at path",
@@ -117,10 +107,8 @@ module Fastlane
117
107
  env_name: "FL_CARTHAGE_VERBOSE",
118
108
  description: "Print xcodebuild output inline",
119
109
  is_string: false,
120
- optional: true,
121
- verify_block: proc do |value|
122
- UI.user_error!("Please pass a valid value for verbose. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
123
- end),
110
+ type: Boolean,
111
+ optional: true),
124
112
  FastlaneCore::ConfigItem.new(key: :platform,
125
113
  env_name: "FL_CARTHAGE_PLATFORM",
126
114
  description: "Define which platform to build for",
@@ -115,6 +115,7 @@ module Fastlane
115
115
  description: "Whether or not to include any commits that are merges\n" + '(DEPRECATED - use :merge_commit_filtering)'.red,
116
116
  optional: true,
117
117
  is_string: false,
118
+ type: Boolean,
118
119
  verify_block: proc do |value|
119
120
  UI.important "The :include_merges option is deprecated. Please use :merge_commit_filtering instead" unless value.nil?
120
121
  end),
@@ -134,6 +135,10 @@ module Fastlane
134
135
  "Returns a String containing your formatted git commits"
135
136
  end
136
137
 
138
+ def self.return_type
139
+ :string
140
+ end
141
+
137
142
  def self.author
138
143
  ['mfurtak', 'asfalcone', 'SiarheiFedartsou', 'allewun']
139
144
  end
@@ -100,13 +100,14 @@ module Fastlane
100
100
  description: 'A callback invoked with the command output if there is a non-zero exit status',
101
101
  optional: true,
102
102
  is_string: false,
103
+ type: :string_callback,
103
104
  default_value: nil),
104
105
  FastlaneCore::ConfigItem.new(key: :try_repo_update_on_error,
105
106
  env_name: "FL_COCOAPODS_TRY_REPO_UPDATE_ON_ERROR",
106
107
  description: 'Retry with --repo-update if action was finished with error',
107
108
  optional: true,
108
109
  is_string: false,
109
- default_value: true,
110
+ type: Boolean,
110
111
  conflicting_options: [:repo_update])
111
112
  ]
112
113
  # Please don't add a version parameter to the `cocoapods` action. If you need to specify a version when running
@@ -142,6 +142,10 @@ module Fastlane
142
142
  ]
143
143
  end
144
144
 
145
+ def self.return_type
146
+ :hash_of_strings
147
+ end
148
+
145
149
  def self.return_value
146
150
  [
147
151
  "A hash containing all relevant information for this commit",
@@ -0,0 +1,73 @@
1
+ module Fastlane
2
+ module Actions
3
+ class EnvironmentVariableAction < Action
4
+ def self.run(params)
5
+ values_to_set = params[:set]
6
+ value_to_get = params[:get]
7
+ value_to_remove = params[:remove]
8
+
9
+ # clear out variables that were removed
10
+ ENV[value_to_remove] = nil unless value_to_remove.nil?
11
+
12
+ # if we have to set variables, do that now
13
+ unless values_to_set.nil?
14
+ values_to_set.each do |key, value|
15
+ ENV[key] = value
16
+ end
17
+ end
18
+
19
+ # finally, get the variable we requested
20
+ return ENV[value_to_get] unless value_to_get.nil?
21
+
22
+ # if no variable is requested, just return empty string
23
+ return ""
24
+ end
25
+
26
+ def self.author
27
+ "taquitos"
28
+ end
29
+
30
+ def self.available_options
31
+ [
32
+ FastlaneCore::ConfigItem.new(
33
+ key: :set,
34
+ env_name: 'FL_ENVIRONMENT_VARIABLE_SET',
35
+ description: 'Set the environment variables named',
36
+ optional: true,
37
+ type: Hash
38
+ ),
39
+ FastlaneCore::ConfigItem.new(
40
+ key: :get,
41
+ env_name: 'FL_ENVIRONMENT_VARIABLE_GET',
42
+ description: 'Get the environment variable named',
43
+ optional: true,
44
+ is_string: true
45
+ ),
46
+ FastlaneCore::ConfigItem.new(
47
+ key: :remove,
48
+ env_name: 'FL_ENVIRONMENT_VARIABLE_REMOVE',
49
+ description: 'Remove the environment variable named',
50
+ optional: true,
51
+ is_string: true
52
+ )
53
+ ]
54
+ end
55
+
56
+ def self.description
57
+ "Sets/gets env vars for Fastlane.swift. Don't use in ruby, use `ENV[key] = val`"
58
+ end
59
+
60
+ def self.category
61
+ :misc
62
+ end
63
+
64
+ def self.return_type
65
+ :string
66
+ end
67
+
68
+ def self.is_supported?(platform)
69
+ true
70
+ end
71
+ end
72
+ end
73
+ end