自分の発明した自転車が後でどこにも使われないときの状況を知っている人は多いと思います。 したがって、プロジェクト間でこの開発を行っていることに気付くまで、この開発を長い間あえて公開しませんでした。 そして、現代の開発に不可欠な要素の1つは、いわゆるタスクランナーです。これらは、nodejsのGrunt / Gulp、RubyのRake、C / C ++のMakeなどです。 そして、メインの開発者ツールであるコンソールには、そのようなものはありません。 より正確にはありますが、通常そうであるように、まったくそうではありません。 研究の結果、Bakeツールが誕生しました。モジュール構造をサポートするbashで書かれたタスクランナーです。
主な機能:
- 関数形式のタスク。
- 引数のサポート。
- モジュール
予定
Bakeは、必要なサービスの開始/再起動、キャッシュのクリア、ディレクトリ構造の作成、ssh / sftpコマンドの実行(たとえば、正しいアクセス権を設定して構成データを読み込むため)などのルーチンアクションの自動化に適しています。
このツールは非常に使いやすく、必要なのはタスク関数をbake.sh
に追加するbake.sh
で、コマンドラインから呼び出すことができます。
bake [OPTIONS] <TASK> [TASK_ARGS]
ファイルを焼く
タスクはbake.sh
ファイルに保存されます。 Bakeは、現在のディレクトリでこのファイルを探し、存在しない場合はシステムのルートまで親ディレクトリを探します。 bake.sh
が配置されているディレクトリはプロジェクトのルートであり、 $PWD
変数に割り当てられます。 したがって、すべてのタスクは、変数$CWD
格納されている現在のディレクトリではなく、ルートを基準にして実行されます。
タスク
タスクは、名前がtask:
始まる関数ですtask:
例:
task:greet() { echo "Hello World" }
コンソールから呼び出します:
bake greet # -> Hello World
注意! タスク名のハイフンはタスクアンダースコアに置き換えられますtask:hello_world
は、 bake hello-world
およびbake hello_world
で呼び出すことができbake hello_world
。
引数
タスク名に続く引数が関数に渡されます。
task:greet() { echo "Hello $1" }
bake greet World # -> Hello World
モジュール
Bakeを使用すると、コードをモジュールに分割し、必要に応じてプラグインできます。 モジュールは、sake.shなどのスクリプトとしてbake_modulesディレクトリに保存されssh.sh
モジュールは、 bake:module <name>
コマンドを使用して接続されbake:module <name>
。 例:
bake:module ssh # include "bake_modules/ssh.sh" bake:module mysql # include "bake_modules/mysql.sh"
Node.jsと同様に、Bakeはbake_modules
ディレクトリ内のアップストリームモジュールをシステムのルートまで検索します。 たとえば、現在のプロジェクトパスが/home/user/projects/my-app
場合、モジュールはディレクトリ内で順番に検索されます。
/home/user/projects/my-app/bake_modules /home/user/projects/bake_modules /home/user/bake_modules /home/bake_modules /bake_modules
設置
- UbuntuのDebパッケージ:
wget https://github.com/rumkin/bake/releases/download/v0.12.5/bake_0.12-5.deb sudo dpkg -i bake_012-5.deb
- githubのソースからインストールします。
git clone https://github.com/rumkin/bake sudo cp bake/bake.sh /usr/bin/bake