角色

角色提供了一種組織和重用使用者自定義命令中的變數的方式。

預設情況下,Spring CLI 包含一個始終可用的未命名角色。如果未指定特定角色,命令將使用預設角色。

為了進一步自定義和區分角色,您可以將它們與特定的名稱關聯起來。這些命名角色作為 YAML 檔案儲存在 `.spring/roles` 目錄中,該目錄與 `.spring/commands` 目錄位於同一位置。

角色允許您定義可以透過使用 Handlebars 在操作檔案中訪問的變數,從而允許您在命令之間共享資料。

此外,您可以使用角色為命令列選項提供值。如果命令列選項沒有指定值,並且存在與命令選項同名的角色變數,則命令會自動使用該角色變數的值作為該特定選項的值。

檔案結構

對於每個角色,都會在 `.spring/roles/vars` 目錄中建立一個相應的檔案。例如,如果存在 `qa` 和 `prod` 角色,則目錄結構如下所示:

$ tree .spring/roles/vars -lr
.spring/roles/vars
├── vars.yml
├── vars-qa.yml
└── vars-prod.yml

`vars.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`。

此外,由於我們已經定義了角色變數 language,我們可以測試它的存在並將其值包含在輸出中。請注意,language 不是命令列選項。以下命令(顯示其輸出)執行此操作:

$ 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 表示式。

現在我們可以刪除生成的檔案。在互動式 shell 中,我們執行 `. ! 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 模板的操作檔案中訪問角色變數 greeting。有關示例,請參閱快速入門部分

角色變數還用於匹配使用者自定義命令選項名稱。如果未明確提供值作為命令列選項,則使用角色變數的值。

在互動式 shell 中,您還可以使用特殊命令 `.` 來檢視包含角色變數的檔案的完整內容

spring:>. ! cat .spring/roles/vars/vars.yml
greeting: mondo

新增角色

要新增角色,請使用以下命令

spring role add qa

此命令建立一個名為 `qa` 的角色。

在根專案目錄下會建立一個名為 `./spring/roles/vars/vars-qa.yml` 的檔案。

列出角色

要列出可用角色,請使用以下命令

spring role list

此命令顯示角色列表

┌────┐
│Name│
├────┤
│qa  │
└────┘

刪除角色

要刪除角色,請使用以下命令

spring role remove qa

此命令刪除名為 `qa` 的角色。

© . This site is unofficial and not affiliated with VMware.