最新の安定バージョンについては、Spring Cli 0.9.0 を使用してください! |
ロール
ロールは、ユーザー定義のコマンド全体で変数を整理して再利用する方法を提供します。
デフォルトでは、Spring CLI には常に使用可能な名前のないロールが含まれています。特定のロールが指定されていない場合、コマンドはデフォルトのロールを使用します。
ロールをさらにカスタマイズして区別するには、ロールを特定の名前に関連付けます。これらの名前付きロールは、.spring/commands ディレクトリの隣にある .spring/roles ディレクトリ内に YAML ファイルとして保存されます。
ロールを使用すると、Handlebars を使用してアクションファイル内でアクセスできる変数を定義できるため、コマンド間でデータを共有できます。
さらに、ロールを利用してコマンドラインオプションの値を指定することもできます。コマンドラインオプションに値が指定されておらず、コマンドオプションと同じ名前のロール変数が存在する場合、コマンドはその特定のオプションにロール変数の値を自動的に使用します。
ファイル構造
ロールごとに、対応するファイルが .spring/roles/vars ディレクトリに作成されます。例: qa および prod ロールがある場合、ディレクトリは次のようになります。
$ tree .spring/roles/vars -lr
.spring/roles/vars
├── vars.yml
├── vars-qa.yml
└── vars-prod.ymlvars.yml ファイルはデフォルトのロールに使用されます。
この構造は、プロファイル固有の Spring アプリケーション構成ファイルの使用と同様のパターンに従います。ただし、ロール変数は、ファイルに加えて他の場所 (環境変数など) から値を取得するなど、Spring プロファイルと同じ動作を示しません。
クイックスタート
このクイックスタートでは、デフォルトのロールに変数を追加し、ファイルの生成時にその値を使用する方法を示します。
ロール変数 "greeting" の値を "Mondo" に設定してみましょう。
$ spring role set --key greeting --value Mondo
Key-value pair added to the default role キーと値のペアは、ルートプロジェクトディレクトリの ./spring/roles/vars/vars.yml ファイルに保存されます。
変数の値を取得するには、次のコマンドを使用します。
$ spring role get --key greeting
Mondo別のロール変数を作成しましょう。
$ spring role set --key language --value Italian
Key-value pair added to the default role 次に、これらの変数をユーザー定義コマンドに組み込みましょう。hello say という名前のユーザー定義コマンドを作成します。
$ spring command new --command-name hello --sub-command-name say
Created user defined command /home/mark/testing-spring-cli/roles/myapp/.spring/commands/hello/say.spring/commands/hello/say ディレクトリ内に、次の内容を含む command.yaml があります。
command:
description: Generate a new file with a hello message
options:
#
- name: greeting
description: who or what to say hello to
dataType: string
defaultValue: World
inputType: text コマンドラインオプション名は greeting であり、作成したロール変数の名前と一致することに注意してください。
.spring/commands/hello/say ディレクトリ内には、次の内容のアクションファイル hello.yaml があります。
actions:
- generate:
to: hello.txt
text: Hello {{greeting}} on {{os-name}}.ファイルを更新して以下を含めます。
actions:
- generate:
to: hello.txt
text: Hello {{greeting}} on {{os-name}}. {{#if language}} {{language}} {{/if}}greeting コマンドラインオプションを渡さずにコマンドを実行すると、greeting の値は、デフォルト値 World を使用する代わりに、同じ名前のロール変数から取得されます。
さらに、Role Variable 言語を定義したため、その存在をテストし、その値を出力に含めることができます。言語はコマンドラインオプションではないことに注意してください。
$ spring hello say
Using Role variable instead of default command line option for key = greeting , value = Mondo from the default role
Generated /home/mark/testing-spring-cli/roles/myapp/hello.txt生成されたファイルには次のものが含まれます。
Hello Mondo on Linux. Italian{{greeting}} の値は、コマンドラインオプションとして提供されていないため、ロール変数から取得されます。
{{language}} 変数はコマンドラインオプションではありませんでしたが、Handlebars 式で使用できます。
生成されたファイルを削除し、対話型シェルで . ! rm hello.txt を実行し、greeting コマンドラインオプションを渡します。
$ spring hello say --greeting amico生成されたファイルには次のものが含まれます。
Hello amico on Linux. Italian変数を設定しています
ロール変数の値を設定するには、spring role set コマンドを使用します。
spring role set --key greeting --value Mondo 必要に応じて、--role オプションを使用してロールを指定できます。
変数の取得
ロール変数の値を取得するには、次のコマンドを使用します。
spring role get --key greeting必要に応じて、--role オプションを使用してロールを指定できます。
ロール変数のグリーティングには、Handlebars テンプレートを利用するアクションファイル内でアクセスできます。例については、「クイックスタート」セクションを参照してください。
ロール変数は、ユーザー定義のコマンドオプション名と照合するためにも使用されます。値がコマンドラインオプションとして明示的に指定されていない場合は、Role 変数の値が使用されます。
対話型シェルを使用しているときに、特別なコマンド . ! を使用して、ロール変数を含むファイルの完全な内容を表示することもできます。
spring:>. ! cat .spring/roles/vars/vars.yml
greeting: mondoロールの追加
ロールを追加するには、次のコマンドを使用します。
spring role add qa これにより、qa という名前のロールが作成されます。
./spring/roles/vars/vars-qa.yml という名前のファイルがルートプロジェクトディレクトリに作成されます。