Flutterのリポジトリを初期化するためのスクリプト
Flutter 講座を進めるうえで何度も Flutter のプロジェクトを新しく作っていたので簡単に行えるようスクリプトを書きました。
# 作ったもの
以下の内容をoneliners.txt
として保存します。特に工夫のない、flutter create
です。
なお、もし同じことをしたい方は、--org com.kawarimidoll
の部分は変更してください。
[Create flutter app in current directory] flutter create --org com.kawarimidoll --description '@' .
1
そして.zshrc
に以下の記述を追加します。fzf
を使っていますが、他の fuzzy finder でも動作するでしょう。
__get_oneliners() {
cat "path/to/oneliners.txt" | \
fzf --header="@ becomes the cursor position" | \
sed 's/\[.*\]//'
}
oneliners() {
local oneliner=$(__get_oneliners) || return 1
local cursol="${oneliner%%@*}"
BUFFER="${oneliner/@/}"
CURSOR="${#cursol}"
zle redisplay
}
zle -N oneliners
bindkey '^x' oneliners
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 解説
シェルで^x
を押すことにより、oneliners.txt
の中身を一覧し、fzf
で選択したものをプロンプトに展開します。
ワンライナー前半の[]
内部は解説なので展開時に除去されます。
また、展開時にワンライナー内部の@
位置にカーソルが配置されます。このとき@
自体は削除されます。
今回のスクリプトでは以下の@
の位置にカーソルが来ます。
flutter create --org com.kawarimidoll --description '@' .
1
これで、以下のルーティーンができるようになりました。
^x
で呼び出しfzf
を使って選択description
を記載flutter create
実行
flutter create --org com.kawarimidoll
を何度も打ち込まなくて良くなったので満足です。
# まとめ
Flutter プロジェクト生成を簡単にできるようにしました。まあこんなに何度も打ち込むのは講義を進めている間だけで、実際はプロジェクト立ち上げなんてそんなに頻度はないと思いますが。
とはいえ逆に頻度が低いものもoneliners.txt
に登録しておくことで、思い出すコストを抑えてサクッと実行できるとも言えます。
何度もやることは自動化。DRY で生きていきます。