Tomtitを用いたワークフロー管理の開発


毎日の同じタスクですべての開発者の取引.たとえば、Gitで動作し、YAMLファイルをリンギングし、モジュールをビルドしたり解放したり、HTTP APIを呼び出したりします.
だから、歓迎Tomtit - タスクとワークフロー
マネージマネージャーSparrow つの簡単にハーネススクリプトを開発し、それらを実行することができますエンジンRaku シナリオ
あなたがターミナルとオートメーション愛好家であるならば-このポストへの歓迎、私はTomtitの使用があなたの生産性を途方もなく増やすことができる方法を示します.

インストール
TomtitはRAKUモジュールで、RAKUパッケージマネージャをインストールします.
$ zef install --/test Tomtit

セットアップ
一旦tomtitがインストールされるならば、1は使えますtom - コマンドラインAPIを初期設定する
$ tom --completion
$ source  ~/.tom_completion.sh
$ s6 --repo-init ~/repo 
コマンドが実行されると、ローカルのスパローリポジトリを設定します(プラグインを使用する場合は、さらに参照してください).
我々のポストでは、典型的なTomtitワークフローを示すために、RAKUプロジェクトの例を使います.
$ git clone https://github.com/melezhik/rakudist-teddy-bear.git
始める前に、Tomtitが必要とする技術ディレクトリを使ってプロジェクトを初期化する必要があります.
$ cd rakudist-teddy-bear
$ tom --init

タスクの作成
さて、それを実行し、我々の仕事を自動化するスクリプトを作成しましょう.
RAKUソースコードのテストと構築のRAKU世界からの簡単な例を考えてください.
$ tom --edit build-app
/home/ubuntu/projects/rakudist-teddy-bear/.tom/build-app.pl6 does not exit, do you want to create it? (type Y to confirm): Y
新しいシナリオの作成を確認すると、トムは$EDITOR RAKUスクリプトを作成することができます.
#!raku
task-run ".tom/tasks/build";
これまでのところ、それはちょうど機能task-run これはtomtitによってエクスポートされ、.tom/tasks/build フォルダを作成する必要があります.
$ mkdir -p .tom/tasks/build
$ nano .tom/tasks/build/task.bash
!#bash
prove6 --lib t/
zef install --force-install .
私たちが見ることができるように、我々はこの単純な仕事のために最もよく合うように、我々がここに基本的なスクリプトのためにbashを選ぶのを見ます.つは、他の言語の間で選択することもできますSparrow - 基本的なtomtitエンジン.
ここで、Tomコマンドラインを使用してビルドアプリケーションタスクを実行できます.
$ tom build-app
17:05:12 10/04/2020 [repository] index updated from index updated from file:///home/ubuntu/repo/api/v1/index
17:05:13 10/04/2020 [.tom/tasks/build] t/00-load.t .. ok
17:05:13 10/04/2020 [.tom/tasks/build] All tests successful.
17:05:13 10/04/2020 [.tom/tasks/build] Files=1, Tests=1,  0 wallclock secs
17:05:13 10/04/2020 [.tom/tasks/build] Result: PASS
17:05:17 10/04/2020 [.tom/tasks/build] ===> Installing: Teddy Bear:ver<0.0.1>
タスクを編集するには、次の手順を実行します.
$ tom --edit build-app
そして、あなたはあなたを得ます$EDITOR オープニングタスクソースコード.

他の例
Tomtitはより多くのそれを許します.簡単な例を見ました.
もう少しお持ちしましょう.

値をバックに戻すタスクを作成する
HTTPエンドポイント(内部のAPIであるかもしれません)を持っていると言います.これらのタイプのタスクは私の毎日の$仕事でかなり頻繁です.そのためにtomtitヘルパーを作成するのは簡単です.
$ mkdir -p .tom/tasks/trigger-api/tasks/http-call
$ nano .tom/tasks/trigger-api/tasks/http-call/task.bash
#!bash
curl -f -o $cache_root_dir/out.json  $(config url)
$ nano .tom/tasks/trigger-api/hook.pl6
#!raku
run_task "http-call"; 
$ nano .tom/tasks/trigger-api/task.pl6
#!raku
use JSON::Tiny;
update_state from-json("{cache_root_dir()}/out.json".IO.slurp) 
$ tom --edit trigger-api
#!raku
my %state = task-run ".tom/tasks/trigger-api", %(
   url => "http://foo.bar.baz/API"
);

say "data received", %state.perl;
を実行します.
$ tom trigger-api

他のユーザーとタスクを共有する
非常にすぐに、私は私のスクリプトを開発するように私はそれらのいくつかを繰り返すと同じタスクを解決してください.コードの複製を減らし、チームメンバーが私のスクリプトを使用するのを許すために、私はそれらをパッケージ化して、スパロープラグインとして配布することができます.Tomtitはスパロウの上部に建てられたことを覚えていますか?
最後の例ではtrigger-api スクリプトを別のgitリポジトリに変換し、プラグインに変換します.
$ mkdir ~/plugins/
$ mv .tom/tasks/trigger-api/ ~/plugins
$ cd ~/plugins/trigger-api
$ nano sparrow.json
{
  "name" : "trigger-api",
  "description" : "call http API",
  "version" : "0.0.1"
}
最後にリポジトリにアップロードします.
$ s6 --upload
02:31:46 10/05/2020 [repository] upload plugin
02:31:46 10/05/2020 [repository] upload [email protected]
一旦リポジトリにアップロードされると、リポジトリルートでドキュメントルートを持つWebサーバを実行するだけで公開できます.
$ cd ~/repo && python -m http.server 8000
それで僕のチームは次のように選んだ.
$ export SP6_REPO=http://$my_host:8000 
今すぐ最後のビット-リファクタリングしましょうtrigger-api RAKUタスクはプラグインを使用します.
#!raku
my %state = task-run "http call", "trigger-api", %(
   url => "http://foo.bar.baz/API"
);

say "data received", %state.perl;
それです.私は、あなたがポストを楽しんだことを望みます.いつものようにフィードバックとコメントをいただければ幸いです.