快车脚本中的自定义变量

14

对于这样一个初学者问题我很抱歉,但我非常困惑如何在不使用提供的方法的情况下编写Fastlane脚本。

我想要做的是创建一个名为message的变量,可以传递给after_all函数,以便当我发布到Slack时,每个车道都可以有自己的自定义消息:

put message # is this how to set a variable?
lane :alpha do
    # This is what I'd like to do
    message = "[Google Play] Alpha Channel Deployed"
end

after_all |lane, options| do
    slack(message: message)
end

谁能指点我正确的方向?我完全不知道如何在Fastfile脚本中创建和传递非来自命令行的变量。


2
你可以使用 = 运算符来设置变量,就像在第4行中所做的那样。局部变量仅存在于创建它的范围内。我不了解 Fastlane,但是假设传递给 lane 的块在传递给 after_all 的块之前被调用,那么将第一行更改为 message = nil(以便变量存在于第一个块的范围之外)可能会起作用。 - Jordan Running
1
如果你不知道如何使用Ruby,一个好的开始是阅读一些文档,也许可以从这个教程开始。 - Jordan Running
@Jordan - 搞定了。我想我只需要先初始化它。昨晚我看的教程在这方面没有帮助;我会看看你发布的内容! - EHorodyski
@Jordan - 你能把你的评论发表为答案吗?这样我就能给你一些甜美的积分了。 - EHorodyski
好的,它起作用了!发布了一个答案。 - Jordan Running
3个回答

19

你可以使用等于号=来设置变量,就像第4行一样。局部变量只在创建它的作用域内存在。假设传递给lane的块在传递给after_all的块之前被调用,那么将第一行更改为message = nil(使变量存在于第一个块的作用域之外)应该可以解决问题:

message = nil

lane :alpha do
  message = "[Google Play] Alpha Channel Deployed"
end

after_all |lane, options| do
  slack(message: message)
end

我正在尝试执行一个shell脚本,回到上一级目录。我还需要动态地传递一个参数给这个脚本,就像这样:lane :addPrivateKey do | options | sh ('cd .. && ./add_key.sh options[:clientKey]') end。现在它将options[:clientKey]作为参数而不是实际发送到lane的参数。我知道它是字符串,但如何从options变量中获取它? - nr5

18

你也可以选择执行以下操作:

lane :alpha do
  @message = "[Google Play] Alpha Channel Deployed"
end

after_all |lane, options| do
  slack(message: @message)
end

运行完美,但这里发生了什么?能否请您向非 Ruby 开发者解释一下? - Dren
3
回答自己,只是ivar :) - Dren

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接