コマンドライン上の繰り返し工程を簡単にするライブラリ「with」の紹介です。
プロジェクトを進めていく上で、コマンドライン上から同じ操作をする必要がある場面は結構あります。
Gitを例に挙げると、コードの編集を行う際に、コマンドライン上で下記のことをする機会は多いのでないのでしょか。
# 一般的なgitのworlflow
$ git add . #コードの追加
$ git commit -a -m "fix something" # コミット + コメント
$ git push # 変更をプッシュ
上の処理はadd
-> commit
-> push
の3つのステージングを踏んで 変更したコードをレポジトリにpushしています。
Git操作時にかかわらず、コマンドライン上で同じような操作を踏む必要な時はありますが、そのような手順を少し簡単にしてくれるライブラリが「with」です。
" with " を使うとコマンドライン上のプログラムをインタラクティブ・シェルのように縛って 1つのシングルツールのように使いうことが出来ます。
# gitを例にした場合
$ with git # with commandでgit起動
# インタラクティブ・シェルのようにプログラムが起動
git> add .
git> commit -a -m "Commited"
git> push
withのインストールはコマンドライン上から行い、Unix系のOSで起動可能です。
( * 実際にMac OS で検証しましたが問題なく動作しました )
# mac, Linux 共通
curl -s https://raw.githubusercontent.com/mchav/with/master/install | bash
# or
curl -sLo- https://cdn.rawgit.com/mchav/with/master/install | bash
# aptパッケージを使う場合 * ubuntuやdebianでインストールする場合
sudo add-apt-repository ppa:mchav/with && sudo apt-get update && sudo apt-get install with
# bpkgを使ってインストールする場合 * バッシュのパッケージマネージャー * linux
bpkg install mchav/with -g
withの使い方は簡単でコマンドライン上で、with
+ プログラム名
で起動します。
with [program]
冒頭ではGitを例にしましたが、コマンドライン上で実行可能なプログラムであれば 何でもインタラクティブ・シェルのように実行できます。
with
を使って node -v
をバインドしました。Enterキーを押すとwithにバインドしたコマンドが再実行されます 
下記のスニペットはnode.jsのタスクランナーgulpのコマンドですが、withを使うと複数タスクの実行も綺麗に書くことができます。
// gulpを使った例
const gulp = require('gulp');
// コマンド1
gulp.task('task1', () => {
console.log('hello task1');
});
// コマンド2
gulp.task('task2', () => {
console.log('hello task2');
});
// コマンド3
gulp.task('task3', () => {
console.log('hello task3');
});
# gulpを使った場合の実行例
$ with gulp # withを使ってgulpを実行
gulp > task1 task2 task3 # 3種類のコマンドを一度に実行
# output example
[04:51:12] Starting 'task1'...
hello task1!
[04:51:12] Finished 'task1' after 127 μs
[04:51:12] Starting 'task2'...
hello task2!
[04:51:12] Finished 'task2' after 43 μs
[04:51:12] Starting 'task3'...
hello task3!!
[04:51:12] Finished 'task3' after 53 μs
gulp >
# gulp task1 && gulp task2 && gulp task3とやっていることは同じです
その他の使い方では withと'apm install
'コマンドを組み合わせて Atomエディタのプラグインを一括でインストールすることも。
# withを使ってAtomエディタのプラグインを一括でインストールする例
$ with apm install
# 左から順に実行されます
apm install> atom-beautify atom-ctags file-icons fonts linter ...
以上がwithの紹介でした。
また、今回紹介したwithはUnix系OSで動くライブラリですが、Windows用のPowerShell用のライブラリも公開されています。
コマンドライン操作で同じような手順が必要な時にwithを部分的に使うと開発が楽になりそうですね!