Whalebrew で date コマンドを実行/作成する
Mac ユーザのために作った GNU date コマンドを実行できる環境を紹介します。
Mac と Linux での date の挙動の違い
(デフォルトでの) Linux と Mac の date
コマンドはオプションやフォーマットが違っています。
例えば下記のコマンドは多くの Linux では実行できますが、 Mac ではエラーになります。
date -d tomorrow "+%Y-%m-%d %H:%M:%S"
でもただの date
コマンドのために特殊なパッケージをインストールしたくないですよね?
この要求を満たすために独自の date
コマンドパッケージを作りました。
https://github.com/algas/whalebrew-packages
Whalebrew とは?
Whalebrew は Docker 経由で実行できるコマンドのパッケージ管理ツールです。
https://github.com/bfirsh/whalebrew
Docker コンテナを使うのでローカルの環境を汚染することはありません。
Docker に詳しくなくても whalebrew を使うだけなら困りません。
公式で用意しているコマンドの一覧は以下にあります。
https://github.com/whalebrew/whalebrew-packages
セットアップ
- Docker のインストール
https://www.docker.com/docker-mac - whalebrew のインストール
https://github.com/bfirsh/whalebrew - 環境設定
mkdir -p ~/.whalebrew/bin
echo "export WHALEBREW_INSTALL_PATH=$PATH:$HOME/.whalebrew/bin" >> ~/.bashrc
source ~/.bashrc
- date のインストール
whalebrew install algas/gnudate
使い方
下記のような感じで使えます。
gnudate --help
gnudate -d tomorrow "+%Y-%m-%d %H:%M:%S"
TZ=JST-9 gnudate
作り方
whalebrew 用に作った docker container を配布するだけです。
下記をご参照ください。
- github にリポジトリを作る
https://github.com/algas/whalebrew-packages/tree/my-packages/date - Dockerfile を書く
- docker hub に automated build を設定する
https://hub.docker.com/r/algas/gnudate/
社内のみで使う場合でしたら、ローカルの git repository + docker registry でも運用可能です。
Dockerfile
軽量化のために alpine linux を使っています。
coreutils パッケージの date コマンドを実行します。
FROM alpine
LABEL io.whalebrew.config.environment '["TZ"]'
RUN apk add --update coreutils && rm -rf /var/cache/apk/*
ENTRYPOINT ["date"]
まとめ
- whalebrew で OS ごとのコマンドのオプションや実行結果の違いを吸収できる。
- whalebrew のコマンドパッケージはローカル環境を汚染しない。
- whalebrew コマンドは簡単に作れるので自作するの楽しい!