fastlane 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/fastlane +25 -7
- data/lib/assets/custom_action_template.rb +35 -2
- data/lib/fastlane.rb +1 -3
- data/lib/fastlane/action.rb +37 -0
- data/lib/fastlane/actions/{README → README.md} +1 -1
- data/lib/fastlane/actions/add_git_tag.rb +18 -1
- data/lib/fastlane/actions/cert.rb +38 -18
- data/lib/fastlane/actions/clean_build_artifacts.rb +9 -1
- data/lib/fastlane/actions/commit_version_bump.rb +16 -1
- data/lib/fastlane/actions/crashlytics.rb +21 -1
- data/lib/fastlane/actions/deliver.rb +31 -13
- data/lib/fastlane/actions/deploygate.rb +26 -1
- data/lib/fastlane/actions/ensure_git_status_clean.rb +15 -1
- data/lib/fastlane/actions/fastlane_version.rb +9 -1
- data/lib/fastlane/actions/frameit.rb +20 -10
- data/lib/fastlane/actions/gcovr.rb +35 -1
- data/lib/fastlane/actions/hipchat.rb +19 -1
- data/lib/fastlane/actions/hockey.rb +27 -1
- data/lib/fastlane/actions/increment_build_number.rb +22 -1
- data/lib/fastlane/actions/increment_version_number.rb +30 -1
- data/lib/fastlane/actions/install_carthage.rb +9 -1
- data/lib/fastlane/actions/install_cocapods.rb +5 -1
- data/lib/fastlane/actions/ipa.rb +52 -13
- data/lib/fastlane/actions/notify.rb +9 -1
- data/lib/fastlane/actions/produce.rb +50 -8
- data/lib/fastlane/actions/push_to_git_remote.rb +18 -1
- data/lib/fastlane/actions/register_devices.rb +18 -1
- data/lib/fastlane/actions/reset_git_repo.rb +24 -1
- data/lib/fastlane/actions/resign.rb +17 -1
- data/lib/fastlane/actions/s3.rb +30 -2
- data/lib/fastlane/actions/say.rb +5 -1
- data/lib/fastlane/actions/sigh.rb +22 -6
- data/lib/fastlane/actions/slack.rb +19 -4
- data/lib/fastlane/actions/snapshot.rb +27 -6
- data/lib/fastlane/actions/team_id.rb +9 -1
- data/lib/fastlane/actions/team_name.rb +9 -1
- data/lib/fastlane/actions/testmunk.rb +17 -4
- data/lib/fastlane/actions/typetalk.rb +19 -1
- data/lib/fastlane/actions/update_project_code_signing.rb +13 -1
- data/lib/fastlane/actions/xcode_select.rb +10 -2
- data/lib/fastlane/actions/xcodebuild.rb +88 -8
- data/lib/fastlane/actions/xctool.rb +16 -1
- data/lib/fastlane/actions_list.rb +130 -0
- data/lib/fastlane/core_ext/string.rb +8 -0
- data/lib/fastlane/lane_manager.rb +17 -1
- data/lib/fastlane/version.rb +1 -1
- metadata +35 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bfbf28d8f19dd00c13ed6c94a78879a606614eb
|
4
|
+
data.tar.gz: 1dab9f075c9f44962d58eb342fbc191e3832b925
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07581ab17b99fa7e2257e7ad87e3da20eade8fe5de023c9fe11326d77ec8dcb76c5005b11f1a657a5e5ffd7079e3761f73185cbd590bd18c0b47a4a1e9a0438a
|
7
|
+
data.tar.gz: a42015506abdd38d372305c95a13cec5edf1f427008f10a3a7775bccd07c1087882c4577bf2ccc7ce97e0f6381f7e553f437806949c2fa30a0fdb2156876a00b
|
data/bin/fastlane
CHANGED
@@ -28,16 +28,12 @@ class FastlaneApplication
|
|
28
28
|
c.option '--env STRING', String, 'Add environment to use with `dotenv`'
|
29
29
|
|
30
30
|
c.action do |args, _options|
|
31
|
-
FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
|
32
|
-
|
33
31
|
if Fastlane::FastlaneFolder.path
|
34
32
|
Fastlane::LaneManager.cruise_lanes(args, _options.env)
|
35
33
|
else
|
36
34
|
create = agree('Could not find fastlane in current directory. Would you like to set it up? (y/n)'.yellow, true)
|
37
35
|
Fastlane::Setup.new.run if create
|
38
36
|
end
|
39
|
-
|
40
|
-
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
41
37
|
end
|
42
38
|
end
|
43
39
|
|
@@ -46,9 +42,7 @@ class FastlaneApplication
|
|
46
42
|
c.description = 'Helps you setting up fastlane based on your existing tools.'
|
47
43
|
|
48
44
|
c.action do |_args, _options|
|
49
|
-
FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
|
50
45
|
Fastlane::Setup.new.run
|
51
|
-
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
52
46
|
end
|
53
47
|
end
|
54
48
|
|
@@ -61,10 +55,34 @@ class FastlaneApplication
|
|
61
55
|
end
|
62
56
|
end
|
63
57
|
|
58
|
+
command :actions do |c|
|
59
|
+
c.syntax = 'fastlane actions'
|
60
|
+
c.description = 'Lists all available fastlane actions'
|
61
|
+
|
62
|
+
c.action do |_args, _options|
|
63
|
+
require 'fastlane/actions_list'
|
64
|
+
Fastlane::ActionsList.run(_args.first)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
command :action do |c|
|
69
|
+
c.syntax = 'fastlane action [tool_name]'
|
70
|
+
c.description = 'Shows more information for a specific command'
|
71
|
+
c.action do |_args, _options|
|
72
|
+
require 'fastlane/actions_list'
|
73
|
+
Fastlane::ActionsList.run(_args.first)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
64
77
|
default_command :run
|
65
78
|
|
66
79
|
run!
|
67
80
|
end
|
68
81
|
end
|
69
82
|
|
70
|
-
|
83
|
+
begin
|
84
|
+
# FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
|
85
|
+
FastlaneApplication.new.run
|
86
|
+
ensure
|
87
|
+
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
88
|
+
end
|
@@ -4,14 +4,47 @@ module Fastlane
|
|
4
4
|
[[NAME_UP]]_CUSTOM_VALUE = :[[NAME_UP]]_CUSTOM_VALUE
|
5
5
|
end
|
6
6
|
|
7
|
-
class [[NAME_CLASS]]
|
7
|
+
class [[NAME_CLASS]] < Action
|
8
8
|
def self.run(params)
|
9
9
|
puts "My Ruby Code!"
|
10
|
-
# puts "Parameter: #{params
|
10
|
+
# puts "Parameter Path: #{params[:first]}"
|
11
11
|
# sh "shellcommand ./path"
|
12
12
|
|
13
13
|
# Actions.lane_context[SharedValues::[[NAME_UP]]_CUSTOM_VALUE] = "my_val"
|
14
14
|
end
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
#####################################################
|
19
|
+
# @!group Documentation
|
20
|
+
#####################################################
|
21
|
+
|
22
|
+
def self.description
|
23
|
+
"A short description with <= 80 characters of what this action does"
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.available_options
|
27
|
+
# Define all options your action supports.
|
28
|
+
# The environment variable (last parameters) is optional, remove it if you don't need it
|
29
|
+
# You can add as many parameters as you want
|
30
|
+
[
|
31
|
+
['path', 'Describe what this parameter is useful for', 'ENVIRONMENT_VARIABLE_NAME'],
|
32
|
+
['second', 'Describe what this parameter is useful for']
|
33
|
+
]
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.output
|
37
|
+
# Define the shared values you are going to provide
|
38
|
+
# Example
|
39
|
+
[
|
40
|
+
['[[NAME_UP]]_CUSTOM_VALUE', 'A description of what this value contains']
|
41
|
+
]
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.author
|
45
|
+
# So no one will ever forget your contribution to fastlane :) You are awesome btw!
|
46
|
+
'[Your GitHub Name]'
|
47
|
+
end
|
15
48
|
end
|
16
49
|
end
|
17
50
|
end
|
data/lib/fastlane.rb
CHANGED
@@ -7,13 +7,11 @@ require 'fastlane/setup'
|
|
7
7
|
require 'fastlane/fastlane_folder'
|
8
8
|
require 'fastlane/junit_generator'
|
9
9
|
require 'fastlane/lane_manager'
|
10
|
+
require 'fastlane/action'
|
10
11
|
require 'fastlane/actions/actions_helper'
|
11
12
|
|
12
13
|
require 'fastlane_core'
|
13
14
|
|
14
|
-
# Third Party code
|
15
|
-
require 'colored'
|
16
|
-
|
17
15
|
module Fastlane
|
18
16
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
19
17
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Fastlane
|
2
|
+
class Action
|
3
|
+
def self.run(params)
|
4
|
+
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.description
|
8
|
+
"No description provided".red
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.details
|
12
|
+
nil # this is your change to provide a more detailed description of this action
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.available_options
|
16
|
+
# Return an array of 2-3 element arrays, like:
|
17
|
+
# [
|
18
|
+
# ['app_identifier', 'This value is responsible for X', 'ENVIRONMENT_VARIABLE'],
|
19
|
+
# ['app_identifier', 'This value is responsible for X']
|
20
|
+
# ]
|
21
|
+
# Take a look at sigh.rb if you're using the config manager of fastlane
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.output
|
26
|
+
# Return the keys you provide on the shared area
|
27
|
+
# [
|
28
|
+
# ['IPA_OUTPUT_PATH', 'The path to the newly generated ipa file']
|
29
|
+
# ]
|
30
|
+
nil
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.author
|
34
|
+
"KrauseFx"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
3
|
# Adds a git tag to the current commit
|
4
|
-
class AddGitTagAction
|
4
|
+
class AddGitTagAction < Action
|
5
5
|
def self.run(params)
|
6
6
|
params = params.first
|
7
7
|
|
@@ -17,6 +17,23 @@ module Fastlane
|
|
17
17
|
Helper.log.info 'Adding git tag "#{tag}" 🎯.'
|
18
18
|
Actions.sh("git tag #{tag}")
|
19
19
|
end
|
20
|
+
|
21
|
+
def self.description
|
22
|
+
"This will add a git tag to the current branch"
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.available_options
|
26
|
+
[
|
27
|
+
['tag', 'Define your own tag text. This will replace all other parameters.'],
|
28
|
+
['grouping', 'Is used to keep your tags organised under one "folder". Defaults to "builds"'],
|
29
|
+
['prefix', 'Anything you want to put in front of the version number (e.g. "v").'],
|
30
|
+
['build_number', 'The build number. Defaults to the result of increment_build_number if you\'re using it']
|
31
|
+
]
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.author
|
35
|
+
"lmirosevic"
|
36
|
+
end
|
20
37
|
end
|
21
38
|
end
|
22
39
|
end
|
@@ -5,38 +5,58 @@ module Fastlane
|
|
5
5
|
CERT_CERTIFICATE_ID = :CERT_CERTIFICATE_ID
|
6
6
|
end
|
7
7
|
|
8
|
-
class CertAction
|
8
|
+
class CertAction < Action
|
9
9
|
def self.run(params)
|
10
10
|
require 'cert'
|
11
11
|
require 'cert/options'
|
12
12
|
|
13
13
|
return if Helper.test?
|
14
14
|
|
15
|
-
|
16
|
-
# This should be executed in the fastlane folder
|
15
|
+
FastlaneCore::UpdateChecker.start_looking_for_update('cert')
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
#
|
21
|
-
|
22
|
-
params.
|
23
|
-
|
17
|
+
begin
|
18
|
+
Dir.chdir(FastlaneFolder.path || Dir.pwd) do
|
19
|
+
# This should be executed in the fastlane folder
|
20
|
+
|
21
|
+
values = params.first
|
22
|
+
unless values.kind_of?Hash
|
23
|
+
# Old syntax
|
24
|
+
values = {}
|
25
|
+
params.each do |val|
|
26
|
+
values[val] = true
|
27
|
+
end
|
24
28
|
end
|
25
|
-
end
|
26
29
|
|
27
|
-
|
30
|
+
Cert.config = FastlaneCore::Configuration.create(Cert::Options.available_options, (values || {}))
|
28
31
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
Cert::CertRunner.run
|
33
|
+
cert_file_path = ENV["CER_FILE_PATH"]
|
34
|
+
certificate_id = ENV["CER_CERTIFICATE_ID"]
|
35
|
+
Actions.lane_context[SharedValues::CERT_FILE_PATH] = cert_file_path
|
36
|
+
Actions.lane_context[SharedValues::CERT_CERTIFICATE_ID] = certificate_id
|
34
37
|
|
35
|
-
|
38
|
+
Helper.log.info("Use signing certificate '#{certificate_id}' from now on!".green)
|
36
39
|
|
37
|
-
|
40
|
+
ENV["SIGH_CERTIFICATE_ID"] = certificate_id
|
41
|
+
end
|
42
|
+
ensure
|
43
|
+
FastlaneCore::UpdateChecker.show_update_status('cert', Cert::VERSION)
|
38
44
|
end
|
39
45
|
end
|
46
|
+
|
47
|
+
def self.description
|
48
|
+
"Fetch or generate the latest available code signing identity"
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.available_options
|
52
|
+
require 'cert'
|
53
|
+
require 'cert/options'
|
54
|
+
Cert::Options.available_options
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.author
|
58
|
+
"KrauseFx"
|
59
|
+
end
|
40
60
|
end
|
41
61
|
end
|
42
62
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
|
-
class CleanBuildArtifactsAction
|
3
|
+
class CleanBuildArtifactsAction < Action
|
4
4
|
def self.run(_params)
|
5
5
|
[
|
6
6
|
Actions.lane_context[Actions::SharedValues::IPA_OUTPUT_PATH],
|
@@ -10,6 +10,14 @@ module Fastlane
|
|
10
10
|
|
11
11
|
Helper.log.info 'Cleaned up build artifacts 🐙'.green
|
12
12
|
end
|
13
|
+
|
14
|
+
def self.description
|
15
|
+
"Deletes files created as result of running ipa or sigh"
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.author
|
19
|
+
"lmirosevic"
|
20
|
+
end
|
13
21
|
end
|
14
22
|
end
|
15
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
3
|
# Commits the current changes in the repo as a version bump, checking to make sure only files which contain version information have been changed.
|
4
|
-
class CommitVersionBumpAction
|
4
|
+
class CommitVersionBumpAction < Action
|
5
5
|
def self.run(params)
|
6
6
|
require 'xcodeproj'
|
7
7
|
require 'pathname'
|
@@ -74,6 +74,21 @@ module Fastlane
|
|
74
74
|
|
75
75
|
Helper.log.info "Committed \"#{commit_message}\" 💾.".green
|
76
76
|
end
|
77
|
+
|
78
|
+
def self.description
|
79
|
+
"Creates a 'Version Bump' commit. Run after `increment_build_number`"
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.available_options
|
83
|
+
[
|
84
|
+
['message', 'The commit message. Defaults to "Version Bump"'],
|
85
|
+
['xcodeproj', 'The path to your project file (Not the workspace). If you have only one, this is optional']
|
86
|
+
]
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.author
|
90
|
+
"lmirosevic"
|
91
|
+
end
|
77
92
|
end
|
78
93
|
end
|
79
94
|
end
|
@@ -4,7 +4,7 @@ end
|
|
4
4
|
|
5
5
|
module Fastlane
|
6
6
|
module Actions
|
7
|
-
class CrashlyticsAction
|
7
|
+
class CrashlyticsAction < Action
|
8
8
|
def self.run(params)
|
9
9
|
require 'shenzhen'
|
10
10
|
require 'shenzhen/plugins/crashlytics'
|
@@ -83,6 +83,26 @@ module Fastlane
|
|
83
83
|
raise "No IPA file given or found, pass using `ipa_path: 'path/app.ipa'`".red
|
84
84
|
end
|
85
85
|
|
86
|
+
def self.description
|
87
|
+
"Upload a new build to Crashlytics Beta"
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.available_options
|
91
|
+
[
|
92
|
+
['crashlytics_path', 'Path to your Crashlytics bundle', 'CRASHLYTICS_FRAMEWORK_PATH'],
|
93
|
+
['api_token', 'Crashlytics Beta API Token', 'CRASHLYTICS_API_TOKEN'],
|
94
|
+
['build_secret', 'Crashlytics Build Secret', 'CRASHLYTICS_BUILD_SECRET'],
|
95
|
+
['ipa_path', 'Path to your IPA file. Optional if you use the `ipa` or `xcodebuild` action'],
|
96
|
+
['notes_path', 'Release Notes'],
|
97
|
+
['emails', 'Pass email address'],
|
98
|
+
['notifications', 'Crashlytics notification option']
|
99
|
+
]
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.author
|
103
|
+
"pedrogimenez"
|
104
|
+
end
|
105
|
+
|
86
106
|
private_class_method :assert_params_given!,
|
87
107
|
:assert_valid_params!,
|
88
108
|
:assert_valid_crashlytics_path!,
|
@@ -3,29 +3,47 @@ module Fastlane
|
|
3
3
|
module SharedValues
|
4
4
|
end
|
5
5
|
|
6
|
-
class DeliverAction
|
6
|
+
class DeliverAction < Action
|
7
7
|
def self.run(params)
|
8
8
|
require 'deliver'
|
9
9
|
|
10
10
|
FastlaneCore::UpdateChecker.start_looking_for_update('deliver')
|
11
11
|
|
12
|
-
|
12
|
+
begin
|
13
|
+
ENV['DELIVER_SCREENSHOTS_PATH'] = Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH]
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
force = params.include?(:force)
|
16
|
+
beta = params.include?(:beta)
|
17
|
+
skip_deploy = params.include?(:skip_deploy)
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
Dir.chdir(FastlaneFolder.path || Dir.pwd) do
|
20
|
+
# This should be executed in the fastlane folder
|
21
|
+
Deliver::Deliverer.new(nil,
|
22
|
+
force: force,
|
23
|
+
is_beta_ipa: beta,
|
24
|
+
skip_deploy: skip_deploy)
|
24
25
|
|
25
|
-
|
26
|
+
Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = File.expand_path(ENV['DELIVER_IPA_PATH']) # deliver will store it in the environment
|
27
|
+
end
|
28
|
+
ensure
|
29
|
+
FastlaneCore::UpdateChecker.show_update_status('deliver', Deliver::VERSION)
|
26
30
|
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.description
|
34
|
+
"Uses deliver to upload new app metadata and builds to iTunes Connect"
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.available_options
|
38
|
+
[
|
39
|
+
['force', 'Set to true to skip PDF verification'],
|
40
|
+
['beta', 'Upload a new version to TestFlight'],
|
41
|
+
['skip_deploy', 'Skip the submission of the app - it will only be uploaded'],
|
42
|
+
]
|
43
|
+
end
|
27
44
|
|
28
|
-
|
45
|
+
def self.author
|
46
|
+
"KrauseFx"
|
29
47
|
end
|
30
48
|
end
|
31
49
|
end
|
@@ -10,7 +10,7 @@ module Fastlane
|
|
10
10
|
DEPLOYGATE_APP_INFO = :DEPLOYGATE_APP_INFO # contains app revision, bundle identifier, etc.
|
11
11
|
end
|
12
12
|
|
13
|
-
class DeploygateAction
|
13
|
+
class DeploygateAction < Action
|
14
14
|
DEPLOYGATE_URL_BASE = 'https://deploygate.com'
|
15
15
|
|
16
16
|
def self.run(params)
|
@@ -83,6 +83,31 @@ module Fastlane
|
|
83
83
|
Helper.log.error message.red if message
|
84
84
|
end
|
85
85
|
private_class_method :help_message
|
86
|
+
|
87
|
+
def self.description
|
88
|
+
"Upload a new build to DeployGate"
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.available_options
|
92
|
+
[
|
93
|
+
['api_token', 'DeployGate API Token'],
|
94
|
+
['user', 'Target username or organization name'],
|
95
|
+
['ipa', 'Path to your IPA file. Defaults to output of xcodebuild and ipa'],
|
96
|
+
['message', 'Text for the uploaded build']
|
97
|
+
]
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.output
|
101
|
+
[
|
102
|
+
['DEPLOYGATE_URL', 'URL of the newly uploaded build'],
|
103
|
+
['DEPLOYGATE_REVISION', 'auto incremented revision number'],
|
104
|
+
['DEPLOYGATE_APP_INFO', 'Contains app revision, bundle identifier, etc.']
|
105
|
+
]
|
106
|
+
end
|
107
|
+
|
108
|
+
def self.author
|
109
|
+
"tnj"
|
110
|
+
end
|
86
111
|
end
|
87
112
|
end
|
88
113
|
end
|