[Warp] workflowを作ってみる
Introduction
先日、次世代terminal、Warpについての記事を書きました。
ここでworkflowについても少し説明しているのですが、
試しにつくってみたのでその紹介をします。
workflow of Warp
Warpが持つ機能のworkflowは、Warp内で任意のコマンドを実行して共有するための機能です。
複数コマンドをまとめたりパラメータ化でき、検索や共有も可能です。
workflowはyaml形式で決められた場所においておけば簡単に使えます。
ここに詳細がありますが、
workflowには、ローカルworkflowとプロジェクトworkflowの2種類があります。
ローカルのほうは自分だけが使用できるworkflowで、
特定の場所にworkflow用の定義ファイルを
置けば使用できます。
プロジェクトのほうは特定のGitリポジトリに関連付けられ、
そのリポジトリをcloneした人は誰でも使用できます。
※今回ためすのはローカルworkflow
workflowの定義はシンプルです。
例えば、↓のyamlはechoで文字列を2回出力するworkflowです。
--- name: Greet command: "echo {{message}},taro!\necho {{message}}, hanako!" tags: - echo description: "Greetings to taro and hanako." arguments: - name: message description: Message default_value: ~ author: nakamura shuta author_url: "https://dev.classmethod.jp/author/syuta/" shells: []
commandパラメータに実行したいコマンドを記述します。
複数ある場合は\nで区切ってコマンドをつなげます。
↑のyamlを~/.warp/workflowsにコピーすれば使えます。
control + Shift + R (Rは少し長押し)で、
workflowメニューにアクセスできます。
create scp workflow
ではもう1つworkflowを作ってみましょう。
scpで複数のhostからファイルを取得するworkflowを作成してみます。
まずはworkflowのファイルを置くためのディレクトリを作成。
% mkdir -p ~/.warp/workflows
次にyaml形式でworkflowの定義を記述します。
定義ファイルの書き方はこちら。
ここではmy-workflow.yamlという名前で↓のように定義しました。
--- name: Get files via scp command: "scp cm@host1:{{remote_file_path}} host1_{{local_file_name}}\nscp cm@host2:{{remote_file_path}} host2{{local_file_name}}\nscp cm@host3:{{remote_file_path}} host13_{{local_file_name}}" tags: - git description: "Get file from multiple hosts via scp." arguments: - name: remote_file_path description: The name of the remote file path default_value: ~ - name: local_file_name description: The name of the local file name default_value: ~ author: nakamura shuta author_url: "https://dev.classmethod.jp/author/syuta/" shells: []
ここではscpコマンドを3つ繋げて記述し、
host1/host2/host3から指定したファイルを取得します。
※パラメータは {{hogehoge}} という形式で設定可能
yamlファイルをコピーします。
これでWarpからworkflowが使えます。
% cp ./my-workflow.yaml ~/.warp/workflows
ではworkflowを呼び出してみましょう。
control + Shift + R を押します。
My Workflowsのところを選択するか、
キーワード(scpとか)を入力すると、
さきほど作成したワークフローが表示されます。
workflowを選択したらShift + TABでパラメータを選択しながら
ファイルパスと取得ファイルの名前を指定します。
実行すると各コマンドの結果がブロック毎に出力されます。
Summary
シェルをわざわざかくほどでもないけど、
いちいち実行するのが面倒な処理とかはworkflowがちょうどよいかもしれません。
ここにはお手本になりそうなworkflowの定義があるので
参考にしてみてください。