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.
-
.buildlog_path ⇒ Object
Logs base directory.
-
.bundler? ⇒ boolean
True if executing with bundler (like ‘bundle exec fastlane [action]’).
-
.ci? ⇒ boolean
True if building in a known CI environment.
-
.colors_disabled? ⇒ Boolean
Do we want to disable the colored output?.
-
.contained_fastlane? ⇒ Boolean
Do we run from a bundled fastlane, which contains Ruby and OpenSSL? Usually this means the fastlane directory is ~/.fastlane/bin/ We set this value via the environment variable ‘FASTLANE_SELF_CONTAINED`.
- .fastlane_enabled? ⇒ Boolean
-
.gem_path(gem_name) ⇒ Object
DEPRECATED: Use the ‘ROOT` constant from the appropriate tool module instead e.g.
-
.homebrew? ⇒ Boolean
returns true if fastlane was installed via Homebrew.
- .is_ci? ⇒ Boolean
- .is_mac? ⇒ Boolean
-
.is_test? ⇒ Boolean
Use Helper.test? and Helper.ci? instead (legacy calls).
-
.iterm? ⇒ Boolean
Does the user use iTerm?.
-
.itms_path ⇒ Object
The full path to the iTMSTransporter executable.
- .keychain_path(name) ⇒ Object
- .linux? ⇒ Boolean
-
.log ⇒ Object
This method is deprecated, use the ‘UI` class github.com/fastlane/fastlane/blob/master/fastlane/docs/UI.md.
-
.mac? ⇒ Boolean
Is the currently running computer a Mac?.
-
.mac_app? ⇒ Boolean
returns true if fastlane was installed from the Fabric Mac app.
-
.mac_stock_terminal? ⇒ Boolean
Does the user use the Mac stock terminal.
-
.rubygems? ⇒ Boolean
returns true if fastlane was installed via RubyGems.
-
.strip_ansi_colors(str) ⇒ Object
removes ANSI colors from string.
-
.test? ⇒ Boolean
True if the currently running program is a unit test.
- .transporter_java_executable_path ⇒ Object
- .transporter_java_ext_dir ⇒ Object
- .transporter_java_jar_path ⇒ Object
- .transporter_java_path ⇒ Object
-
.transporter_path ⇒ Object
The full path to the iTMSTransporter executable.
- .transporter_user_dir ⇒ Object
- .windows? ⇒ Boolean
-
.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
16 17 18 19 20 21 |
# File 'lib/fastlane_core/helper.rb', line 16 def self.backticks(command, print: true) UI.command(command) if print result = `#{command}` UI.command_output(result) if print return result end |
.buildlog_path ⇒ Object
Logs base directory
116 117 118 |
# File 'lib/fastlane_core/helper.rb', line 116 def self.buildlog_path return ENV["FL_BUILDLOG_PATH"] || "~/Library/Logs" end |
.bundler? ⇒ boolean
Returns true if executing with bundler (like ‘bundle exec fastlane [action]’).
34 35 36 37 38 39 40 |
# File 'lib/fastlane_core/helper.rb', line 34 def self.bundler? # Bundler environment variable ['BUNDLE_BIN_PATH', 'BUNDLE_GEMFILE'].each do |current| return true if ENV.key?(current) end return false end |
.ci? ⇒ boolean
Returns true if building in a known CI environment.
65 66 67 68 69 70 71 |
# File 'lib/fastlane_core/helper.rb', line 65 def self.ci? # Check for Jenkins, Travis CI, ... environment variables ['JENKINS_HOME', 'JENKINS_URL', 'TRAVIS', 'CIRCLECI', 'CI', 'TEAMCITY_VERSION', 'GO_PIPELINE_NAME', 'bamboo_buildKey', 'GITLAB_CI', 'XCS'].each do |current| return true if ENV.key?(current) end return false end |
.colors_disabled? ⇒ Boolean
Do we want to disable the colored output?
101 102 103 |
# File 'lib/fastlane_core/helper.rb', line 101 def self.colors_disabled? ENV["FASTLANE_DISABLE_COLORS"] end |
.contained_fastlane? ⇒ Boolean
Do we run from a bundled fastlane, which contains Ruby and OpenSSL? Usually this means the fastlane directory is ~/.fastlane/bin/ We set this value via the environment variable ‘FASTLANE_SELF_CONTAINED`
45 46 47 |
# File 'lib/fastlane_core/helper.rb', line 45 def self.contained_fastlane? ENV["FASTLANE_SELF_CONTAINED"].to_s == "true" && !self.homebrew? end |
.fastlane_enabled? ⇒ Boolean
220 221 222 223 |
# File 'lib/fastlane_core/helper.rb', line 220 def self.fastlane_enabled? # This is called from the root context on the first start @enabled ||= (File.directory?("./fastlane") || File.directory?("./.fastlane")) end |
.gem_path(gem_name) ⇒ Object
DEPRECATED: Use the ‘ROOT` constant from the appropriate tool module instead e.g. File.join(Sigh::ROOT, ’lib’, ‘assets’, ‘resign.sh’)
Path to the installed gem to load resources (e.g. resign.sh)
229 230 231 232 233 234 235 236 237 |
# File 'lib/fastlane_core/helper.rb', line 229 def self.gem_path(gem_name) UI.deprecated('`Helper.gem_path` is deprecated. Use the `ROOT` constant from the appropriate tool module instead.') 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 |
.homebrew? ⇒ Boolean
returns true if fastlane was installed via Homebrew
55 56 57 |
# File 'lib/fastlane_core/helper.rb', line 55 def self.homebrew? ENV["FASTLANE_INSTALLED_VIA_HOMEBREW"].to_s == "true" end |
.is_ci? ⇒ Boolean
92 93 94 |
# File 'lib/fastlane_core/helper.rb', line 92 def self.is_ci? ci? end |
.is_mac? ⇒ Boolean
96 97 98 |
# File 'lib/fastlane_core/helper.rb', line 96 def self.is_mac? self.mac? end |
.is_test? ⇒ Boolean
Use Helper.test? and Helper.ci? instead (legacy calls)
88 89 90 |
# File 'lib/fastlane_core/helper.rb', line 88 def self.is_test? self.test? end |
.iterm? ⇒ Boolean
Does the user use iTerm?
111 112 113 |
# File 'lib/fastlane_core/helper.rb', line 111 def self.iterm? !!ENV["ITERM_SESSION_ID"] end |
.itms_path ⇒ Object
Returns the full path to the iTMSTransporter executable.
206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/fastlane_core/helper.rb', line 206 def self.itms_path return ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"] if ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"] return '' unless self.is_mac? # so tests work on Linx too [ "../Applications/Application Loader.app/Contents/MacOS/itms", "../Applications/Application Loader.app/Contents/itms" ].each do |path| result = File.(File.join(self.xcode_path, path)) return result if File.exist?(result) end UI.user_error!("Could not find transporter at #{self.xcode_path}. Please make sure you set the correct path to your Xcode installation.") end |
.keychain_path(name) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
# File 'lib/fastlane_core/helper.rb', line 169 def self.keychain_path(name) # Existing code expects that a keychain name will be expanded into a default path to Libary/Keychains # in the user's home directory. However, this will not allow the user to pass an absolute path # for the keychain value # # So, if the passed value can't be resolved as a file in Library/Keychains, just use it as-is # as the keychain path. # # We need to expand each path because File.exist? won't handle directories including ~ properly # # We also try to append `-db` at the end of the file path, as with Sierra the default Keychain name # has changed for some users: https://github.com/fastlane/fastlane/issues/5649 # # Remove the ".keychain" at the end of the name name.sub!(/\.keychain$/, "") possible_locations = [ File.join(Dir.home, 'Library', 'Keychains', name), name ].map { |path| File.(path) } # Transforms ["thing"] to ["thing", "thing-db", "thing.keychain", "thing.keychain-db"] keychain_paths = [] possible_locations.each do |location| keychain_paths << location keychain_paths << "#{location}-db" keychain_paths << "#{location}.keychain" keychain_paths << "#{location}.keychain-db" end keychain_path = keychain_paths.find { |path| File.exist?(path) } UI.user_error!("Could not locate the provided keychain. Tried:\n\t#{keychain_paths.join("\n\t")}") unless keychain_path keychain_path end |
.linux? ⇒ Boolean
78 79 80 |
# File 'lib/fastlane_core/helper.rb', line 78 def self.linux? (/linux/ =~ RUBY_PLATFORM) != nil end |
.log ⇒ Object
This method is deprecated, use the ‘UI` class github.com/fastlane/fastlane/blob/master/fastlane/docs/UI.md
9 10 11 12 |
# File 'lib/fastlane_core/helper.rb', line 9 def self.log UI.deprecated "Helper.log is deprecated. Use `UI` class instead" UI.current.log end |
.mac? ⇒ Boolean
Is the currently running computer a Mac?
83 84 85 |
# File 'lib/fastlane_core/helper.rb', line 83 def self.mac? (/darwin/ =~ RUBY_PLATFORM) != nil end |
.mac_app? ⇒ Boolean
returns true if fastlane was installed from the Fabric Mac app
50 51 52 |
# File 'lib/fastlane_core/helper.rb', line 50 def self.mac_app? ENV["FASTLANE_SELF_CONTAINED"].to_s == "false" end |
.mac_stock_terminal? ⇒ Boolean
Does the user use the Mac stock terminal
106 107 108 |
# File 'lib/fastlane_core/helper.rb', line 106 def self.mac_stock_terminal? !!ENV["TERM_PROGRAM_VERSION"] end |
.rubygems? ⇒ Boolean
returns true if fastlane was installed via RubyGems
60 61 62 |
# File 'lib/fastlane_core/helper.rb', line 60 def self.rubygems? !self.bundler? && !self.contained_fastlane? && !self.homebrew? && !self.mac_app? end |
.strip_ansi_colors(str) ⇒ Object
removes ANSI colors from string
29 30 31 |
# File 'lib/fastlane_core/helper.rb', line 29 def self.strip_ansi_colors(str) str.gsub(/\e\[([;\d]+)?m/, '') end |
.test? ⇒ Boolean
Returns true if the currently running program is a unit test.
24 25 26 |
# File 'lib/fastlane_core/helper.rb', line 24 def self.test? defined? SpecHelper end |
.transporter_java_executable_path ⇒ Object
144 145 146 |
# File 'lib/fastlane_core/helper.rb', line 144 def self.transporter_java_executable_path return File.join(self.transporter_java_path, 'bin', 'java') end |
.transporter_java_ext_dir ⇒ Object
148 149 150 |
# File 'lib/fastlane_core/helper.rb', line 148 def self.transporter_java_ext_dir return File.join(self.transporter_java_path, 'lib', 'ext') end |
.transporter_java_jar_path ⇒ Object
152 153 154 |
# File 'lib/fastlane_core/helper.rb', line 152 def self.transporter_java_jar_path return File.join(self.itms_path, 'lib', 'itmstransporter-launcher.jar') end |
.transporter_java_path ⇒ Object
160 161 162 |
# File 'lib/fastlane_core/helper.rb', line 160 def self.transporter_java_path return File.join(self.itms_path, 'java') end |
.transporter_path ⇒ Object
Returns the full path to the iTMSTransporter executable.
165 166 167 |
# File 'lib/fastlane_core/helper.rb', line 165 def self.transporter_path return File.join(self.itms_path, 'bin', 'iTMSTransporter') end |
.transporter_user_dir ⇒ Object
156 157 158 |
# File 'lib/fastlane_core/helper.rb', line 156 def self.transporter_user_dir return File.join(self.itms_path, 'bin') end |
.windows? ⇒ Boolean
73 74 75 76 |
# File 'lib/fastlane_core/helper.rb', line 73 def self.windows? # taken from: http://stackoverflow.com/a/171011/1945875 (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil end |
.xcode_path ⇒ Object
Returns the full path to the Xcode developer tools of the currently running system.
125 126 127 128 |
# File 'lib/fastlane_core/helper.rb', line 125 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”).
131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/fastlane_core/helper.rb', line 131 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 UI.error(ex) UI.error("Error detecting currently used Xcode installation") end @xcode_version end |