Module: FastlaneCore::Helper
- Defined in:
- lib/fastlane_core/helper.rb
Overview
rubocop:disable Metrics/ModuleLength
Class Method Summary collapse
-
.backticks(command, print: true) ⇒ Object
Runs a given command using backticks (‘) and prints them out using the UI.command method.
-
.ci? ⇒ boolean
True if building in a known CI environment.
-
.colors_disabled? ⇒ Boolean
Do we want to disable the colored output?.
- .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
.backticks(command, print: true) ⇒ Object
Runs a given command using backticks (‘) and prints them out using the UI.command method
51 52 53 54 55 56 |
# File 'lib/fastlane_core/helper.rb', line 51 def self.backticks(command, print: true) UI.command(command) if print result = `#{command}` UI.command_output(result) if print return result end |
.ci? ⇒ boolean
Returns true if building in a known CI environment.
64 65 66 67 68 69 70 |
# File 'lib/fastlane_core/helper.rb', line 64 def self.ci? # Check for Jenkins, Travis CI, ... environment variables ['JENKINS_URL', 'TRAVIS', 'CIRCLECI', 'CI', 'TEAMCITY_VERSION', 'GO_PIPELINE_NAME', 'bamboo_buildKey'].each do |current| return true if ENV.key?(current) end return false end |
.colors_disabled? ⇒ Boolean
Do we want to disable the colored output?
93 94 95 |
# File 'lib/fastlane_core/helper.rb', line 93 def self.colors_disabled? ENV["FASTLANE_DISABLE_COLORS"] end |
.fastlane_enabled? ⇒ Boolean
145 146 147 148 |
# File 'lib/fastlane_core/helper.rb', line 145 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)
151 152 153 154 155 156 157 |
# File 'lib/fastlane_core/helper.rb', line 151 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
83 84 85 |
# File 'lib/fastlane_core/helper.rb', line 83 def self.is_ci? ci? end |
.is_mac? ⇒ Boolean
87 88 89 |
# File 'lib/fastlane_core/helper.rb', line 87 def self.is_mac? self.mac? end |
.is_test? ⇒ Boolean
Use Helper.test? and Helper.ci? instead (legacy calls) rubocop:disable Style/PredicateName
79 80 81 |
# File 'lib/fastlane_core/helper.rb', line 79 def self.is_test? self.test? end |
.iterm? ⇒ Boolean
Does the user use iTerm?
103 104 105 |
# File 'lib/fastlane_core/helper.rb', line 103 def self.iterm? !!ENV["ITERM_SESSION_ID"] end |
.log ⇒ Object
Logging happens using this method
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 35 36 37 |
# File 'lib/fastlane_core/helper.rb', line 7 def self.log $stdout.sync = true 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
42 43 44 45 46 47 |
# File 'lib/fastlane_core/helper.rb', line 42 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?
73 74 75 |
# File 'lib/fastlane_core/helper.rb', line 73 def self.mac? (/darwin/ =~ RUBY_PLATFORM) != nil end |
.mac_stock_terminal? ⇒ Boolean
Does the user use the Mac stock terminal
98 99 100 |
# File 'lib/fastlane_core/helper.rb', line 98 def self.mac_stock_terminal? !!ENV["TERM_PROGRAM_VERSION"] end |
.test? ⇒ Boolean
Returns true if the currently running program is a unit test.
59 60 61 |
# File 'lib/fastlane_core/helper.rb', line 59 def self.test? defined?SpecHelper end |
.transporter_path ⇒ Object
Returns the full path to the iTMSTransporter executable.
132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/fastlane_core/helper.rb', line 132 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.
112 113 114 115 |
# File 'lib/fastlane_core/helper.rb', line 112 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”).
118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/fastlane_core/helper.rb', line 118 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 |