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"))