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
      
      





設置





参照資料






All Articles