fastlane 1.49.0 → 1.50.0

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: f2c19482851fecde47475e7466ef2d2ec74468c0
4
- data.tar.gz: 749a46dd66b8207dc017c71158d413ab71ed7473
3
+ metadata.gz: b69af193f8f343d463084053f99cf7033fe950af
4
+ data.tar.gz: a7cdc51b53c41cc4417ae6ed04e109da631b9302
5
5
  SHA512:
6
- metadata.gz: 4e87b4d2b77f981983ea2e2837c663f2b392a8711915d4ae45848d33423b5821690701e2b24bd207c2a1e62f2caa7cad3a23cc9f36b064279c05ecf498ff58b7
7
- data.tar.gz: 9c095a74b24fbccca42445938d5901a7f6cfb52b6661e0abfb204903714036aa5a61e94d22ca7a10a6ee5d78e89412f9aeb8333183ea12955eb561dcd5c57e72
6
+ metadata.gz: 7e0d1526fe9adbc0613d598579dd90649d3464174f45b81789ee9a0f4823329f107239b8949fcf8cc4e375b505e69a865d8fd6019f1a89f995126195ea520fac
7
+ data.tar.gz: ea78c80e80f86407e82bc20abb3af414346bd4955537f0d229368be82776b781cfc7d4e3910b2918b2b94637158ff1b1d8c5d3cfd2178ace5fe1df22d933a6e2
data/README.md CHANGED
@@ -21,14 +21,14 @@
21
21
  fastlane
22
22
  ============
23
23
 
24
- [![Twitter: @KauseFx](https://img.shields.io/badge/contact-@KrauseFx-blue.svg?style=flat)](https://twitter.com/KrauseFx)
24
+ [![Twitter: @KauseFx](https://img.shields.io/badge/contact-@FastlaneTools-blue.svg?style=flat)](https://twitter.com/FastlaneTools)
25
25
  [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/LICENSE)
26
26
  [![Gem](https://img.shields.io/gem/v/fastlane.svg?style=flat)](http://rubygems.org/gems/fastlane)
27
27
  [![Build Status](https://img.shields.io/travis/fastlane/fastlane/master.svg?style=flat)](https://travis-ci.org/fastlane/fastlane)
28
28
 
29
29
  ######*fastlane* lets you define and run your deployment pipelines for different environments. It helps you unify your apps release process and automate the whole process. fastlane connects all fastlane tools and third party tools, like [CocoaPods](https://cocoapods.org/) and [Slack](https://slack.com).
30
30
 
31
- Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx)
31
+ Get in contact with the developer on Twitter: [@FastlaneTools](https://twitter.com/FastlaneTools)
32
32
 
33
33
  -------
34
34
  <p align="center">
@@ -20,7 +20,7 @@ class FastlaneApplication
20
20
  "\tTo pass values to the lanes use `fastlane [platform] [lane_name] key:value key2:value2`"].join("\n")
21
21
  program :help, 'Author', 'Felix Krause <fastlane@krausefx.com>'
22
22
  program :help, 'Website', 'https://fastlane.tools'
23
- program :help, 'GitHub', 'https://github.com/krausefx/fastlane'
23
+ program :help, 'GitHub', 'https://github.com/fastlane/fastlane'
24
24
  program :help_formatter, :compact
25
25
 
26
26
  global_option('--verbose') { $verbose = true }
@@ -11,4 +11,4 @@ apple_id "[[APPLE_ID]]" # Your Apple email address
11
11
  # itc_team_id "18742801
12
12
 
13
13
  # you can even provide different app identifiers, Apple IDs and team names per lane:
14
- # https://github.com/KrauseFx/fastlane/blob/master/docs/Appfile.md
14
+ # https://github.com/fastlane/fastlane/blob/master/docs/Appfile.md
@@ -1,6 +1,6 @@
1
1
  # Customise this file, documentation can be found here:
2
- # https://github.com/KrauseFx/fastlane/tree/master/docs
3
- # All available actions: https://github.com/KrauseFx/fastlane/blob/master/docs/Actions.md
2
+ # https://github.com/fastlane/fastlane/tree/master/docs
3
+ # All available actions: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md
4
4
  # can also be listed using the `fastlane actions` command
5
5
 
6
6
  # Change the syntax highlighting to Ruby
@@ -76,5 +76,5 @@ end
76
76
 
77
77
 
78
78
 
79
- # More information about multiple platforms in fastlane: https://github.com/KrauseFx/fastlane/blob/master/docs/Platforms.md
80
- # All available actions: https://github.com/KrauseFx/fastlane/blob/master/docs/Actions.md
79
+ # More information about multiple platforms in fastlane: https://github.com/fastlane/fastlane/blob/master/docs/Platforms.md
80
+ # All available actions: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md
@@ -1,6 +1,6 @@
1
1
  # Customise this file, documentation can be found here:
2
- # https://github.com/KrauseFx/fastlane/tree/master/docs
3
- # All available actions: https://github.com/KrauseFx/fastlane/blob/master/docs/Actions.md
2
+ # https://github.com/fastlane/fastlane/tree/master/docs
3
+ # All available actions: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md
4
4
  # can also be listed using the `fastlane actions` command
5
5
 
6
6
  # Change the syntax highlighting to Ruby
@@ -64,5 +64,5 @@ platform :android do
64
64
  end
65
65
 
66
66
 
67
- # More information about multiple platforms in fastlane: https://github.com/KrauseFx/fastlane/blob/master/docs/Platforms.md
68
- # All available actions: https://github.com/KrauseFx/fastlane/blob/master/docs/Actions.md
67
+ # More information about multiple platforms in fastlane: https://github.com/fastlane/fastlane/blob/master/docs/Platforms.md
68
+ # All available actions: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md
@@ -5,7 +5,7 @@ module Fastlane
5
5
  end
6
6
 
7
7
  # To share this integration with the other fastlane users:
8
- # - Fork https://github.com/KrauseFx/fastlane
8
+ # - Fork https://github.com/fastlane/fastlane
9
9
  # - Clone the forked repository
10
10
  # - Move this integration into lib/fastlane/actions
11
11
  # - Commit, push and submit the pull request
@@ -92,13 +92,13 @@ module Fastlane
92
92
  Helper.log.info "Successfully loaded custom action '#{file}'.".green
93
93
  else
94
94
  Helper.log.error "Could not find method 'run' in class #{class_name}.".red
95
- Helper.log.error 'For more information, check out the docs: https://github.com/KrauseFx/fastlane'
95
+ Helper.log.error 'For more information, check out the docs: https://github.com/fastlane/fastlane'
96
96
  raise "Plugin '#{file_name}' is damaged!"
97
97
  end
98
98
  rescue NameError
99
99
  # Action not found
100
100
  Helper.log.error "Could not find '#{class_name}' class defined.".red
101
- Helper.log.error 'For more information, check out the docs: https://github.com/KrauseFx/fastlane'
101
+ Helper.log.error 'For more information, check out the docs: https://github.com/fastlane/fastlane'
102
102
  raise "Plugin '#{file_name}' is damaged!"
103
103
  end
104
104
  end
@@ -16,7 +16,7 @@ module Fastlane
16
16
 
17
17
  Helper.log.info "Collecting Git commits between #{from} and #{to}".green
18
18
 
19
- changelog = Actions.git_log_between(params[:pretty], from, to)
19
+ changelog = Actions.git_log_between(params[:pretty], from, to, params[:include_merges])
20
20
  changelog = changelog.gsub("\n\n", "\n") if changelog # as there are duplicate newlines
21
21
  Actions.lane_context[SharedValues::FL_CHANGELOG] = changelog
22
22
 
@@ -61,6 +61,12 @@ module Fastlane
61
61
  description: 'Whether or not to match a lightweight tag when searching for the last one',
62
62
  optional: true,
63
63
  default_value: true,
64
+ is_string: false),
65
+ FastlaneCore::ConfigItem.new(key: :include_merges,
66
+ env_name: 'FL_CHANGELOG_FROM_GIT_COMMITS_INCLUDE_MERGES',
67
+ description: 'Whether or not to include any commits that are merges',
68
+ optional: true,
69
+ default_value: true,
64
70
  is_string: false)
65
71
  ]
66
72
  end
@@ -54,7 +54,7 @@ module Fastlane
54
54
  {"url"=>"https://api.github.com/repos/KrauseFx/fastlane/releases/1537713",
55
55
  "assets_url"=>"https://api.github.com/repos/KrauseFx/fastlane/releases/1537713/assets",
56
56
  "upload_url"=>"https://uploads.github.com/repos/KrauseFx/fastlane/releases/1537713/assets{?name}",
57
- "html_url"=>"https://github.com/KrauseFx/fastlane/releases/tag/1.8.0",
57
+ "html_url"=>"https://github.com/fastlane/fastlane/releases/tag/1.8.0",
58
58
  "id"=>1537713,
59
59
  "tag_name"=>"1.8.0",
60
60
  "target_commitish"=>"master",
@@ -66,7 +66,7 @@ module Fastlane
66
66
  "avatar_url"=>"https://avatars.githubusercontent.com/u/869950?v=3",
67
67
  "gravatar_id"=>"",
68
68
  "url"=>"https://api.github.com/users/KrauseFx",
69
- "html_url"=>"https://github.com/KrauseFx",
69
+ "html_url"=>"https://github.com/fastlane",
70
70
  "followers_url"=>"https://api.github.com/users/KrauseFx/followers",
71
71
  "following_url"=>"https://api.github.com/users/KrauseFx/following{/other_user}",
72
72
  "gists_url"=>"https://api.github.com/users/KrauseFx/gists{/gist_id}",
@@ -0,0 +1,67 @@
1
+ module Fastlane
2
+ module Actions
3
+ module SharedValues
4
+ GET_IPA_INFO_PLIST_VALUE_CUSTOM_VALUE = :GET_IPA_INFO_PLIST_VALUE_CUSTOM_VALUE
5
+ end
6
+
7
+ class GetIpaInfoPlistValueAction < Action
8
+ def self.run(params)
9
+ ipa = File.expand_path(params[:ipa])
10
+ key = params[:key]
11
+ plist = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(ipa)
12
+ value = plist[key]
13
+
14
+ Actions.lane_context[SharedValues::GET_IPA_INFO_PLIST_VALUE_CUSTOM_VALUE] = value
15
+
16
+ return value
17
+ rescue => ex
18
+ Helper.log.error ex
19
+ Helper.log.error "Unable to find plist file at '#{ipa}'".red
20
+ end
21
+
22
+ #####################################################
23
+ # @!group Documentation
24
+ #####################################################
25
+
26
+ def self.description
27
+ "Returns a value from Info.plist inside a .ipa file"
28
+ end
29
+
30
+ def self.details
31
+ "This is useful for introspecting Info.plist files for .ipa files that have already been built."
32
+ end
33
+
34
+ def self.available_options
35
+ [
36
+ FastlaneCore::ConfigItem.new(key: :key,
37
+ env_name: "FL_GET_IPA_INFO_PLIST_VALUE_KEY",
38
+ description: "Name of parameter",
39
+ optional: false),
40
+ FastlaneCore::ConfigItem.new(key: :ipa,
41
+ env_name: "FL_GET_IPA_INFO_PLIST_VALUE_IPA",
42
+ description: "Path to IPA",
43
+ is_string: true,
44
+ default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH])
45
+ ]
46
+ end
47
+
48
+ def self.output
49
+ [
50
+ ['GET_IPA_INFO_PLIST_VALUE_CUSTOM_VALUE', 'The value of the last plist file that was parsed']
51
+ ]
52
+ end
53
+
54
+ def self.return_value
55
+ "Returns the value in the .ipa's Info.plist corresponding to the passed in Key"
56
+ end
57
+
58
+ def self.authors
59
+ ["johnboiles"]
60
+ end
61
+
62
+ def self.is_supported?(platform)
63
+ [:ios, :mac].include?(platform)
64
+ end
65
+ end
66
+ end
67
+ end
@@ -2,9 +2,13 @@ module Fastlane
2
2
  module Actions
3
3
  class InstallXcodePluginAction < Action
4
4
  def self.run(params)
5
+ require 'fileutils'
6
+
5
7
  zip_path = File.join(Dir.tmpdir, 'plugin.zip')
6
8
  sh "curl -Lso #{zip_path} #{params[:url]}"
7
- Action.sh "unzip -qo '#{zip_path}' -d '#{ENV['HOME']}/Library/Application Support/Developer/Shared/Xcode/Plug-ins'"
9
+ plugins_path = "#{ENV['HOME']}/Library/Application Support/Developer/Shared/Xcode/Plug-ins"
10
+ FileUtils.mkdir_p(plugins_path)
11
+ Action.sh "unzip -qo '#{zip_path}' -d '#{plugins_path}'"
8
12
 
9
13
  Helper.log.info("Plugin #{File.basename(params[:url], '.zip')} installed successfully".green)
10
14
  Helper.log.info("Please restart Xcode to use the newly installed plugin")
@@ -10,6 +10,7 @@ module Fastlane
10
10
 
11
11
  def self.run(options)
12
12
  Actions.verify_gem!('rest-client')
13
+ require 'rest-client'
13
14
  handle_params_transition(options)
14
15
  mailgunit(options)
15
16
  end
@@ -107,7 +107,12 @@ module Fastlane
107
107
  #####################################
108
108
 
109
109
  # Gets info used for the plist
110
- bundle_id, bundle_version, title, full_version = get_ipa_info(ipa_file)
110
+ info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(ipa_file)
111
+
112
+ bundle_id = info['CFBundleIdentifier']
113
+ bundle_version = info['CFBundleShortVersionString']
114
+ title = info['CFBundleName']
115
+ full_version = "#{bundle_version}.#{info['CFBundleVersion']}"
111
116
 
112
117
  # Creating plist and html names
113
118
  plist_file_name = "#{url_part}#{title.delete(' ')}.plist"
@@ -240,39 +245,17 @@ module Fastlane
240
245
  def self.expand_path_with_substitutions_from_ipa_plist(ipa, path)
241
246
  substitutions = path.scan(/\{CFBundle[^}]+\}/)
242
247
  return path if substitutions.empty?
248
+ info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(ipa) or return path
243
249
 
244
- Dir.mktmpdir do |dir|
245
- system "unzip -q #{ipa} -d #{dir} 2> /dev/null"
246
-
247
- plist = Dir["#{dir}/**/*.app/Info.plist"].last
248
-
249
- substitutions.uniq.each do |substitution|
250
- key = substitution[1...-1]
251
- value = Shenzhen::PlistBuddy.print(plist, key)
252
-
253
- path.gsub!(Regexp.new(substitution), value) if value
254
- end
250
+ substitutions.uniq.each do |substitution|
251
+ key = substitution[1...-1]
252
+ value = info[key]
253
+ path.gsub!(Regexp.new(substitution), value) if value
255
254
  end
256
255
 
257
256
  return path
258
257
  end
259
258
 
260
- def self.get_ipa_info(ipa_file)
261
- bundle_id, bundle_version, title, full_version = nil
262
- Dir.mktmpdir do |dir|
263
- system "unzip -q #{ipa_file} -d #{dir} 2> /dev/null"
264
- plist = Dir["#{dir}/**/*.app/Info.plist"].last
265
-
266
- bundle_id = Shenzhen::PlistBuddy.print(plist, 'CFBundleIdentifier')
267
- bundle_version = Shenzhen::PlistBuddy.print(plist, 'CFBundleShortVersionString')
268
- title = Shenzhen::PlistBuddy.print(plist, 'CFBundleName')
269
-
270
- # This is the string: {CFBundleShortVersionString}.{CFBundleVersion}
271
- full_version = bundle_version + '.' + Shenzhen::PlistBuddy.print(plist, 'CFBundleVersion')
272
- end
273
- return bundle_id, bundle_version, title, full_version
274
- end
275
-
276
259
  def self.description
277
260
  "Generates a plist file and uploads all to AWS S3"
278
261
  end
@@ -171,10 +171,10 @@ module Fastlane
171
171
  [
172
172
  FastlaneCore::ConfigItem.new(key: :repository_name,
173
173
  env_name: "FL_SET_GITHUB_RELEASE_REPOSITORY_NAME",
174
- description: "The path to your repo, e.g. 'KrauseFx/fastlane'",
174
+ description: "The path to your repo, e.g. 'fastlane/fastlane'",
175
175
  verify_block: proc do |value|
176
- raise "Please only pass the path, e.g. 'KrauseFx/fastlane'".red if value.include? "github.com"
177
- raise "Please only pass the path, e.g. 'KrauseFx/fastlane'".red if value.split('/').count != 2
176
+ raise "Please only pass the path, e.g. 'fastlane/fastlane'".red if value.include? "github.com"
177
+ raise "Please only pass the path, e.g. 'fastlane/fastlane'".red if value.split('/').count != 2
178
178
  end),
179
179
  FastlaneCore::ConfigItem.new(key: :api_token,
180
180
  env_name: "FL_GITHUB_RELEASE_API_TOKEN",
@@ -7,6 +7,7 @@ module Fastlane
7
7
  end
8
8
 
9
9
  command = 'swiftlint lint'
10
+ command << " --strict" if params[:strict]
10
11
  command << " --config #{params[:config_file]}" if params[:config_file]
11
12
  command << " > #{params[:output_file]}" if params[:output_file]
12
13
  Actions.sh(command)
@@ -30,6 +31,11 @@ module Fastlane
30
31
  optional: true),
31
32
  FastlaneCore::ConfigItem.new(key: :config_file,
32
33
  description: 'Custom configuration file of SwiftLint',
34
+ optional: true),
35
+ FastlaneCore::ConfigItem.new(key: :strict,
36
+ description: 'Fail on warnings? (true/false)',
37
+ default_value: false,
38
+ is_string: false,
33
39
  optional: true)
34
40
  ]
35
41
  end
@@ -0,0 +1,89 @@
1
+ module Fastlane
2
+ module Actions
3
+ module SharedValues
4
+ TESTFAIRY_BUILD_URL = :TESTFAIRY_BUILD_URL
5
+ end
6
+
7
+ class TestfairyAction < Action
8
+ def self.run(params)
9
+ require 'shenzhen'
10
+ require 'shenzhen/plugins/testfairy'
11
+
12
+ Helper.log.info 'Starting with ipa upload to TestFairy...'.green
13
+
14
+ client = Shenzhen::Plugins::TestFairy::Client.new(
15
+ params[:api_key]
16
+ )
17
+
18
+ return params[:ipa] if Helper.test?
19
+
20
+ response = client.upload_build(params[:ipa], params.values)
21
+ if parse_response(response)
22
+ Helper.log.info "Build URL: #{Actions.lane_context[SharedValues::TESTFAIRY_BUILD_URL]}".green
23
+ Helper.log.info "Build successfully uploaded to TestFairy.".green
24
+ else
25
+ raise 'Error when trying to upload ipa to TestFairy'.red
26
+ end
27
+ end
28
+
29
+ #####################################################
30
+ # @!group Documentation
31
+ #####################################################
32
+
33
+ def self.parse_response(response)
34
+ if response.body && response.body.key?('status') && response.body['status'] == 'ok'
35
+ build_url = response.body['build_url']
36
+
37
+ Actions.lane_context[SharedValues::TESTFAIRY_BUILD_URL] = build_url
38
+
39
+ return true
40
+ else
41
+ Helper.log.fatal "Error uploading to TestFairy: #{response.body}".red
42
+
43
+ return false
44
+ end
45
+ end
46
+ private_class_method :parse_response
47
+
48
+ def self.description
49
+ 'Upload a new build to TestFairy'
50
+ end
51
+
52
+ def self.available_options
53
+ [
54
+ FastlaneCore::ConfigItem.new(key: :api_key,
55
+ env_name: "FL_TESTFAIRY_API_KEY", # The name of the environment variable
56
+ description: "API Key for TestFairy", # a short description of this parameter
57
+ verify_block: proc do |value|
58
+ raise "No API key for TestFairy given, pass using `api_key: 'key'`".red unless value.to_s.length > 0
59
+ end),
60
+ FastlaneCore::ConfigItem.new(key: :ipa,
61
+ env_name: 'TESTFAIRY_IPA_PATH',
62
+ description: 'Path to your IPA file. Optional if you use the `gym` or `xcodebuild` action',
63
+ default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH],
64
+ verify_block: proc do |value|
65
+ raise "Couldn't find ipa file at path '#{value}'".red unless File.exist?(value)
66
+ end),
67
+ FastlaneCore::ConfigItem.new(key: :comment,
68
+ env_name: "FL_TESTFAIRY_COMMENT",
69
+ description: "Additional release notes for this upload. This text will be added to email notifications",
70
+ default_value: 'No comment provided') # the default value if the user didn't provide one
71
+ ]
72
+ end
73
+
74
+ def self.output
75
+ [
76
+ ['TESTFAIRY_BUILD_URL', 'URL of the newly uploaded build']
77
+ ]
78
+ end
79
+
80
+ def self.authors
81
+ ["taka0125"]
82
+ end
83
+
84
+ def self.is_supported?(platform)
85
+ platform == :ios
86
+ end
87
+ end
88
+ end
89
+ end
@@ -4,20 +4,24 @@ module Fastlane
4
4
  def self.run(params)
5
5
  keychain_path = self.expand_keychain_path(params[:path])
6
6
  add_to_search_list = params[:add_to_search_list]
7
+ set_default = params[:set_default]
8
+ commands = []
7
9
 
8
- if keychain_path.empty?
9
- raise "Could not find the keychain file: #{keychain_path}".red
10
+ # add to search list if not already added
11
+ if add_to_search_list == true || add_to_search_list == :add
12
+ commands << add_keychain_to_search_list(keychain_path)
13
+ elsif add_to_search_list == :replace
14
+ commands << replace_keychain_in_search_list(keychain_path)
10
15
  end
11
16
 
12
- # add to search list if not already added
13
- if add_to_search_list
14
- add_keychain_to_search_list(keychain_path)
17
+ # set default keychain
18
+ if set_default
19
+ commands << default_keychain(keychain_path)
15
20
  end
16
21
 
17
22
  escaped_path = keychain_path.shellescape
18
23
  escaped_password = params[:password].shellescape
19
24
 
20
- commands = []
21
25
  # unlock given keychain and disable lock and timeout
22
26
  commands << Fastlane::Actions.sh("security unlock-keychain -p #{escaped_password} #{escaped_path}", log: false)
23
27
  commands << Fastlane::Actions.sh("security set-keychain-settings #{escaped_path}", log: false)
@@ -31,12 +35,21 @@ module Fastlane
31
35
  unless keychains.include?(keychain_path)
32
36
  keychains << keychain_path
33
37
 
34
- commands = []
35
- commands << Fastlane::Actions.sh("security list-keychains -s #{keychains.shelljoin}", log: false)
36
- commands
38
+ Fastlane::Actions.sh("security list-keychains -s #{keychains.shelljoin}", log: false)
37
39
  end
38
40
  end
39
41
 
42
+ def self.replace_keychain_in_search_list(keychain_path)
43
+ Actions.lane_context[Actions::SharedValues::ORIGINAL_DEFAULT_KEYCHAIN] = Fastlane::Actions.sh("security default-keychain", log: false).strip
44
+ escaped_path = keychain_path.shellescape
45
+ Fastlane::Actions.sh("security list-keychains -s #{escaped_path}", log: false)
46
+ end
47
+
48
+ def self.default_keychain(keychain_path)
49
+ escaped_path = keychain_path.shellescape
50
+ Fastlane::Actions.sh("security default-keychain -s #{escaped_path}", log: false)
51
+ end
52
+
40
53
  def self.expand_keychain_path(keychain_path)
41
54
  possible_locations = []
42
55
  possible_locations << keychain_path
@@ -50,7 +63,7 @@ module Fastlane
50
63
  end
51
64
  end
52
65
 
53
- return ""
66
+ raise "Could not find the keychain file in: #{possible_locations}".red
54
67
  end
55
68
 
56
69
  #####################################################
@@ -62,7 +75,8 @@ module Fastlane
62
75
  end
63
76
 
64
77
  def self.details
65
- "Unlocks the give keychain file and adds it to the keychain search list"
78
+ "Unlocks the give keychain file and adds it to the keychain search list\n" \
79
+ "Keychains can be replaced with `add_to_search_list: :replace`"
66
80
  end
67
81
 
68
82
  def self.available_options
@@ -79,7 +93,12 @@ module Fastlane
79
93
  env_name: "FL_UNLOCK_KEYCHAIN_ADD_TO_SEARCH_LIST",
80
94
  description: "Add to keychain search list",
81
95
  is_string: false,
82
- default_value: true)
96
+ default_value: true),
97
+ FastlaneCore::ConfigItem.new(key: :set_default,
98
+ env_name: "FL_UNLOCK_KEYCHAIN_SET_DEFAULT",
99
+ description: "Set as default keychain",
100
+ is_string: false,
101
+ default_value: false)
83
102
 
84
103
  ]
85
104
  end
@@ -7,7 +7,7 @@ module Fastlane
7
7
  def self.run(params)
8
8
  Helper.log.info "You shouldn't use update_project_code_signing"
9
9
  Helper.log.info "Have you considered using the recommended way to do code sining?"
10
- Helper.log.info "https://github.com/KrauseFx/fastlane/blob/master/docs/CodeSigning.md"
10
+ Helper.log.info "https://github.com/fastlane/fastlane/blob/master/docs/CodeSigning.md"
11
11
 
12
12
  path = params[:path]
13
13
  path = File.join(path, "project.pbxproj")
@@ -8,7 +8,7 @@ module Fastlane
8
8
  ROOT_CERTIFICATE_URL = "http://www.apple.com/appleca/AppleIncRootCertificate.cer"
9
9
  def self.run(params)
10
10
  Helper.log.info "You’re updating provisioning profiles directly in your project, but have you considered easier ways to do code signing?"
11
- Helper.log.info "https://github.com/KrauseFx/fastlane/blob/master/docs/CodeSigning.md"
11
+ Helper.log.info "https://github.com/fastlane/fastlane/blob/master/docs/CodeSigning.md"
12
12
 
13
13
  # assign folder from parameter or search for xcodeproj file
14
14
  folder = params[:xcodeproj] || Dir["*.xcodeproj"].first
@@ -123,7 +123,7 @@ module Fastlane
123
123
  end
124
124
 
125
125
  def fetch_integrations(bot_id)
126
- response = get_endpoint("/bots/#{bot_id}/integrations?limit=10")
126
+ response = get_endpoint("/bots/#{bot_id}/integrations?last=10")
127
127
  raise "Failed to fetch Integrations for Bot #{bot_id} from Xcode Server at #{@host}, response: #{response.status}: #{response.body}".red if response.status != 200
128
128
  JSON.parse(response.body)['results']
129
129
  end
@@ -312,7 +312,7 @@ module Fastlane
312
312
  end
313
313
 
314
314
  def self.details
315
- "More information on GitHub: https://github.com/KrauseFx/fastlane/blob/master/docs/Actions.md#xcodebuild"
315
+ "More information on GitHub: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md#xcodebuild"
316
316
  end
317
317
 
318
318
  def self.author
@@ -19,7 +19,7 @@ module Fastlane
19
19
  def self.details
20
20
  [
21
21
  "It is recommended to store the build configuration in the `.xctool-args` file.",
22
- "More information available on GitHub: https://github.com/KrauseFx/fastlane/blob/master/docs/Actions.md#xctool"
22
+ "More information available on GitHub: https://github.com/fastlane/fastlane/blob/master/docs/Actions.md#xctool"
23
23
  ].join(' ')
24
24
  end
25
25
 
@@ -114,7 +114,7 @@ module Fastlane
114
114
  puts ""
115
115
  end
116
116
 
117
- puts "More information can be found on https://github.com/KrauseFx/fastlane/blob/master/docs/Actions.md"
117
+ puts "More information can be found on https://github.com/fastlane/fastlane/blob/master/docs/Actions.md"
118
118
  puts "\n"
119
119
 
120
120
  return # our job is done here
@@ -32,7 +32,7 @@ module Fastlane
32
32
 
33
33
  output << "Generate this documentation by running `fastlane docs`"
34
34
  output << "More information about fastlane can be found on [https://fastlane.tools](https://fastlane.tools)."
35
- output << "The documentation of fastlane can be found on [GitHub](https://github.com/KrauseFx/fastlane)"
35
+ output << "The documentation of fastlane can be found on [GitHub](https://github.com/fastlane/fastlane)"
36
36
 
37
37
  File.write(output_path, output.join("\n"))
38
38
  Helper.log.info "Successfully generated documentation to path '#{File.expand_path(output_path)}'".green
@@ -5,6 +5,8 @@ module Fastlane
5
5
  def self.verify_gem!(gem_name)
6
6
  begin
7
7
  Gem::Specification.find_by_name(gem_name)
8
+ # We don't import this by default, as it's not always the same
9
+ # also e.g. cocoapods is just required and not imported
8
10
  rescue Gem::LoadError
9
11
  print_gem_error "Could not find gem '#{gem_name}'"
10
12
  print_gem_error ""
@@ -1,7 +1,10 @@
1
1
  module Fastlane
2
2
  module Actions
3
- def self.git_log_between(pretty_format, from, to)
4
- Actions.sh("git log --pretty=\"#{pretty_format}\" #{from.shellescape}...#{to.shellescape}", log: false).chomp
3
+ def self.git_log_between(pretty_format, from, to, include_merges)
4
+ command = 'git log'
5
+ command << " --pretty=\"#{pretty_format}\" #{from.shellescape}...#{to.shellescape}"
6
+ command << " --no-merges" unless include_merges
7
+ Actions.sh(command, log: false).chomp
5
8
  rescue
6
9
  nil
7
10
  end
@@ -9,7 +12,7 @@ module Fastlane
9
12
  def self.last_git_tag_name(match_lightweight = true)
10
13
  command = ['git describe']
11
14
  command << '--tags' if match_lightweight
12
- command << '--abbrev=0'
15
+ command << '`git rev-list --tags --max-count=1`'
13
16
  Actions.sh(command.join(' '), log: false).chomp
14
17
  rescue
15
18
  nil
@@ -114,7 +114,7 @@ module Fastlane
114
114
  else
115
115
  # No action and no lane, raising an exception now
116
116
  Helper.log.error caller.join("\n")
117
- raise "Could not find action or lane '#{new_lane}'. Check out the README for more details: https://github.com/KrauseFx/fastlane".red
117
+ raise "Could not find action or lane '#{new_lane}'. Check out the README for more details: https://github.com/fastlane/fastlane".red
118
118
  end
119
119
  end
120
120
 
@@ -1,3 +1,3 @@
1
1
  module Fastlane
2
- VERSION = '1.49.0'
2
+ VERSION = '1.50.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.49.0
4
+ version: 1.50.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-29 00:00:00.000000000 Z
11
+ date: 2016-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: krausefx-shenzhen
@@ -148,7 +148,7 @@ dependencies:
148
148
  requirements:
149
149
  - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: 0.31.0
151
+ version: 0.32.1
152
152
  - - "<"
153
153
  - !ruby/object:Gem::Version
154
154
  version: 1.0.0
@@ -158,7 +158,7 @@ dependencies:
158
158
  requirements:
159
159
  - - ">="
160
160
  - !ruby/object:Gem::Version
161
- version: 0.31.0
161
+ version: 0.32.1
162
162
  - - "<"
163
163
  - !ruby/object:Gem::Version
164
164
  version: 1.0.0
@@ -168,7 +168,7 @@ dependencies:
168
168
  requirements:
169
169
  - - ">="
170
170
  - !ruby/object:Gem::Version
171
- version: 0.13.0
171
+ version: 0.14.0
172
172
  - - "<"
173
173
  - !ruby/object:Gem::Version
174
174
  version: 1.0.0
@@ -178,7 +178,7 @@ dependencies:
178
178
  requirements:
179
179
  - - ">="
180
180
  - !ruby/object:Gem::Version
181
- version: 0.13.0
181
+ version: 0.14.0
182
182
  - - "<"
183
183
  - !ruby/object:Gem::Version
184
184
  version: 1.0.0
@@ -188,7 +188,7 @@ dependencies:
188
188
  requirements:
189
189
  - - ">="
190
190
  - !ruby/object:Gem::Version
191
- version: 0.18.1
191
+ version: 0.19.0
192
192
  - - "<"
193
193
  - !ruby/object:Gem::Version
194
194
  version: 1.0.0
@@ -198,7 +198,7 @@ dependencies:
198
198
  requirements:
199
199
  - - ">="
200
200
  - !ruby/object:Gem::Version
201
- version: 0.18.1
201
+ version: 0.19.0
202
202
  - - "<"
203
203
  - !ruby/object:Gem::Version
204
204
  version: 1.0.0
@@ -208,7 +208,7 @@ dependencies:
208
208
  requirements:
209
209
  - - ">="
210
210
  - !ruby/object:Gem::Version
211
- version: 1.6.5
211
+ version: 1.7.0
212
212
  - - "<"
213
213
  - !ruby/object:Gem::Version
214
214
  version: 2.0.0
@@ -218,7 +218,7 @@ dependencies:
218
218
  requirements:
219
219
  - - ">="
220
220
  - !ruby/object:Gem::Version
221
- version: 1.6.5
221
+ version: 1.7.0
222
222
  - - "<"
223
223
  - !ruby/object:Gem::Version
224
224
  version: 2.0.0
@@ -228,7 +228,7 @@ dependencies:
228
228
  requirements:
229
229
  - - ">="
230
230
  - !ruby/object:Gem::Version
231
- version: 1.4.2
231
+ version: 1.4.4
232
232
  - - "<"
233
233
  - !ruby/object:Gem::Version
234
234
  version: 2.0.0
@@ -238,7 +238,7 @@ dependencies:
238
238
  requirements:
239
239
  - - ">="
240
240
  - !ruby/object:Gem::Version
241
- version: 1.4.2
241
+ version: 1.4.4
242
242
  - - "<"
243
243
  - !ruby/object:Gem::Version
244
244
  version: 2.0.0
@@ -308,7 +308,7 @@ dependencies:
308
308
  requirements:
309
309
  - - ">="
310
310
  - !ruby/object:Gem::Version
311
- version: 1.2.1
311
+ version: 1.2.2
312
312
  - - "<"
313
313
  - !ruby/object:Gem::Version
314
314
  version: 2.0.0
@@ -318,7 +318,7 @@ dependencies:
318
318
  requirements:
319
319
  - - ">="
320
320
  - !ruby/object:Gem::Version
321
- version: 1.2.1
321
+ version: 1.2.2
322
322
  - - "<"
323
323
  - !ruby/object:Gem::Version
324
324
  version: 2.0.0
@@ -348,7 +348,7 @@ dependencies:
348
348
  requirements:
349
349
  - - ">="
350
350
  - !ruby/object:Gem::Version
351
- version: 1.1.6
351
+ version: 1.4.0
352
352
  - - "<"
353
353
  - !ruby/object:Gem::Version
354
354
  version: 2.0.0
@@ -358,7 +358,7 @@ dependencies:
358
358
  requirements:
359
359
  - - ">="
360
360
  - !ruby/object:Gem::Version
361
- version: 1.1.6
361
+ version: 1.4.0
362
362
  - - "<"
363
363
  - !ruby/object:Gem::Version
364
364
  version: 2.0.0
@@ -388,7 +388,7 @@ dependencies:
388
388
  requirements:
389
389
  - - ">="
390
390
  - !ruby/object:Gem::Version
391
- version: 0.2.2
391
+ version: 0.3.0
392
392
  - - "<"
393
393
  - !ruby/object:Gem::Version
394
394
  version: 1.0.0
@@ -398,7 +398,7 @@ dependencies:
398
398
  requirements:
399
399
  - - ">="
400
400
  - !ruby/object:Gem::Version
401
- version: 0.2.2
401
+ version: 0.3.0
402
402
  - - "<"
403
403
  - !ruby/object:Gem::Version
404
404
  version: 1.0.0
@@ -408,7 +408,7 @@ dependencies:
408
408
  requirements:
409
409
  - - ">="
410
410
  - !ruby/object:Gem::Version
411
- version: 0.3.3
411
+ version: 0.4.1
412
412
  - - "<"
413
413
  - !ruby/object:Gem::Version
414
414
  version: 1.0.0
@@ -418,7 +418,7 @@ dependencies:
418
418
  requirements:
419
419
  - - ">="
420
420
  - !ruby/object:Gem::Version
421
- version: 0.3.3
421
+ version: 0.4.1
422
422
  - - "<"
423
423
  - !ruby/object:Gem::Version
424
424
  version: 1.0.0
@@ -428,7 +428,7 @@ dependencies:
428
428
  requirements:
429
429
  - - ">="
430
430
  - !ruby/object:Gem::Version
431
- version: 0.2.2
431
+ version: 0.2.4
432
432
  - - "<"
433
433
  - !ruby/object:Gem::Version
434
434
  version: 1.0.0
@@ -438,7 +438,7 @@ dependencies:
438
438
  requirements:
439
439
  - - ">="
440
440
  - !ruby/object:Gem::Version
441
- version: 0.2.2
441
+ version: 0.2.4
442
442
  - - "<"
443
443
  - !ruby/object:Gem::Version
444
444
  version: 1.0.0
@@ -635,6 +635,7 @@ files:
635
635
  - lib/fastlane/actions/get_build_number.rb
636
636
  - lib/fastlane/actions/get_github_release.rb
637
637
  - lib/fastlane/actions/get_info_plist_value.rb
638
+ - lib/fastlane/actions/get_ipa_info_plist_value.rb
638
639
  - lib/fastlane/actions/get_version_number.rb
639
640
  - lib/fastlane/actions/git_branch.rb
640
641
  - lib/fastlane/actions/git_commit.rb
@@ -701,6 +702,7 @@ files:
701
702
  - lib/fastlane/actions/swiftlint.rb
702
703
  - lib/fastlane/actions/team_id.rb
703
704
  - lib/fastlane/actions/team_name.rb
705
+ - lib/fastlane/actions/testfairy.rb
704
706
  - lib/fastlane/actions/testflight.rb
705
707
  - lib/fastlane/actions/testmunk.rb
706
708
  - lib/fastlane/actions/tryouts.rb
@@ -772,7 +774,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
772
774
  version: '0'
773
775
  requirements: []
774
776
  rubyforge_project:
775
- rubygems_version: 2.4.6
777
+ rubygems_version: 2.4.0
776
778
  signing_key:
777
779
  specification_version: 4
778
780
  summary: Connect all iOS deployment tools into one streamlined workflow