LoginSignup
1

More than 3 years have passed since last update.

開発効率をあげるCLIツール

Last updated at Posted at 2019-12-04

背景

NEMアプリケーションを開発する上でCatapult-bootstrapは必要不可欠ですが、まだベータ版であるが故に、起動がうまくいかなかったり、急にトランザクションが読み込まれなくなるなど不安定な側面も持っています。

その対処法として ./cmds/clean-all./cmds/clean-dataコマンドを叩いてカタパルトのリセット処理をしますが、例えば発行したモザイクをフラグとした処理を開発している時にリセットすると、エイリアスをつけたネームスペースとモザイクを生成し直すシーンが度々ありました。

個人開発で1・2回程度ならまだしも、チーム開発で頻繁になると顕著に開発効率が下がっていたので、コマンド一発で以下の「実装機能一覧」にあるものを取得できるCLIツール「nem2-util」を作るに至りました。

実装機能一覧

  1. ネームスペースの取得 + モザイクの生成 + エイリアス設定(モザイクリンク)
  2. ネームスペースの取得 + エイリアス設定(アドレスリンク)

セッティング

リポジトリはこちら
https://github.com/keita1484/nem2-util

.env

.env.distファイルを参考にルートに.envファイルを作成して、適宜値を変更。
MASTER_PRIVATE_KEYは処理を行いたいアカウントのプライベートキーに書き換えてください。

.env.distファイル
CATAPULT_URL=http://localhost:3000
GENERATION_HASH=REPLACE_THIS_VALUE
MASTER_PRIVATE_KEY=REPLACE_THIS_VALUE

機能詳細

ts-nodeを使ってsrc/index.tsを実行していきます。

1. ネームスペースの取得 + モザイクの生成 + エイリアス設定

以下のコマンドでネームスペースの取得〜エイリアス設定まで実行されます。
今回エイリアスは、mosaicAliasTransactionでネームスペースをモザイクへリンクさせているので、ネームスペースからモザイク参照ができるようにしています。

$ ts-node index.ts -c nsmosaic -r ticket --sn1 2019 --sn2 event

ネームスペースは最大3階層まで取得できます。
サブネームスペースを指定する--sn1--sn2はオプショナルなので、ルートネームスペースだけ取得したい場合は、-rとバリューを指定するだけでOKです。

ちなみに、ネームスペースを取得する上で以下のルールがあります。
* ネットワーク内でユニークの64文字以内
* 利用可能な文字はa, b, c, …, z, 0, 1, 2, …, 9, _ , -

アナウンスされればステータスとトランザクションハッシュが返ってきます。

[Transaction announced]
Endpoint: http://localhost:3000/transaction/8D957BE945E5908FB2B73FC67EED01E63C95EA0001C1A62FDCA862DEE5621BC2

本当はListenerまで実装して、トランザクションがブロックに取り込まれれば結果が返ってくるようにしたかったのですが、一旦ご了承ください。

2. ネームスペースの取得 + エイリアス設定(アドレスリンク)

ネームスペースだけであればnem2-cliを使えば良いのですが、どうせならということで機能追加しています。

$ ts-node index.ts -c ns -r dog --sn1 shiba --sn2 male

2019.12時点でメタデータの送信はnem2-cliになかったと思うので(認識間違っていたらすみません)、直近はアカウントメタデータの送信Listener対応をする予定です。

おわりに

時間の都合で荒削りな状態ですが、少しでも皆様の快適なNEM開発ライフに繋がれば幸いです。

ちなみに皆さんの開発効率化に繋がるように更新していく予定なので、追加して欲しい機能などあれば是非コメントくださいませ。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1