rcmdnk's blog

Modern Homebrew Recipes: Exploring Styles and Contemporary Techniques

Brew-fileにシェルスクリプト形式でBrewfileを出力出来るオプションを加えた、 とそのまま。

新しいFormatオプション

Brew-fileでは-Fまたは--formatで出力する ファイルのフォーマットを指定できますが 1、 これまでは

brew vim --HEAD --with-lua

と言った、通常のBrew-file形式(file)、 また、 Homebrew/homebrew-bundle のフォーマット:

brew 'vim', args: ['with-lua', 'HEAD']

も使える様になっています(brewdlerbundle)。

これに加えて、cmdまたはcommandというフォーマットを指定すると、

brew install vim --HEAD --with-lua

の様に、コマンドラインからそのまま使える形で パッケージを書き出す様になりました。

シェルスクリプトになってるので、 そのまま実行すれば載っているパッケージがインストールできます。

他のbrew-fileが入ってないマシンでスクリプト形式でパッとインストールしたい時、

$ brew file -f ~/install.sh -F cmd init
Do you want to set a repository (y)? ((n) for local Brewfile). [y/n]: n

#####################################
# Initialize /Users/user/install.sh
#####################################

$

とすれば、今実際に管理してるBrewfileとは別に ~/install.shというファイルを作り、 中身は

install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env bash

#BREWFILE_IGNORE
if ! which brew >& /dev/null;then
  brew_installed=0
  echo Homebrew is not installed!
  echo Install now...
  echo ruby -e \"\$\(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install\)\"
  ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  echo
fi
#BREWFILE_ENDIGNORE

# tap repositories and their packages

## caskroom/cask
brew tap caskroom/cask
brew install brew-cask
brew cask install adobe-reader
brew cask install appcleaner
brew cask install bettertouchtool
...

## rcmdnk/file
brew tap rcmdnk/file
brew install brew-file
...

# Other Homebrew packages
brew install asciidoc
brew install asciinema
brew install bash
brew install bash-completion
...
brew install vim --HEAD --with-lua
...

みたいな感じになってるはずです。

ファイルも実行ファイルになってるはずなので、そのまま

$ ~/install.sh

で実行できる様になっています。 (今入ってるパッケージのリストなのでそのMacでやっても何も起こらない、はず。)

このファイルを他のHomebrewが入ってるMacへ持って行って 実行すればリストされてるパッケージをインストールすることが出来ます。

最初に

install.sh
1
2
3
4
5
6
7
8
if ! which brew >& /dev/null;then
  brew_installed=0
  echo Homebrew is not installed!
  echo Install now...
  echo ruby -e \"\$\(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install\)\"
  ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  echo
fi

と言った、もしHomebrewが入ってなかったらインストールする、 スクリプトが入ってるので Homebrewが入ってないマシンでも大丈夫です。

ついでに、Brewfileの中で、

#BREWFILE_IGNORE
~
#BREWFILE_ENDIGNORE

で囲まれた部分は読み込む時に無視する機能も加えました。

Sponsored Links
  1. 読み込む時にはどれであっても適時中身を見て判断して読み込む。

Sponsored Links

« シェルスクリプトでの文字列、ファイルの行数の数え方: wc -lとgrep -c '' ssh周りの設定、Tipsのまとめ »

}