目前有一种方法可以在fastlane动作中提取fastlane动作的输出吗?

问题描述 投票:1回答:2

我正在使用第三方fastlane插件,它包含一个动作,将显示我需要捕获的重要信息,例如链接。

我试图找到一种优雅的方法来捕获fastlane动作中的这些日志,我试图避免使用shell命令,但如果这是唯一的方法,那么我想我别无选择。

我需要这个链接,因为它是一个独特的随机链接,包含我想下载的资源。

我已经尝试重定向stdout无济于事,因为fastlane使用他们自己的记录器(通常是UI.message)并且即将向fastlane提交功能请求但是想到也许其他人遇到了这个并且设法通过它。

反正有没有重定向这种类型的日志并捕获它?

这是围绕UI的fastlane源代码:https://github.com/fastlane/fastlane/tree/master/fastlane_core/lib/fastlane_core/ui

这是我尝试重定向输出的方法之一:Capturing logger output inside a method

任何帮助/建议/资源将不胜感激!

ruby output fastlane capture-output
2个回答
0
投票

构建fastlane的方法允许您使用自己的图层替换UI图层。您可以在fastlane.ci GitHub repo https://github.com/fastlane/ci/blob/master/app/features/build_runner/fastlane_build_runner_helpers/fastlane_ci_output.rb上找到示例实现

您将如何设置它的方式如下

      ci_output = FastlaneCI::FastlaneCIOutput.new(
        each_line_block: proc do |raw_row|
          puts "new line here, access raw_row"
        end
      )

      FastlaneCore::UI.ui_object = ci_output

0
投票

我不知道这是否会对你有所帮助,但我设法将fastlane stdout捕获到一个变量中以获得我想要的东西(在我的情况下,获取iPhone开发证书的通用名称)使用这个简单的方法

def with_captured_stdout
  original_stdout = $stdout
  $stdout = StringIO.new
  yield
  $stdout.string
ensure
  $stdout = original_stdout
end

lane :test do |options|
  match_dev = with_captured_stdout { match(type: 'development') }
  puts match_dev
  @dev_index = match_dev.index('iPhone Developer')
  ENV['DEV_CODE_SIGN_ID'] = match_dev[@dev_index..match_dev.index(')', @dev_index)]
  # ENV['DEV_CODE_SIGN_ID'] = "iPhone Developer: Test Name (XXXXXXXX)"
end

来自https://stackoverflow.com/a/22777806/1034194

© www.soinside.com 2019 - 2024. All rights reserved.