Dockerでandroid update sdk
たとえば、ubuntuであれば、
$ sudo apt-get install -y vim
のように-yオプションをつけることで
Do you want to continue [Y/n]?
のように聞かれるyes/noの入力をスキップできる.
linuxにはこのyes/noの質問でyを入力しつづけてくれるyesコマンドがある.
$ yes
y
y
y
...
このまえのABCのLTで
$ yes | android update sdk --no-ui --all
すれば簡単にアップデートできるよーとかいったけど、ごめんなさい、これだとうまくアップデートできてませんでした。。orz..
yesコマンドは"y\n"を延々とはきだしてくれるけど、android update sdk 側の入力プロンプトで、実際やってみるとうまくうけとってくれない。
そこで以下のようにしてみた。
$ echo y | android update sdk --no-ui --all --filter sysimg-19
これだとうまくいくが、2つ以上のライセンス認証がある場合にうまくいかない。
調べてみると、expectコマンドを使うとよいらしいというのを知った。
expectコマンドでは標準出力の特定のメッセージをトリガーとして標準入力に文字列を渡すことができる。
上記コマンドを実行する.
$ expect-android-update.sh sysimg-19
今度はうまくいく。 Dockerfileなんかを書く際に便利なので、お試しください。