Bake-Bashでタスクを実行する

自分の発明した自転車が後でどこにも使われないときの状況を知っている人は多いと思います。 したがって、プロジェクト間でこの開発を行っていることに気付くまで、この開発を長い間あえて公開しませんでした。 そして、現代の開発に不可欠な要素の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 

設置



参照資料




Source: https://habr.com/ru/post/J323956/


All Articles