fastlane 0.8.1 → 0.9.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: ca27eb7ad9f33fb5ecebf462c2f680a670fba2bf
4
- data.tar.gz: 176e24d93d53ce3fd806296312b530fcf8139500
3
+ metadata.gz: 2ff79546ed862f892ac91759a464aeac53b73a43
4
+ data.tar.gz: 4bace796f713dc757e98bd5714307d63e93275ff
5
5
  SHA512:
6
- metadata.gz: ec9868e6a357517716199df3a2828d7e7baced61ce4f5ff4affb76a962819e14963be65eb0f7f2f4547d4b555143e014eb55bd324bef39e7faee1ce27924da4a
7
- data.tar.gz: fc8cc42bb987398e041a96f3883aa372a57b0669e16827a99421fc0fbfa287f6e7dadb5c7634628cef4d4f54292c412d4b74cdecf27d8bab448c6b307fb562fc
6
+ metadata.gz: b0999de10e1695a008598338aff6226ca942ae5571cbf111d034bf804a4898c8533c77581fbac4b5c1e223b242591984429a7f4262a75d80f182b0ba2fe8ad62
7
+ data.tar.gz: 114466acfb84ca09bca715e5982fd9147c73e50d5e65cd2d2bf69fe46194d09126c2a11d78eb6a44ec887f4e7611f0d3c22432da776ef4a96e7f15ed85168a5b
data/README.md CHANGED
@@ -114,6 +114,20 @@ The setup assistant will create all the necessary files for you, using the exist
114
114
 
115
115
  For more details, please follow the [fastlane guide](https://github.com/KrauseFx/fastlane/blob/master/docs/Guide.md) or [documentation](https://github.com/KrauseFx/fastlane/blob/master/docs).
116
116
 
117
+ ## Available commands
118
+
119
+ Usually you'll use fastlane by triggering individual lanes:
120
+
121
+ fastlane [lane_name]
122
+
123
+ #### Other commands
124
+
125
+ - `fastlane lanes`: Lists all available lanes
126
+ - `fastlane docs`: Generates a markdown based documentation of all your lanes
127
+ - `fastlane actions`: List all available `fastlane` actions
128
+ - `fastlane action [action_name]`: Shows a more detailed description of an action with its available parameters
129
+ - `fastlane new_action`: Create a new action (integration) for fastlane
130
+
117
131
  ## [`fastlane`](https://fastlane.tools) Toolchain
118
132
 
119
133
  `fastlane` is designed to make your life easier by bringing together the `fastlane` suite of tools under one roof.
@@ -69,6 +69,24 @@ class FastlaneApplication
69
69
  end
70
70
  end
71
71
 
72
+ command :docs do |c|
73
+ c.syntax = 'fastlane docs'
74
+ c.description = 'Generate a markdown based documentation based on the Fastfile'
75
+ c.option '-f', '--force', 'Overwrite the existing README.md in the ./fastlane folder'
76
+
77
+ c.action do |_args, _options|
78
+ path = File.join(Fastlane::FastlaneFolder.path, 'README.md')
79
+ if File.exists?path and not _options.force
80
+ return unless agree('Found existing ./fastlane/README.md. Do you want to overwrite it? (y/n)', true)
81
+ end
82
+
83
+ ff = Fastlane::FastFile.new(File.join(Fastlane::FastlaneFolder.path, 'Fastfile'))
84
+
85
+ require 'fastlane/docs_generator'
86
+ Fastlane::DocsGenerator.run(path, ff)
87
+ end
88
+ end
89
+
72
90
  command :actions do |c|
73
91
  c.syntax = 'fastlane actions'
74
92
  c.description = 'Lists all available fastlane actions'
@@ -27,17 +27,23 @@ before_all do
27
27
  xctool
28
28
  end
29
29
 
30
+ desc "Runs all the tests"
30
31
  lane :test do
31
32
  snapshot
32
33
  end
33
34
 
35
+ desc "Submit a new Beta Build to Apple TestFlight"
36
+ desc "This will also make sure the profile is up to date"
34
37
  lane :beta do
35
38
  snapshot
36
39
  sigh
37
40
  deliver :skip_deploy, :beta
38
41
  # sh "your_script.sh"
42
+ # You can use other beta testing services here
39
43
  end
40
44
 
45
+ desc "Deploy a new version to the App Store"
46
+ desc "** Full Markdown** Support: `code`"
41
47
  lane :deploy do
42
48
  snapshot
43
49
  sigh
@@ -45,6 +51,7 @@ lane :deploy do
45
51
  # frameit
46
52
  end
47
53
 
54
+ desc "In House Beta Enterprise Distribution"
48
55
  lane :inhouse do
49
56
  # insert your code here
50
57
  end
@@ -41,6 +41,7 @@ module Fastlane
41
41
  ['force', 'Set to true to skip PDF verification'],
42
42
  ['beta', 'Upload a new version to TestFlight'],
43
43
  ['skip_deploy', 'Skip the submission of the app - it will only be uploaded'],
44
+ ['', 'Specify a path to the directory containing the Deliverfile', 'DELIVERFILE_PATH']
44
45
  ]
45
46
  end
46
47
 
@@ -22,6 +22,9 @@ module Fastlane
22
22
  when Fixnum
23
23
  custom_number = first_param
24
24
  folder = '.'
25
+ when String
26
+ custom_number = first_param
27
+ folder = '.'
25
28
  when Hash
26
29
  custom_number = first_param[:build_number]
27
30
  folder = first_param[:xcodeproj] ? File.join('.', first_param[:xcodeproj], '..') : '.'
@@ -31,7 +31,6 @@ module Fastlane
31
31
  identity: '-i',
32
32
  sdk: '--sdk',
33
33
  ipa: '--ipa',
34
- verbose: '--verbose',
35
34
  xcargs: '--xcargs',
36
35
  }
37
36
 
@@ -72,7 +71,7 @@ module Fastlane
72
71
  # Joins args into space delimited string
73
72
  build_args = build_args.join(' ')
74
73
 
75
- command = "ipa build #{build_args}"
74
+ command = "set -o pipefail && ipa build #{build_args} --verbose | xcpretty"
76
75
  Helper.log.debug command
77
76
  Actions.sh command
78
77
 
@@ -88,8 +87,8 @@ module Fastlane
88
87
  end
89
88
 
90
89
  def self.params_to_build_args(params)
91
- # Remove nil value params unless :clean or :archive or :verbose
92
- params = params.delete_if { |k, v| (k != :clean && k != :archive && k != :verbose) && v.nil? }
90
+ # Remove nil value params unless :clean or :archive
91
+ params = params.delete_if { |k, v| (k != :clean && k != :archive) && v.nil? }
93
92
 
94
93
  params = fill_in_default_values(params)
95
94
 
@@ -134,21 +133,20 @@ module Fastlane
134
133
  end
135
134
 
136
135
  def self.available_options
137
- [
138
- ['workspace', 'Workspace (.xcworkspace) file to use to build app (automatically detected in current directory)'],
139
- ['project', 'Project (.xcodeproj) file to use to build app (automatically detected in current directory'],
140
- ['configuration', 'Configuration used to build'],
141
- ['scheme', 'Scheme used to build app'],
142
- ['clean', 'use an extra XCCONFIG file to build the app'],
143
- ['archive', 'pass additional arguments to xcodebuild when building the app. Be sure to quote multiple args.'],
144
- ['destination', 'Clean project before building'],
145
- ['embed', 'Archive project after building'],
146
- ['identity', 'Destination. Defaults to current directory'],
147
- ['sdk', 'Sign .ipa file with .mobileprovision'],
148
- ['ipa', 'Identity to be used along with --embed'],
149
- ['verbose', 'use SDK as the name or path of the base SDK when building the project'],
150
- ['xcargs', 'specify the name of the .ipa file to generate (including file extension)']
151
- ]
136
+ # [
137
+ # ['workspace', 'Workspace (.xcworkspace) file to use to build app (automatically detected in current directory)'],
138
+ # ['project', 'Project (.xcodeproj) file to use to build app (automatically detected in current directory'],
139
+ # ['configuration', 'Configuration used to build'],
140
+ # ['scheme', 'Scheme used to build app'],
141
+ # ['clean', 'use an extra XCCONFIG file to build the app'],
142
+ # ['archive', 'pass additional arguments to xcodebuild when building the app. Be sure to quote multiple args.'],
143
+ # ['destination', 'Clean project before building'],
144
+ # ['embed', 'Archive project after building'],
145
+ # ['identity', 'Destination. Defaults to current directory'],
146
+ # ['sdk', 'Sign .ipa file with .mobileprovision'],
147
+ # ['ipa', 'Identity to be used along with --embed'],
148
+ # ['xcargs', 'specify the name of the .ipa file to generate (including file extension)']
149
+ # ]
152
150
  end
153
151
 
154
152
  def self.output
@@ -16,6 +16,16 @@ module Fastlane
16
16
  nil
17
17
  end
18
18
 
19
+ # As there is a text limit in the notifications, we are
20
+ # usually interested in the last part of the message
21
+ # e.g. for tests
22
+ def self.trim_message(message)
23
+ # We want the last 7000 characters, instead of the first 7000, as the error is at the bottom
24
+ start_index = [message.length - 7000, 0].max
25
+ message = message[start_index..-1]
26
+ message
27
+ end
28
+
19
29
  def self.run(params)
20
30
  options = { message: '',
21
31
  success: true,
@@ -26,7 +36,7 @@ module Fastlane
26
36
  require 'slack-notifier'
27
37
 
28
38
  color = (options[:success] ? 'good' : 'danger')
29
- options[:message] = options[:message].to_s
39
+ options[:message] = self.trim_message(options[:message].to_s || '')
30
40
 
31
41
  options[:message] = Slack::Notifier::LinkFormatter.format(options[:message])
32
42
 
@@ -0,0 +1,19 @@
1
+ module Fastlane
2
+ class DocsGenerator
3
+ def self.run(output_path, ff)
4
+ output = "fastlane actions\n"
5
+ output += "================\n"
6
+
7
+ ff.runner.description_blocks.each do |lane, description|
8
+ output += "## #{lane}\n\n"
9
+ output += "```\n"
10
+ output += "fastlane #{lane}\n"
11
+ output += "```\n\n"
12
+ output += description + "\n"
13
+ end
14
+
15
+ File.write(output_path, output)
16
+ Helper.log.info "Successfully generated documentation to path '#{File.expand_path(output_path)}'".green
17
+ end
18
+ end
19
+ end
@@ -16,6 +16,10 @@ module Fastlane
16
16
  @collector ||= ActionCollector.new
17
17
  end
18
18
 
19
+ def desc_collection
20
+ @desc_collection ||= []
21
+ end
22
+
19
23
  def parse(data)
20
24
  @runner = Runner.new
21
25
 
@@ -27,7 +31,9 @@ module Fastlane
27
31
  end
28
32
 
29
33
  def lane(key, &block)
30
- @runner.set_block(key, block)
34
+ desc = desc_collection.join("\n\n")
35
+ @runner.set_block(key, block, desc)
36
+ @desc_collection = nil # reset again
31
37
  end
32
38
 
33
39
  def before_all(&block)
@@ -69,6 +75,10 @@ module Fastlane
69
75
  collector.did_finish
70
76
  end
71
77
 
78
+ def desc(string)
79
+ desc_collection << string
80
+ end
81
+
72
82
  def method_missing(method_sym, *arguments, &_block)
73
83
  # First, check if there is a predefined method in the actions folder
74
84
 
@@ -51,15 +51,21 @@ module Fastlane
51
51
  @error = block
52
52
  end
53
53
 
54
- def set_block(key, block)
54
+ # @param key: The name of the lane
55
+ # @param block: The block of the lane
56
+ # @param desc: Description of this action
57
+ def set_block(key, block, desc = nil)
55
58
  raise "Lane '#{key}' was defined multiple times!".red if blocks[key]
56
59
  blocks[key] = block
60
+ description_blocks[key] = desc
57
61
  end
58
62
 
59
- private
60
-
61
63
  def blocks
62
64
  @blocks ||= {}
63
65
  end
66
+
67
+ def description_blocks
68
+ @description_blocks ||= {}
69
+ end
64
70
  end
65
71
  end
@@ -1,3 +1,3 @@
1
1
  module Fastlane
2
- VERSION = '0.8.1'
2
+ VERSION = '0.9.0'
3
3
  end
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: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -218,14 +218,14 @@ dependencies:
218
218
  requirements:
219
219
  - - '>='
220
220
  - !ruby/object:Gem::Version
221
- version: 0.4.8
221
+ version: 0.4.9
222
222
  type: :runtime
223
223
  prerelease: false
224
224
  version_requirements: !ruby/object:Gem::Requirement
225
225
  requirements:
226
226
  - - '>='
227
227
  - !ruby/object:Gem::Version
228
- version: 0.4.8
228
+ version: 0.4.9
229
229
  - !ruby/object:Gem::Dependency
230
230
  name: produce
231
231
  requirement: !ruby/object:Gem::Requirement
@@ -428,6 +428,7 @@ files:
428
428
  - lib/fastlane/actions_list.rb
429
429
  - lib/fastlane/core_ext/string.rb
430
430
  - lib/fastlane/dependency_checker.rb
431
+ - lib/fastlane/docs_generator.rb
431
432
  - lib/fastlane/fast_file.rb
432
433
  - lib/fastlane/fastlane_folder.rb
433
434
  - lib/fastlane/junit_generator.rb