🐣

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

# 解説

シェルで^xを押すことにより、oneliners.txtの中身を一覧し、fzfで選択したものをプロンプトに展開します。
ワンライナー前半の[]内部は解説なので展開時に除去されます。
また、展開時にワンライナー内部の@位置にカーソルが配置されます。このとき@自体は削除されます。

今回のスクリプトでは以下の@の位置にカーソルが来ます。

 flutter create --org com.kawarimidoll --description '@' .
1

これで、以下のルーティーンができるようになりました。

  1. ^xで呼び出し
  2. fzfを使って選択
  3. descriptionを記載
  4. flutter create実行

flutter create --org com.kawarimidollを何度も打ち込まなくて良くなったので満足です。

# まとめ

Flutter プロジェクト生成を簡単にできるようにしました。まあこんなに何度も打ち込むのは講義を進めている間だけで、実際はプロジェクト立ち上げなんてそんなに頻度はないと思いますが。
とはいえ逆に頻度が低いものもoneliners.txtに登録しておくことで、思い出すコストを抑えてサクッと実行できるとも言えます。

何度もやることは自動化。DRY で生きていきます。