Module: FastlaneCore::Helper
- Defined in:
- lib/fastlane_core/helper.rb
Class Method Summary collapse
-
.ci? ⇒ boolean
True if building in a known CI environment.
- .fastlane_enabled? ⇒ Boolean
-
.gem_path(gem_name) ⇒ Object
Path to the installed gem to load resources (e.g. resign.sh).
- .is_ci? ⇒ Boolean
- .is_mac? ⇒ Boolean
-
.is_test? ⇒ Boolean
Use Helper.test? and Helper.ci? instead (legacy calls) rubocop:disable Style/PredicateName.
-
.iterm? ⇒ Boolean
Does the user use iTerm?.
-
.log ⇒ Object
Logging happens using this method.
-
.log_alert(text) ⇒ Object
This method can be used to add nice lines around the actual log Use this to log more important things The logs will be green automatically.
-
.mac? ⇒ Boolean
Is the currently running computer a Mac?.
-
.mac_stock_terminal? ⇒ Boolean
Does the user use the Mac stock terminal.
-
.test? ⇒ Boolean
True if the currently running program is a unit test.
-
.transporter_path ⇒ Object
The full path to the iTMSTransporter executable.
-
.xcode_path ⇒ Object
The full path to the Xcode developer tools of the currently running system.
-
.xcode_version ⇒ Object
The version of the currently used Xcode installation (e.g. “7.0”).
Class Method Details
.ci? ⇒ boolean
Returns true if building in a known CI environment.
52 53 54 55 56 57 58 |
# File 'lib/fastlane_core/helper.rb', line 52 def self.ci? # Check for Jenkins, Travis CI, ... environment variables ['JENKINS_URL', 'TRAVIS', 'CIRCLECI', 'CI'].each do |current| return true if ENV.key?(current) end return false end |
.fastlane_enabled? ⇒ Boolean
128 129 130 131 |
# File 'lib/fastlane_core/helper.rb', line 128 def self.fastlane_enabled? # This is called from the root context on the first start @@enabled ||= File.directory? "./fastlane" end |
.gem_path(gem_name) ⇒ Object
Path to the installed gem to load resources (e.g. resign.sh)
134 135 136 137 138 139 140 |
# File 'lib/fastlane_core/helper.rb', line 134 def self.gem_path(gem_name) if !Helper.is_test? and Gem::Specification.find_all_by_name(gem_name).any? return Gem::Specification.find_by_name(gem_name).gem_dir else return './' end end |
.is_ci? ⇒ Boolean
71 72 73 |
# File 'lib/fastlane_core/helper.rb', line 71 def self.is_ci? ci? end |
.is_mac? ⇒ Boolean
75 76 77 |
# File 'lib/fastlane_core/helper.rb', line 75 def self.is_mac? self.mac? end |
.is_test? ⇒ Boolean
Use Helper.test? and Helper.ci? instead (legacy calls) rubocop:disable Style/PredicateName
67 68 69 |
# File 'lib/fastlane_core/helper.rb', line 67 def self.is_test? self.test? end |
.iterm? ⇒ Boolean
Does the user use iTerm?
86 87 88 |
# File 'lib/fastlane_core/helper.rb', line 86 def self.iterm? !!ENV["ITERM_SESSION_ID"] end |
.log ⇒ Object
Logging happens using this method
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/fastlane_core/helper.rb', line 6 def self.log if is_test? @@log ||= Logger.new(nil) # don't show any logs when running tests else @@log ||= Logger.new($stdout) end @@log.formatter = proc do |severity, datetime, progname, msg| string = "#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%2N')}]: " if $verbose string = "[#{datetime.strftime('%H:%M:%S')}]: " unless $verbose second = "#{msg}\n" if severity == "DEBUG" string = string.magenta elsif severity == "INFO" string = string.white elsif severity == "WARN" string = string.yellow elsif severity == "ERROR" string = string.red elsif severity == "FATAL" string = string.red.bold end [string, second].join("") end @@log end |
.log_alert(text) ⇒ Object
This method can be used to add nice lines around the actual log Use this to log more important things The logs will be green automatically
39 40 41 42 43 44 |
# File 'lib/fastlane_core/helper.rb', line 39 def self.log_alert(text) i = text.length + 8 Helper.log.info(("-" * i).green) Helper.log.info("--- ".green + text.green + " ---".green) Helper.log.info(("-" * i).green) end |
.mac? ⇒ Boolean
Is the currently running computer a Mac?
61 62 63 |
# File 'lib/fastlane_core/helper.rb', line 61 def self.mac? (/darwin/ =~ RUBY_PLATFORM) != nil end |
.mac_stock_terminal? ⇒ Boolean
Does the user use the Mac stock terminal
81 82 83 |
# File 'lib/fastlane_core/helper.rb', line 81 def self.mac_stock_terminal? !!ENV["TERM_PROGRAM_VERSION"] end |
.test? ⇒ Boolean
Returns true if the currently running program is a unit test.
47 48 49 |
# File 'lib/fastlane_core/helper.rb', line 47 def self.test? defined?SpecHelper end |
.transporter_path ⇒ Object
Returns the full path to the iTMSTransporter executable.
115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/fastlane_core/helper.rb', line 115 def self.transporter_path return '' unless self.is_mac? # so tests work on Linx too [ "../Applications/Application Loader.app/Contents/MacOS/itms/bin/iTMSTransporter", "../Applications/Application Loader.app/Contents/itms/bin/iTMSTransporter" ].each do |path| result = File.join(self.xcode_path, path) return result if File.exist?(result) end raise "Could not find transporter at #{self.xcode_path}. Please make sure you set the correct path to your Xcode installation.".red end |
.xcode_path ⇒ Object
Returns the full path to the Xcode developer tools of the currently running system.
95 96 97 98 |
# File 'lib/fastlane_core/helper.rb', line 95 def self.xcode_path return "" if self.is_test? and !self.is_mac? `xcode-select -p`.delete("\n") + "/" end |
.xcode_version ⇒ Object
Returns The version of the currently used Xcode installation (e.g. “7.0”).
101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/fastlane_core/helper.rb', line 101 def self.xcode_version return @xcode_version if @xcode_version begin output = `DEVELOPER_DIR='' "#{xcode_path}/usr/bin/xcodebuild" -version` @xcode_version = output.split("\n").first.split(' ')[1] rescue => ex Helper.log.error ex Helper.log.error "Error detecting currently used Xcode installation".red end @xcode_version end |