やりたいこと
- composerをダウンロードしたい
- 繰り返し実行できるように、composerが既にDL済みのときは何もしたくない (毎回DLするのは無駄なのでやりたくない)
やりたいことを叶えるMakefile
.PHONY: setup setup: composer.phar # ここにアプリケーションをセットアップするためのアレコレを書く。composer installとか。 composer.phar: curl -sSfL -o composer-setup.php https://getcomposer.org/installer php composer-setup.php --filename=composer.phar rm composer-setup.php
実行例
# 最初はcomposer.pharが無いので、ダウンロードが走る $ make setup curl -sSfL -o composer-setup.php https://getcomposer.org/installer php composer-setup.php --filename=composer.phar All settings correct for using Composer Downloading... Composer (version 1.7.2) successfully installed to: /Users/pinkumohikan/products/jinsoku/composer.phar Use it: php composer.phar rm composer-setup.php # composer.pharが使える状態になる $ ./composer.phar | head -n 7 ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.7.2 2018-08-16 16:57:12 # 既にcomposer.pharがあるので、composerのダウンロードは走らない $ make setup make: Nothing to be done for `setup'.
Makefileを解説
.PHONY: setup
.PHONY
にターゲット名を羅列しておくと同名のファイル/ディレクトリが存在してもターゲットを実行する。逆にいうと、ここに composer.phar
を書くと、 make setup
を実行すると毎回ダウンロードが走るようになる。
setup: composer.phar
アプリケーションを使える状態にするためのアレコレを書くターゲット。
- 依存モジュールのインストール
- コンフィグファイルをテンプレからコピーしておく
など。依存ファイルとして composer.phar
を指定しているので、 composer.phar
が無ければ先に make composer.phar
が実行される。
composer.phar:
composerを composer.phar
としてダウンロードする処理を書いている。
.PHONY
に指定していないので composer.phar
というファイルが無かったら一度だけ実行される。
Introduction - Composer を参考にした。