fastlane_core 0.28.0 → 0.29.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 +4 -4
- data/README.md +1 -1
- data/lib/fastlane_core.rb +1 -0
- data/lib/fastlane_core/command_executor.rb +4 -6
- data/lib/fastlane_core/configuration/commander_generator.rb +2 -0
- data/lib/fastlane_core/helper.rb +11 -0
- data/lib/fastlane_core/print_table.rb +1 -1
- data/lib/fastlane_core/ui/disable_colors.rb +17 -0
- data/lib/fastlane_core/ui/implementations/shell.rb +100 -0
- data/lib/fastlane_core/ui/interface.rb +102 -0
- data/lib/fastlane_core/ui/ui.rb +28 -0
- data/lib/fastlane_core/version.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26d39ce9978be6553334d8cf4213bb844d5df8ff
|
4
|
+
data.tar.gz: bd80eed52b439ac6c7ce8792137df2256f9c1579
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ab0dc29557bce345a43f887ec2f3eae3738c86b7cd95055ad49b28b3147e9b9a3a795e7eddce6c9ebf7e821cda4afd3d32072930b7077641e8b87b418751402
|
7
|
+
data.tar.gz: 043b377c7cca9211f3dbfe3c2178f0fb07cff105f91bfc4237c3972aadf1ef57ab17f9541996ea362588361109d06ad45ed623af691634c5282ab6395eea5103
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
<a href="https://github.com/fastlane/deliver">deliver</a> •
|
10
10
|
<a href="https://github.com/fastlane/snapshot">snapshot</a> •
|
11
11
|
<a href="https://github.com/fastlane/frameit">frameit</a> •
|
12
|
-
<a href="https://github.com/fastlane/
|
12
|
+
<a href="https://github.com/fastlane/pem">pem</a> •
|
13
13
|
<a href="https://github.com/fastlane/sigh">sigh</a> •
|
14
14
|
<a href="https://github.com/fastlane/produce">produce</a> •
|
15
15
|
<a href="https://github.com/fastlane/cert">cert</a> •
|
data/lib/fastlane_core.rb
CHANGED
@@ -15,10 +15,10 @@ module FastlaneCore
|
|
15
15
|
|
16
16
|
output = []
|
17
17
|
command = command.join(" ") if command.kind_of?(Array)
|
18
|
-
|
18
|
+
UI.command(command) if print_command
|
19
19
|
|
20
20
|
if print_all and loading # this is only used to show the "Loading text"...
|
21
|
-
|
21
|
+
UI.command_output(loading)
|
22
22
|
end
|
23
23
|
|
24
24
|
begin
|
@@ -29,14 +29,12 @@ module FastlaneCore
|
|
29
29
|
|
30
30
|
next unless print_all
|
31
31
|
|
32
|
-
line = line.cyan
|
33
|
-
|
34
32
|
# Prefix the current line with a string
|
35
33
|
prefix.each do |element|
|
36
34
|
line = element[:prefix] + line if element[:block] && element[:block].call(line)
|
37
35
|
end
|
38
36
|
|
39
|
-
|
37
|
+
UI.command_output(line)
|
40
38
|
end
|
41
39
|
Process.wait(pid)
|
42
40
|
end
|
@@ -54,7 +52,7 @@ module FastlaneCore
|
|
54
52
|
if status != 0
|
55
53
|
o = output.join("\n")
|
56
54
|
puts o # the user has the right to see the raw output
|
57
|
-
|
55
|
+
UI.error "Exit status: #{status}"
|
58
56
|
error.call(o, status)
|
59
57
|
end
|
60
58
|
|
@@ -11,6 +11,8 @@ module FastlaneCore
|
|
11
11
|
|
12
12
|
short_codes = []
|
13
13
|
options.each do |option|
|
14
|
+
next if option.description.to_s.length == 0 # "private" options
|
15
|
+
|
14
16
|
appendix = (option.is_string ? "STRING" : "")
|
15
17
|
type = (option.is_string ? String : nil)
|
16
18
|
short_option = option.short_option
|
data/lib/fastlane_core/helper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'logger'
|
2
2
|
|
3
3
|
module FastlaneCore
|
4
|
+
# rubocop:disable Metrics/ModuleLength
|
4
5
|
module Helper
|
5
6
|
# Logging happens using this method
|
6
7
|
def self.log
|
@@ -45,6 +46,15 @@ module FastlaneCore
|
|
45
46
|
Helper.log.info(("-" * i).green)
|
46
47
|
end
|
47
48
|
|
49
|
+
# Runs a given command using backticks (`)
|
50
|
+
# and prints them out using the UI.command method
|
51
|
+
def self.backticks(command, print: true)
|
52
|
+
UI.command(command) if print
|
53
|
+
result = `#{command}`
|
54
|
+
UI.command_output(result) if print
|
55
|
+
return result
|
56
|
+
end
|
57
|
+
|
48
58
|
# @return true if the currently running program is a unit test
|
49
59
|
def self.test?
|
50
60
|
defined?SpecHelper
|
@@ -141,4 +151,5 @@ module FastlaneCore
|
|
141
151
|
end
|
142
152
|
end
|
143
153
|
end
|
154
|
+
# rubocop:enable Metrics/ModuleLength
|
144
155
|
end
|
@@ -8,7 +8,7 @@ module FastlaneCore
|
|
8
8
|
rows = []
|
9
9
|
|
10
10
|
config.available_options.each do |config_item|
|
11
|
-
value = config[config_item.key]
|
11
|
+
value = config._values[config_item.key] # using `_values` here to not ask the user for missing values at this point
|
12
12
|
next if value.nil?
|
13
13
|
next if value.to_s == ""
|
14
14
|
next if hide_keys.include?(config_item.key)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# This code overwrites the methods from the colored gem
|
2
|
+
# via https://github.com/defunkt/colored/blob/master/lib/colored.rb
|
3
|
+
|
4
|
+
require 'colored'
|
5
|
+
|
6
|
+
class String
|
7
|
+
Colored::COLORS.keys.each do |color|
|
8
|
+
define_method(color) do
|
9
|
+
self # do nothing with the string, but return it
|
10
|
+
end
|
11
|
+
end
|
12
|
+
Colored::EXTRAS.keys.each do |extra|
|
13
|
+
define_method(extra) do
|
14
|
+
self # do nothing with the string, but return it
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module FastlaneCore
|
2
|
+
# Shell is the terminal output of things
|
3
|
+
# For documentation for each of the methods open `interface.rb`
|
4
|
+
class Shell < Interface
|
5
|
+
def log
|
6
|
+
return @log if @log
|
7
|
+
|
8
|
+
$stdout.sync = true
|
9
|
+
|
10
|
+
if Helper.is_test?
|
11
|
+
@log ||= Logger.new(nil) # don't show any logs when running tests
|
12
|
+
else
|
13
|
+
@log ||= Logger.new($stdout)
|
14
|
+
end
|
15
|
+
|
16
|
+
@log.formatter = proc do |severity, datetime, progname, msg|
|
17
|
+
string = "#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%2N')}]: " if $verbose
|
18
|
+
string = "[#{datetime.strftime('%H:%M:%S')}]: " unless $verbose
|
19
|
+
|
20
|
+
string += "#{msg}\n"
|
21
|
+
|
22
|
+
string
|
23
|
+
end
|
24
|
+
|
25
|
+
@log
|
26
|
+
end
|
27
|
+
|
28
|
+
#####################################################
|
29
|
+
# @!group Messaging: show text to the user
|
30
|
+
#####################################################
|
31
|
+
|
32
|
+
def error(message)
|
33
|
+
log.error(message.red)
|
34
|
+
end
|
35
|
+
|
36
|
+
def important(message)
|
37
|
+
log.warn(message.yellow)
|
38
|
+
end
|
39
|
+
|
40
|
+
def success(message)
|
41
|
+
log.info(message.green)
|
42
|
+
end
|
43
|
+
|
44
|
+
def message(message)
|
45
|
+
log.info(message)
|
46
|
+
end
|
47
|
+
|
48
|
+
def command(message)
|
49
|
+
log.info("$ #{message}".cyan.underline)
|
50
|
+
end
|
51
|
+
|
52
|
+
def command_output(message)
|
53
|
+
actual = (message.split("\r").last || "") # as clearing the line will remove the `>` and the time stamp
|
54
|
+
actual.split("\n").each do |msg|
|
55
|
+
log.info("> #{msg}".magenta)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def verbose(message)
|
60
|
+
log.debug(message) if $verbose
|
61
|
+
end
|
62
|
+
|
63
|
+
def header(message)
|
64
|
+
i = message.length + 8
|
65
|
+
Helper.log.info(("-" * i).green)
|
66
|
+
Helper.log.info(("--- " + message + " ---").green)
|
67
|
+
Helper.log.info(("-" * i).green)
|
68
|
+
end
|
69
|
+
|
70
|
+
#####################################################
|
71
|
+
# @!group Errors: Different kinds of exceptions
|
72
|
+
#####################################################
|
73
|
+
|
74
|
+
def crash!(exception)
|
75
|
+
if exception.kind_of?(String)
|
76
|
+
raise exception.red
|
77
|
+
elsif exception.kind_of?(Exception)
|
78
|
+
# From https://stackoverflow.com/a/4789702/445598
|
79
|
+
# We do this to make the actual error message red and therefore more visible
|
80
|
+
begin
|
81
|
+
raise exception
|
82
|
+
rescue => ex
|
83
|
+
raise $!, "[!] #{ex.message}".red, $!.backtrace
|
84
|
+
end
|
85
|
+
else
|
86
|
+
raise exception # we're just raising whatever we have here #yolo
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def user_error!(error_message)
|
91
|
+
error_message = "[!] #{error_message}".red
|
92
|
+
if $verbose
|
93
|
+
# On verbose we want to see the full stack trace
|
94
|
+
raise error_message
|
95
|
+
else
|
96
|
+
abort(error_message)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module FastlaneCore
|
2
|
+
# Abstract super class
|
3
|
+
class Interface
|
4
|
+
#####################################################
|
5
|
+
# @!group Messaging: show text to the user
|
6
|
+
#####################################################
|
7
|
+
|
8
|
+
# Level Error: Can be used to show additional error
|
9
|
+
# information before actually raising an exception
|
10
|
+
# or can be used to just show an error from which
|
11
|
+
# fastlane can recover (much magic)
|
12
|
+
#
|
13
|
+
# By default those messages are shown in red
|
14
|
+
def error(_message)
|
15
|
+
not_implemented(__method__)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Level Important: Can be used to show warnings to the user
|
19
|
+
# not necessarly negative, but something the user should
|
20
|
+
# be aware of.
|
21
|
+
#
|
22
|
+
# By default those messages are shown in yellow
|
23
|
+
def important(_message)
|
24
|
+
not_implemented(__method__)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Level Success: Show that something was successful
|
28
|
+
#
|
29
|
+
# By default those messages are shown in green
|
30
|
+
def success(_message)
|
31
|
+
not_implemented(__method__)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Level Message: Show a neutral message to the user
|
35
|
+
#
|
36
|
+
# By default those messages shown in white/black
|
37
|
+
def message(_message)
|
38
|
+
not_implemented(__method__)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Level Command: Print out a terminal command that is being
|
42
|
+
# executed.
|
43
|
+
#
|
44
|
+
# By default those messages shown in cyan
|
45
|
+
def command(_message)
|
46
|
+
not_implemented(__method__)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Level Command Output: Print the output of a command with
|
50
|
+
# this method
|
51
|
+
#
|
52
|
+
# By default those messages shown in magenta
|
53
|
+
def command_output(_message)
|
54
|
+
not_implemented(__method__)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Level Verbose: Print out additional information for the
|
58
|
+
# users that are interested. Will only be printed when
|
59
|
+
# $verbose = true
|
60
|
+
#
|
61
|
+
# By default those messages are shown in white
|
62
|
+
def verbose(_message)
|
63
|
+
not_implemented(__method__)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Print a header = a text in a box
|
67
|
+
# use this if this message is really important
|
68
|
+
def header(_message)
|
69
|
+
not_implemented(__method__)
|
70
|
+
end
|
71
|
+
|
72
|
+
#####################################################
|
73
|
+
# @!group Errors: Different kinds of exceptions
|
74
|
+
#####################################################
|
75
|
+
|
76
|
+
# Pass an exception to this method to exit the program
|
77
|
+
# using the given exception
|
78
|
+
def crash!(_exception)
|
79
|
+
not_implemented(__method__)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Use this method to exit the program because of an user error
|
83
|
+
# e.g. app doesn't exist on the given Developer Account
|
84
|
+
# or invalid user credentials
|
85
|
+
# This will show the error message, but doesn't show the full
|
86
|
+
# stack trace
|
87
|
+
def user_error!(_error_message)
|
88
|
+
not_implemented(__method__)
|
89
|
+
end
|
90
|
+
|
91
|
+
#####################################################
|
92
|
+
# @!group Helpers
|
93
|
+
#####################################################
|
94
|
+
def not_implemented(method_name)
|
95
|
+
raise "Current UI '#{self}' doesn't support method '#{method_name}'".red
|
96
|
+
end
|
97
|
+
|
98
|
+
def to_s
|
99
|
+
self.class.name.split('::').last
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module FastlaneCore
|
2
|
+
class UI
|
3
|
+
class << self
|
4
|
+
def current
|
5
|
+
@current ||= Shell.new
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.method_missing(method_sym, *args, &_block)
|
10
|
+
raise "Only pass exactly one parameter to UI".red if args.length != 1
|
11
|
+
|
12
|
+
# not using `responds` beacuse we don't care about methods like .to_s and so on
|
13
|
+
interface_methods = Interface.instance_methods - Object.instance_methods
|
14
|
+
raise "Unknown method '#{method_sym}', supported #{interface_methods}" unless interface_methods.include?(method_sym)
|
15
|
+
|
16
|
+
self.current.send(method_sym, args.first)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'fastlane_core/ui/interface'
|
22
|
+
|
23
|
+
# Import all available implementations
|
24
|
+
Dir[File.expand_path('implementations/*.rb', File.dirname(__FILE__))].each do |file|
|
25
|
+
require file
|
26
|
+
end
|
27
|
+
|
28
|
+
require 'fastlane_core/ui/disable_colors' if ENV["FASTLANE_DISABLE_COLORS"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.29.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-
|
11
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -339,6 +339,10 @@ files:
|
|
339
339
|
- lib/fastlane_core/project.rb
|
340
340
|
- lib/fastlane_core/provisioning_profile.rb
|
341
341
|
- lib/fastlane_core/simulator.rb
|
342
|
+
- lib/fastlane_core/ui/disable_colors.rb
|
343
|
+
- lib/fastlane_core/ui/implementations/shell.rb
|
344
|
+
- lib/fastlane_core/ui/interface.rb
|
345
|
+
- lib/fastlane_core/ui/ui.rb
|
342
346
|
- lib/fastlane_core/update_checker/changelog.rb
|
343
347
|
- lib/fastlane_core/update_checker/update_checker.rb
|
344
348
|
- lib/fastlane_core/version.rb
|
@@ -362,7 +366,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
362
366
|
version: '0'
|
363
367
|
requirements: []
|
364
368
|
rubyforge_project:
|
365
|
-
rubygems_version: 2.
|
369
|
+
rubygems_version: 2.4.0
|
366
370
|
signing_key:
|
367
371
|
specification_version: 4
|
368
372
|
summary: Contains all shared code/dependencies of the fastlane.tools
|