LoginSignup
4
4

More than 5 years have passed since last update.

Whalebrew でコマンドパッケージを作ろう (GNU date を作ってみた)

Last updated at Posted at 2017-03-07

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

セットアップ

  1. Docker のインストール
    https://www.docker.com/docker-mac
  2. whalebrew のインストール
    https://github.com/bfirsh/whalebrew
  3. 環境設定
    mkdir -p ~/.whalebrew/bin
    echo "export WHALEBREW_INSTALL_PATH=$PATH:$HOME/.whalebrew/bin" >> ~/.bashrc
    source ~/.bashrc
  4. date のインストール
    whalebrew install algas/gnudate

使い方

下記のような感じで使えます。

gnudate --help
gnudate -d tomorrow "+%Y-%m-%d %H:%M:%S"
TZ=JST-9 gnudate

作り方

whalebrew 用に作った docker container を配布するだけです。
下記をご参照ください。
1. github にリポジトリを作る
https://github.com/algas/whalebrew-packages/tree/my-packages/date
2. Dockerfile を書く
3. 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 コマンドは簡単に作れるので自作するの楽しい!
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4