fastlaneもだいぶ浸透してきた昨今ですが、求めているactionがなかった時に
lane内でシェルスクリプトを叩くようにしたりしていませんか?
そういうときは、独自actionを作るほうがベターです。
独自actionの作成
今回以下の様な意味がないactionを作成してみます。
- sample_flagがtrueの時にsample_paramの内容をログ出力する。
コマンドからテンプレート作成
以下のコマンドでテンプレートをもとにファイルを用意してくれます。
fastlane new_action
上記コマンドを叩くとaction名を聞かれるので入力します。
action名の注意点は以下のとおり。
Must be lower case, and use a '_' between words. Do not use '.'
examples: 'testflight', 'upload_to_s3'
名前を入力すると、以下の場所にファイルが作成されます。
ファイル名は、つけた名前.rb(sampleとしたらsample.rb)
fastlane/actions/
ちなみに、実際のテンプレートは以下にあります。
コード記述
作成されたテンプレートコードを元に中身を書いていきます。
以下のように書くことが出来ます。
module Fastlane
module Actions
class SampleAction < Action
def self.run(params)
UI.message("LOG: #{params[:sample_param]}") if(params[:sample_flag])
end
def self.description
"意味が無いactionであります"
end
def self.available_options
FastlaneCore::ConfigItem.new(key: :sample_param,
env_name: "SAMPLE_PARAM",
description: "叫ぶ言葉"),
FastlaneCore::ConfigItem.new(key: :sample_flag,
env_name: "SAMPLE_FLAG",
description: "叫ぶかどうか",
is_string: false,
default_value: true)
end
def self.is_supported?(platform)
platform == :ios
end
end
end
end
書いたコードの動作確認は以下で試すのが良いです。
fastlane run action key:value
今回の例でいうならば、以下の様な感じになります
fastlane run sample sample_param:param sample_flag:true
上記を実行すると以下の様な出力になります。
--------------------
--- Step: sample ---
--------------------
LOG: param
Result: true
Fastfileの記述は以下の様な感じになります。
lane :sample_action do
sample(
sample_param: "hello_japan"
#sample_flagを書かない場合、デフォルト値のtrueになります
)
end
actionの実装例については、既存のコードが参考になるはずなので是非以下のactionを参考にすると良いかと思います。
各種コマンドをうった場合の表示
以下のコマンドで存在するaction全てが表示されます。
fastlane actions
上記コマンドの場合は以下のように表示されます。
| sample | 意味が無いactionであります | tarappo |
以下のコマンドで情報が表示されます。
fastlane action action名
上記コマンドの場合は以下のように表示されます。
+--------------------+
| sample |
+--------------------+
| 意味が無いactionであります |
| |
| Created by tarappo |
+--------------------+
+--------------+-------------+--------------+---------+
| sample Options |
+--------------+-------------+--------------+---------+
| Key | Description | Env Var | Default |
+--------------+-------------+--------------+---------+
| sample_param | 叫ぶ言葉 | SAMPLE_PARAM | |
| sample_flag | 叫ぶかどうか | SAMPLE_FLAG | true |
+--------------+-------------+--------------+---------+
他のactionもこのように表示されるので、action利用時に参考にすることが可能です。
最後に
上記の説明で分かったかと思いますが、独自actionを作るのは簡単です。
社内でしか使えない独自actionであれば社内で共有し、誰でも使えるのであればfastlaneにPRを出すのが良いかと思います。
今回は非常に意味のないactionを作成しましたがそのうち意味のあるサンプルを公開したいですね。