fastlane - 检测主机操作系统

fastlane - detect host operating system

我想检测安装了 fastlane 的主机操作系统。我需要这个,因为在我的脚本中,我有一些命令只在 Mac 上执行,而有些命令只在 Windows machines.

上执行

我做的一个小解决方法是为 mac 和 windows 创建单独的脚本文件。

考虑下面的代码片段,它写在我的 Fastfile 中:

platform :android do
    desc "Client Release"
    lane :clientrelease do |options|
        sh "bash fastlane_script_mac.sh " + options[:bundleId] + " " + "release"
        gradle(
            task: "clean"
        )
        gradle(
            task: "assemble",
            flavor: "client",
            build_type: "release"
        )
    end
end

我期待如下内容:

platform :android do
    desc "Client Release"
    lane :clientrelease do |options|
        if(OS == "MAC") {
            sh "bash fastlane_script_mac.sh " + options[:bundleId] + " " + "release"
        } else {
           sh "bash fastlane_script_windows.sh " + options[:bundleId] + " " + "release"
        }
        gradle(
            task: "clean"
        )
        gradle(
            task: "assemble",
            flavor: "client",
            build_type: "release"
        )
    end
end

如果主机操作系统是 windows,则使用 fastlane_script_windows.sh,否则使用 fastlane_script_mac.sh

有人可以帮我解决这个问题吗?

Fastlane 的 Helper class 有一些方法可以帮助您:

  • FastlaneCore::Helper.operating_system returns 一个字符串:"macOS""Windows""Linux""Unknown"
  • FastlaneCore::Helper.windows? returns truefalse
    • 同样,您可以使用FastlaneCore::Helper.linux?FastlaneCore::Helper.mac?