fastlane 1.105.3 → 1.106.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: da5ecd261ef3458981590b6615a7b3792cf38878
4
- data.tar.gz: b94708d6fe39e77647cad23e216fcb3fada423e8
3
+ metadata.gz: 9c2c7bb1d7664393c9149b8efd056625b87abbd7
4
+ data.tar.gz: 0e93c93ffb7a4fe39bcd2fb2ab4ce46066b4e4e2
5
5
  SHA512:
6
- metadata.gz: be576aed7bab0da1a505f6304cf77bbe938f964b75dcf7cb773167a15723b5bb45e8860639acdbfe92747ea8e9c9a33cba97ca02f9e6350281d27a0808e995bc
7
- data.tar.gz: 8ce022ea7257265780fd6621acb86b0be0a3d882e182a031ba39611de98640a9f45a3ff2e350e89db819023a3c7e13b0dc280372f481e3f3482bea3efae624a4
6
+ metadata.gz: 4a2617e9d944472142efb034f97690ad7683ca65a5bed4dade6d9b05efde6ef29300df921c4e6046cac48883f4d276bffbfa5ff670a2d715e7ae40daff6581b2
7
+ data.tar.gz: 2405caf7a696dc1abe7b61129608873d75ee6f054771decfc263947984cd525663f90c777ca09b48d4655d170a08d22402d881637509b9ea39ed92d170d89f9e
data/README.md CHANGED
@@ -24,7 +24,6 @@ fastlane
24
24
  [![Twitter: @FastlaneTools](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/fastlane/LICENSE)
26
26
  [![Gem](https://img.shields.io/gem/v/fastlane.svg?style=flat)](http://rubygems.org/gems/fastlane)
27
- [![Build Status](https://img.shields.io/circleci/project/fastlane/fastlane/master.svg?style=flat)](https://circleci.com/gh/fastlane/fastlane)
28
27
 
29
28
  ######*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
29
 
@@ -145,6 +144,7 @@ Usually you'll use fastlane by triggering individual lanes:
145
144
  - `fastlane lanes`: Lists all available lanes with description
146
145
  - `fastlane list`: Lists all available lanes without description
147
146
  - `fastlane new_action`: Create a new action (integration) for fastlane
147
+ - `fastlane env`: Print out the fastlane ruby environment when submitting an issue
148
148
 
149
149
  ## Examples
150
150
 
@@ -62,7 +62,8 @@ module Fastlane
62
62
  def self.example_code
63
63
  [
64
64
  'match(type: "appstore", app_identifier: "tools.fastlane.app")',
65
- 'match(type: "development", readonly: true)'
65
+ 'match(type: "development", readonly: true)',
66
+ 'match(app_identifier: ["tools.fastlane.app", "tools.fastlane.sleepy"])'
66
67
  ]
67
68
  end
68
69
 
@@ -14,9 +14,12 @@ module Fastlane
14
14
 
15
15
  FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
16
16
  Fastlane.load_actions
17
- Fastlane.plugin_manager.load_plugins
18
- # *after* loading the plugins
19
- Fastlane::PluginUpdateManager.start_looking_for_updates
17
+ # do not use "include" as it may be some where in the commandline where "env" is required, therefore explicit index->0
18
+ unless ARGV[0] == "env"
19
+ # *after* loading the plugins
20
+ Fastlane.plugin_manager.load_plugins
21
+ Fastlane::PluginUpdateManager.start_looking_for_updates
22
+ end
20
23
  self.new.run
21
24
  ensure
22
25
  FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
@@ -158,22 +161,6 @@ module Fastlane
158
161
  end
159
162
  end
160
163
 
161
- command :enable_crash_reporting do |c|
162
- c.syntax = 'fastlane enable_crash_reporting'
163
- c.description = "Deprecated: fastlane doesn't use a crash reporter any more"
164
- c.action do |args, options|
165
- show_crashreporter_note
166
- end
167
- end
168
-
169
- command :disable_crash_reporting do |c|
170
- c.syntax = 'fastlane disable_crash_reporting'
171
- c.description = "Deprecated: fastlane doesn't use a crash reporter any more"
172
- c.action do |args, options|
173
- show_crashreporter_note
174
- end
175
- end
176
-
177
164
  command :enable_auto_complete do |c|
178
165
  c.syntax = 'fastlane enable_auto_complete'
179
166
  c.description = 'Enable tab auto completion'
@@ -240,6 +227,21 @@ module Fastlane
240
227
  end
241
228
  end
242
229
 
230
+ command :env do |c|
231
+ c.syntax = 'fastlane env'
232
+ c.description = 'Print your fastlane environment, use this when you submit an issue on GitHub'
233
+ c.action do |args, options|
234
+ require "fastlane/environment_printer"
235
+ env_info = Fastlane::EnvironmentPrinter.get
236
+ puts env_info
237
+ if FastlaneCore::Helper.mac? && UI.confirm("🙄 Wow, that's a lot of markdown text... should fastlane put it into your clipboard, so you can easily paste it on GitHub?")
238
+ Fastlane::EnvironmentPrinter.copy_to_clipboard(env_info)
239
+ UI.success("Successfully copied markdown into your clipboard 🎨")
240
+ end
241
+ UI.success("Open https://github.com/fastlane/fastlane/issues/new to submit a new issue ✅")
242
+ end
243
+ end
244
+
243
245
  default_command :trigger
244
246
  run!
245
247
  end
@@ -255,11 +257,5 @@ module Fastlane
255
257
  Fastlane::Setup.new.run if create
256
258
  return false
257
259
  end
258
-
259
- def show_crashreporter_note
260
- UI.important("fastlane doesn't use a crash reporter any more")
261
- UI.important("Instead please submit an issue on GitHub: https://github.com/fastlane/fastlane/issues")
262
- UI.important("This command will be removed in one of the next releases")
263
- end
264
260
  end
265
261
  end
@@ -0,0 +1,194 @@
1
+ module Fastlane
2
+ class EnvironmentPrinter
3
+ def self.get
4
+ UI.important("Generating fastlane environment output, this might take a few seconds...")
5
+ require "fastlane/markdown_table_formatter"
6
+ env_output = ""
7
+ env_output << print_system_environment
8
+ env_output << print_fastlane_files
9
+ env_output << print_loaded_fastlane_gems
10
+ env_output << print_loaded_plugins
11
+ env_output << print_loaded_gems
12
+ env_output << print_date
13
+ env_output << "</details>"
14
+
15
+ # Adding title
16
+ status = (env_output.include?("🚫") ? "🚫" : "✅")
17
+ env_header = "<details><summary>#{status} fastlane environment #{status}</summary>\n\n"
18
+
19
+ return env_header + env_output
20
+ end
21
+
22
+ def self.print_date
23
+ date = Time.now.strftime("%Y-%m-%d")
24
+ "\n*generated on:* **#{date}**\n"
25
+ end
26
+
27
+ def self.print_loaded_plugins
28
+ ENV["FASTLANE_ENV_PRINTER"] = "enabled"
29
+ env_output = "### Loaded fastlane plugins:\n"
30
+ env_output << "\n"
31
+ plugin_manager = Fastlane::PluginManager.new
32
+ plugin_manager.load_plugins
33
+ if plugin_manager.available_plugins.length <= 0
34
+ env_output << "**No plugins Loaded***\n"
35
+ else
36
+ table = ""
37
+ table << "| Plugin | Version | Update-Status |\n"
38
+ table << "|--------|---------|\n"
39
+ plugin_manager.available_plugins.each do |plugin|
40
+ begin
41
+ installed_version = Fastlane::ActionCollector.determine_version(plugin)
42
+ update_url = FastlaneCore::UpdateChecker.generate_fetch_url(plugin)
43
+ latest_version = FastlaneCore::UpdateChecker.fetch_latest(update_url)
44
+ if Gem::Version.new(installed_version) == Gem::Version.new(latest_version)
45
+ update_status = "✅ Up-To-Date"
46
+ else
47
+ update_status = "🚫 Update availaible"
48
+ end
49
+ rescue
50
+ update_status = "💥 Check failed"
51
+ end
52
+ table << "| #{plugin} | #{installed_version} | #{update_status} |\n"
53
+ end
54
+
55
+ rendered_table = MarkdownTableFormatter.new table
56
+ env_output << rendered_table.to_md
57
+ end
58
+
59
+ env_output << "\n\n"
60
+ env_output
61
+ end
62
+
63
+ def self.print_loaded_fastlane_gems
64
+ # fastlanes internal gems
65
+ env_output = "### fastlane gems\n\n"
66
+ table = ""
67
+ table << "| Gem | Version | Update-Status |\n"
68
+ table << "|-----|---------|------------|\n"
69
+ fastlane_tools = Fastlane::TOOLS + [:fastlane_core, :credentials_manager]
70
+ Gem.loaded_specs.values.each do |x|
71
+ update_status = "N/A"
72
+
73
+ next unless fastlane_tools.include?(x.name.to_sym)
74
+ begin
75
+ update_url = FastlaneCore::UpdateChecker.generate_fetch_url(x.name)
76
+ latest_version = FastlaneCore::UpdateChecker.fetch_latest(update_url)
77
+ if Gem::Version.new(x.version) == Gem::Version.new(latest_version)
78
+ update_status = "✅ Up-To-Date"
79
+ else
80
+ update_status = "🚫 Update availaible"
81
+ end
82
+ rescue
83
+ update_status = "💥 Check failed"
84
+ end
85
+ table << "| #{x.name} | #{x.version} | #{update_status} |\n"
86
+ end
87
+
88
+ rendered_table = MarkdownTableFormatter.new table
89
+ env_output << rendered_table.to_md
90
+
91
+ env_output << "\n\n"
92
+
93
+ return env_output
94
+ end
95
+
96
+ def self.print_loaded_gems
97
+ env_output = "<details>"
98
+ env_output << "<summary><b>Loaded gems</b></summary>\n\n"
99
+
100
+ table = "| Gem | Version |\n"
101
+ table << "|-----|---------|\n"
102
+ Gem.loaded_specs.values.each do |x|
103
+ unless Fastlane::TOOLS.include?(x.name.to_sym)
104
+ table << "| #{x.name} | #{x.version} |\n"
105
+ end
106
+ end
107
+ rendered_table = MarkdownTableFormatter.new table
108
+
109
+ env_output << rendered_table.to_md
110
+ env_output << "</details>\n\n"
111
+ return env_output
112
+ end
113
+
114
+ def self.print_system_environment
115
+ require "openssl"
116
+
117
+ env_output = "### Stack\n\n"
118
+ product, version, build = `sw_vers`.strip.split("\n").map { |line| line.split(':').last.strip }
119
+ table_content = {
120
+ "fastlane" => Fastlane::VERSION,
121
+ "OS" => `sw_vers -productVersion`.strip,
122
+ "Ruby" => RUBY_VERSION,
123
+ "Bundler?" => Helper.bundler?,
124
+ "Xcode Path" => Helper.xcode_path,
125
+ "Xcode Version" => Helper.xcode_version,
126
+ "Git" => `git --version`.strip.split("\n").first,
127
+ "Installation Source" => $PROGRAM_NAME,
128
+ "Host" => "#{product} #{version} (#{build})",
129
+ "Ruby Lib Dir" => RbConfig::CONFIG['libdir'],
130
+ "OpenSSL Version" => OpenSSL::OPENSSL_VERSION
131
+ }
132
+ table = ["| Key | Value |"]
133
+ table += table_content.collect { |k, v| "| #{k} | #{v} |" }
134
+
135
+ begin
136
+ rendered_table = MarkdownTableFormatter.new(table.join("\n"))
137
+ env_output << rendered_table.to_md
138
+ rescue => ex
139
+ UI.error(ex)
140
+ UI.error("Error rendering markdown table using the following text:")
141
+ UI.message(table.join("\n"))
142
+ env_output << table.join("\n")
143
+ end
144
+
145
+ env_output << "\n\n"
146
+ env_output
147
+ end
148
+
149
+ def self.print_fastlane_files
150
+ env_output = "### fastlane files:\n\n"
151
+
152
+ fastlane_path = FastlaneFolder.fastfile_path
153
+
154
+ if fastlane_path && File.exist?(fastlane_path)
155
+ env_output << "<details>"
156
+ env_output << "<summary>`#{fastlane_path}`</summary>\n"
157
+ env_output << "\n"
158
+ env_output << "```ruby\n"
159
+ env_output << File.read(fastlane_path)
160
+ env_output << "```\n"
161
+ env_output << "</details>"
162
+ else
163
+ env_output << "**No Fastfile found**\n"
164
+ end
165
+ env_output << "\n\n"
166
+
167
+ appfile_path = CredentialsManager::AppfileConfig.default_path
168
+ if appfile_path && File.exist?(appfile_path)
169
+ env_output << "<details>"
170
+ env_output << "<summary>`#{appfile_path}`</summary>\n"
171
+ env_output << "\n"
172
+ env_output << "```ruby\n"
173
+ env_output << File.read(appfile_path)
174
+ env_output << "```\n"
175
+ env_output << "</details>"
176
+ else
177
+ env_output << "**No Appfile found**\n"
178
+ end
179
+ env_output << "\n\n"
180
+ env_output
181
+ end
182
+
183
+ # Copy a given string into the clipboard
184
+ # Make sure to ask the user first, as some people don't
185
+ # use a clipboard manager, so they might lose something important
186
+ def self.copy_to_clipboard(string)
187
+ require 'tempfile'
188
+ Tempfile.create('environment_printer') do |tmp_file|
189
+ File.write(tmp_file, string)
190
+ `cat '#{tmp_file.path}' | pbcopy`
191
+ end
192
+ end
193
+ end
194
+ end
@@ -0,0 +1,62 @@
1
+ module Fastlane
2
+ class MarkdownTableFormatter
3
+ # taken from: https://github.com/benbalter/markdown-table-formatter
4
+ def initialize(string, header = true)
5
+ @doc = string
6
+ @header = header
7
+ end
8
+
9
+ # converts the markdown string into an array of arrays
10
+ def parse
11
+ @table = []
12
+ rows = @doc.split(/\r?\n/)
13
+ rows.each do |row|
14
+ row_array = row.split("|")
15
+ row_array.each(&:strip!)
16
+ @table.push row_array
17
+ end
18
+ @table.delete_at(1) if @header # strip header separator
19
+ @table
20
+ end
21
+
22
+ def table
23
+ @table ||= parse
24
+ end
25
+
26
+ def column_width(column)
27
+ width = 0
28
+ table.each do |row|
29
+ length = row[column].strip.length
30
+ width = length if length > width
31
+ end
32
+ width
33
+ end
34
+
35
+ def pad(string, length)
36
+ string.strip.ljust(length, ' ')
37
+ end
38
+
39
+ def separator(length)
40
+ "".ljust(length, '-')
41
+ end
42
+
43
+ def header_separator_row
44
+ output = []
45
+ [*0...table.first.length].each do |column|
46
+ output.push separator(column_width(column))
47
+ end
48
+ output
49
+ end
50
+
51
+ def to_md
52
+ output = ""
53
+ t = table.clone
54
+ t.insert(1, header_separator_row) if @header
55
+ t.each_with_index do |row, index|
56
+ row.map!.with_index { |cell_row, index_row| pad(cell_row, column_width(index_row)) }
57
+ output += "#{row.join(' | ').lstrip} |\n"
58
+ end
59
+ output
60
+ end
61
+ end
62
+ end
@@ -293,7 +293,7 @@ module Fastlane
293
293
  UI.error("Please follow the troubleshooting guide: #{TROUBLESHOOTING_URL}")
294
294
  end
295
295
 
296
- skip_print_plugin_info = self.plugin_references.empty? || CLIToolsDistributor.running_version_command?
296
+ skip_print_plugin_info = self.plugin_references.empty? || CLIToolsDistributor.running_version_command? || ENV["FASTLANE_ENV_PRINTER"]
297
297
 
298
298
  # We want to avoid printing output other than the version number if we are running `fastlane -v`
299
299
  print_plugin_information(self.plugin_references) unless skip_print_plugin_info
@@ -18,7 +18,7 @@ fastlane add_plugin <%= plugin_name %>
18
18
 
19
19
  ## Example
20
20
 
21
- Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
21
+ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
22
22
 
23
23
  **Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
24
24
 
@@ -30,7 +30,7 @@ To run both the tests, and code style validation, run
30
30
  rake
31
31
  ```
32
32
 
33
- To automatically fix many of the styling issues, use
33
+ To automatically fix many of the styling issues, use
34
34
  ```
35
35
  rubocop -a
36
36
  ```
@@ -49,4 +49,4 @@ For more information about how the `fastlane` plugin system works, check out the
49
49
 
50
50
  ## About `fastlane`
51
51
 
52
- `fastlane` is the easiest way to automate building and releasing your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
52
+ `fastlane` is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '1.105.3'.freeze
3
- DESCRIPTION = "The easiest way to automate building and releasing your iOS and Android apps"
2
+ VERSION = '1.106.0'.freeze
3
+ DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps"
4
4
  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: 1.105.3
4
+ version: 1.106.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2016-10-18 00:00:00.000000000 Z
18
+ date: 2016-10-24 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: krausefx-shenzhen
@@ -225,7 +225,7 @@ dependencies:
225
225
  requirements:
226
226
  - - ">="
227
227
  - !ruby/object:Gem::Version
228
- version: 0.52.3
228
+ version: 0.53.0
229
229
  - - "<"
230
230
  - !ruby/object:Gem::Version
231
231
  version: 1.0.0
@@ -235,7 +235,7 @@ dependencies:
235
235
  requirements:
236
236
  - - ">="
237
237
  - !ruby/object:Gem::Version
238
- version: 0.52.3
238
+ version: 0.53.0
239
239
  - - "<"
240
240
  - !ruby/object:Gem::Version
241
241
  version: 1.0.0
@@ -279,7 +279,7 @@ dependencies:
279
279
  requirements:
280
280
  - - ">="
281
281
  - !ruby/object:Gem::Version
282
- version: 0.36.0
282
+ version: 0.36.1
283
283
  - - "<"
284
284
  - !ruby/object:Gem::Version
285
285
  version: 1.0.0
@@ -289,7 +289,7 @@ dependencies:
289
289
  requirements:
290
290
  - - ">="
291
291
  - !ruby/object:Gem::Version
292
- version: 0.36.0
292
+ version: 0.36.1
293
293
  - - "<"
294
294
  - !ruby/object:Gem::Version
295
295
  version: 1.0.0
@@ -299,7 +299,7 @@ dependencies:
299
299
  requirements:
300
300
  - - ">="
301
301
  - !ruby/object:Gem::Version
302
- version: 1.14.2
302
+ version: 1.14.3
303
303
  - - "<"
304
304
  - !ruby/object:Gem::Version
305
305
  version: 2.0.0
@@ -309,7 +309,7 @@ dependencies:
309
309
  requirements:
310
310
  - - ">="
311
311
  - !ruby/object:Gem::Version
312
- version: 1.14.2
312
+ version: 1.14.3
313
313
  - - "<"
314
314
  - !ruby/object:Gem::Version
315
315
  version: 2.0.0
@@ -459,7 +459,7 @@ dependencies:
459
459
  requirements:
460
460
  - - ">="
461
461
  - !ruby/object:Gem::Version
462
- version: 1.10.1
462
+ version: 1.11.0
463
463
  - - "<"
464
464
  - !ruby/object:Gem::Version
465
465
  version: 2.0.0
@@ -469,7 +469,7 @@ dependencies:
469
469
  requirements:
470
470
  - - ">="
471
471
  - !ruby/object:Gem::Version
472
- version: 1.10.1
472
+ version: 1.11.0
473
473
  - - "<"
474
474
  - !ruby/object:Gem::Version
475
475
  version: 2.0.0
@@ -721,8 +721,8 @@ dependencies:
721
721
  - - "~>"
722
722
  - !ruby/object:Gem::Version
723
723
  version: 0.8.1
724
- description: The easiest way to automate building and releasing your iOS and Android
725
- apps
724
+ description: The easiest way to automate beta deployments and releases for your iOS
725
+ and Android apps
726
726
  email:
727
727
  - fastlane@krausefx.com
728
728
  executables:
@@ -941,6 +941,7 @@ files:
941
941
  - lib/fastlane/documentation/actions_list.rb
942
942
  - lib/fastlane/documentation/docs_generator.rb
943
943
  - lib/fastlane/documentation/markdown_docs_generator.rb
944
+ - lib/fastlane/environment_printer.rb
944
945
  - lib/fastlane/erb_template_helper.rb
945
946
  - lib/fastlane/fast_file.rb
946
947
  - lib/fastlane/fastlane_folder.rb
@@ -958,6 +959,7 @@ files:
958
959
  - lib/fastlane/lane.rb
959
960
  - lib/fastlane/lane_list.rb
960
961
  - lib/fastlane/lane_manager.rb
962
+ - lib/fastlane/markdown_table_formatter.rb
961
963
  - lib/fastlane/new_action.rb
962
964
  - lib/fastlane/one_off.rb
963
965
  - lib/fastlane/other_action.rb
@@ -1025,6 +1027,7 @@ rubyforge_project:
1025
1027
  rubygems_version: 2.6.6
1026
1028
  signing_key:
1027
1029
  specification_version: 4
1028
- summary: The easiest way to automate building and releasing your iOS and Android apps
1030
+ summary: The easiest way to automate beta deployments and releases for your iOS and
1031
+ Android apps
1029
1032
  test_files: []
1030
1033
  has_rdoc: