fastlane 0.8.1 → 0.9.0

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: 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