lib/fastlane/environment_printer.rb in fastlane-1.108.0 vs lib/fastlane/environment_printer.rb in fastlane-1.109.0
- old
+ new
@@ -76,33 +76,44 @@
env_output << "\n\n"
env_output
end
+ # We have this as a separate method, as this has to be handled
+ # slightly differently, depending on how fastlane is being called
+ def self.gems_to_check
+ if Helper.contained_fastlane?
+ Gem::Specification
+ else
+ Gem.loaded_specs.values
+ end
+ end
+
def self.print_loaded_fastlane_gems
# fastlanes internal gems
env_output = "### fastlane gems\n\n"
table = ""
table << "| Gem | Version | Update-Status |\n"
table << "|-----|---------|------------|\n"
fastlane_tools = Fastlane::TOOLS + [:fastlane_core, :credentials_manager]
- Gem.loaded_specs.values.each do |x|
+
+ gems_to_check.each do |current_gem|
update_status = "N/A"
- next unless fastlane_tools.include?(x.name.to_sym)
+ next unless fastlane_tools.include?(current_gem.name.to_sym)
begin
- update_url = FastlaneCore::UpdateChecker.generate_fetch_url(x.name)
+ update_url = FastlaneCore::UpdateChecker.generate_fetch_url(current_gem.name)
latest_version = FastlaneCore::UpdateChecker.fetch_latest(update_url)
- if Gem::Version.new(x.version) == Gem::Version.new(latest_version)
+ if Gem::Version.new(current_gem.version) == Gem::Version.new(latest_version)
update_status = "✅ Up-To-Date"
else
update_status = "🚫 Update availaible"
end
rescue
update_status = "💥 Check failed"
end
- table << "| #{x.name} | #{x.version} | #{update_status} |\n"
+ table << "| #{current_gem.name} | #{current_gem.version} | #{update_status} |\n"
end
rendered_table = MarkdownTableFormatter.new table
env_output << rendered_table.to_md
@@ -115,13 +126,13 @@
env_output = "<details>"
env_output << "<summary><b>Loaded gems</b></summary>\n\n"
table = "| Gem | Version |\n"
table << "|-----|---------|\n"
- Gem.loaded_specs.values.each do |x|
- unless Fastlane::TOOLS.include?(x.name.to_sym)
- table << "| #{x.name} | #{x.version} |\n"
+ gems_to_check.each do |current_gem|
+ unless Fastlane::TOOLS.include?(current_gem.name.to_sym)
+ table << "| #{current_gem.name} | #{current_gem.version} |\n"
end
end
rendered_table = MarkdownTableFormatter.new table
env_output << rendered_table.to_md
@@ -160,23 +171,55 @@
def self.print_system_environment
require "openssl"
env_output = "### Stack\n\n"
- product, version, build = `sw_vers`.strip.split("\n").map { |line| line.split(':').last.strip }
+ product, version, build = "Unknown"
+ os_version = "UNKNOWN"
+
+ if Helper.mac?
+ product, version, build = `sw_vers`.strip.split("\n").map { |line| line.split(':').last.strip }
+ os_version = version
+ end
+
+ if Helper.linux?
+ # this should work on pretty much all linux distros
+ os_version = `uname -a`.strip
+ version = ""
+ build = `uname -r`.strip
+ product = `cat /etc/issue.net`.strip
+
+ distro_guesser = {
+ fedora: "/etc/fedora-release",
+ debian_based: "/etc/debian_version",
+ suse: "/etc/SUSE-release",
+ mandrake: "/etc/mandrake-release"
+ }
+
+ distro_guesser.each do |dist, vers|
+ os_version = "#{dist} " + File.read(vers).strip if File.exist?(vers)
+ version = os_version
+ end
+ end
+
table_content = {
"fastlane" => Fastlane::VERSION,
- "OS" => `sw_vers -productVersion`.strip,
+ "OS" => os_version,
"Ruby" => RUBY_VERSION,
"Bundler?" => Helper.bundler?,
- "Xcode Path" => Helper.xcode_path,
- "Xcode Version" => Helper.xcode_version,
"Git" => `git --version`.strip.split("\n").first,
"Installation Source" => $PROGRAM_NAME,
"Host" => "#{product} #{version} (#{build})",
"Ruby Lib Dir" => RbConfig::CONFIG['libdir'],
- "OpenSSL Version" => OpenSSL::OPENSSL_VERSION
+ "OpenSSL Version" => OpenSSL::OPENSSL_VERSION,
+ "Is contained" => Helper.contained_fastlane?.to_s
}
+
+ if Helper.mac?
+ table_content["Xcode Path"] = Helper.xcode_path
+ table_content["Xcode Version"] = Helper.xcode_version
+ end
+
table = ["| Key | Value |"]
table += table_content.collect { |k, v| "| #{k} | #{v} |" }
begin
rendered_table = MarkdownTableFormatter.new(table.join("\n"))