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.
- .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 |
.fastlane_enabled? ⇒ Boolean
140 141 142 143 |
# File 'lib/fastlane_core/helper.rb', line 140 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)
146 147 148 149 150 151 152 |
# File 'lib/fastlane_core/helper.rb', line 146 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?
98 99 100 |
# File 'lib/fastlane_core/helper.rb', line 98 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
93 94 95 |
# File 'lib/fastlane_core/helper.rb', line 93 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.
127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/fastlane_core/helper.rb', line 127 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.
107 108 109 110 |
# File 'lib/fastlane_core/helper.rb', line 107 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”).
113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/fastlane_core/helper.rb', line 113 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 |