バージョン1.202109の概要

2021年9月に確定したテンプレートファイルの形式です。YAML形式のファイルの入力に対応しています。

テンプレートファイルのプロパティ

1
2
3
4
5
6
version: 1.202109
phase:
- # phase object
- # phase object
  # ...
dir: ./ # default directory

【必須】versionプロパティ(少数)

バージョン情報を設定します。

【必須】phaseプロパティ(Phaseオブジェクト配列)

フェイズを定義します。詳細およびPhaseオブジェクトのプロパティについてはPhaseオブジェクトをご覧ください。

【任意】dirプロパティ(パス文字列)

ファイル・ディレクトリの相対パスを参照する際の基準となるパスを指定します。規定値はテンプレートファイルを含んでいるディレクトリのパスです。 このプロパティで相対パスを指定した場合はテンプレートファイルを含んでいるディレクトリのパスを基準にして検索します。

Phaseオブジェクト

フェイズを定義します。フェイズの概念についてはドキュメント「フェイズとタスク」をご覧ください。同一フェイズ内に定義されているタスクは並列に実行され、他のフェイズに含まれているタスクは事前または事後に実行されます。

1
2
3
4
5
6
7
phase:
- name: # phase name
 at: # phase order
  task:
  - # task object
  - # task object
    # ...

【必須】nameプロパティ(識別文字列)

フェイズを定義するための識別値です。同一名のフェイズは許可されません。頭文字が英字であり、英数字とアンダーバーである文字列のみ使用できます。

【必須】taskプロパティ(Taskオブジェクト配列)

タスクを定義します。詳細およびTaskオブジェクトのプロパティについてはTaskオブジェクトをご覧ください。

【任意】atプロパティ(整数)

実行するタスクの順序を明示します。これを使用することで、より確実な順序の定義を示すことができます。規定値は未定義状態です。テンプレートファイルがYAMLファイルの場合はgopkg.in/yaml.v3を使用しているため、ファイルに記述されている順番に読み取ります。

ただし、atプロパティで順序が指定されているフェイズと指定されていないフェイズが混合している場合、atプロパティで定義されているものを先に実行します。すべてのatプロパティが定義されているフェイズが終了してから定義されていないフェイズを実行します。

atプロパティを含むフェイズと含まないフェイズが混合している状態は条件があいまいになり推奨されません。

Taskオブジェクト

タスクを定義します。タスクの概念についてはドキュメント「タスクの概念」をご覧ください。rehearsalはタスクとそれに紐づくプロセスを実行し、監視します。一部のプロパティはkindプロパティによって異なりますが、以下に示すのは共通のプロパティです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
task:
- name: # task name
  kind: # task kind
  wait: # waiting for to quit application
  until: # phase when close task
  stdout: # stdout element configration
    # ...: ...
  stderr: # stderr element configuration
    # ...: ...
  # other property is different by `kind` property.
  # ...: ...

【必須】nameプロパティ(識別文字列)

タスクを定義するための識別値です。同一フェイズ内で同一名のタスクは許可されません。異なるフェイズで同一名のタスクは許可されます。頭文字が英字であり、英数字とアンダーバーである文字列のみ使用できます。

【必須】kindプロパティ(文字列)

定義するタスクの種類です。サポートされているタスクの種類についてはドキュメント「タスクの種類/サポートしているタスクの一覧」をご覧ください。

【任意】waitプロパティ(true/false)

フェイズがタスクの終了を待機するかどうかを指定します。

falseを指定した場合は待機すべき他タスクの終了を確認した際にrehearsalによってそのタスクとプロセスが終了します。trueである場合はそのタスクが自主的に終了するまで待機します。trueである場合のタスクの終了条件についてはドキュメント「タスクの種類」をご覧ください。

既定ではtrueが設定されています。

【任意】untilプロパティ(識別文字列)

タスクの終了を行うフェイズを指定します。詳しくはドキュメント「フェイズとタスク」をご覧ください。未定義のフェイズを設定することはできません。

既定ではそのタスクを内包しているフェイズで終了することになっています。

【任意】stdoutプロパティ(TaskElementオブジェクト)

標準出力についてのプロパティです。詳細およびTaskElementオブジェクトのプロパティについてはTaskElementオブジェクトをご覧ください。また、標準出力をサポートしているタスクの種類についてはドキュメント「タスクの種類/タスク別の入出力系動作内容」をご覧ください。

規定値はTaskElementオブジェクトのメンバープロパティの規定値が適用されます。

【任意】stderrプロパティ(TaskElementオブジェクト)

標準エラー出力についてのプロパティです。詳細およびTaskElementオブジェクトのプロパティについてはTaskElementオブジェクトをご覧ください。また、標準エラー出力をサポートしているタスクの種類についてはドキュメント「タスクの種類/タスク別の入出力系動作内容」をご覧ください。

規定値はTaskElementオブジェクトのメンバープロパティの規定値が適用されます。

Task.cuiオブジェクト

CUIタスクを定義するためのプロパティです。CUIタスクは実行コマンドによって指定したアプリケーションを実行し、標準入出力を使用して通信します。内部ではos/execが使用されています。CUIタスクの詳細はタスクの種類/CUIタスクをご覧ください。

1
2
3
4
5
6
7
8
task:
- # shared property
  # ...: ...
  cmd: # execute command
  args: # arguments
  - # ...
  - # ....
  dir: # directory

【必須】cmdプロパティ(文字列)

実行コマンドを指定します。実行ファイルのあるパスやコマンドを指定できます。

【必須】argsプロパティ(文字列配列)

実行時にアプリケーションへ渡す引数を指定します。

【任意】dirプロパティ(パス文字列)

コマンドを実行する際に使用するディレクトリです。既定ではテンプレートファイルのdirプロパティでの値が適用されます。

Task.serialオブジェクト

SERIALタスクを定義するためのプロパティです。SERIALタスクは指定されたCOMポートを使用して、シリアル通信を標準入出力とします。内部ではgo.bug.st/serialが使用されています。SERIALタスクの詳細はタスクの種類/SERIALタスクをご覧ください。

1
2
3
4
5
6
task:
- # shared property
  # ...: ...
  baudrate: # transmission speed (bps)
  port: # COM Port name
  databits: # length of data bits

【必須】baudrateプロパティ(整数)

使用するシリアル通信の通信速度です。単位はbpsで示され、9600, 57600などが指定可能です。

【任意】portプロパティ(文字列)

シリアル通信で使用するポート番号です。COM3などの表記で指定可能です。 既定値は与えられませんが、rehearsal初期化中にポート番号をユーザーが指定することで不明なポート番号を解決します。

【任意】databitsプロパティ(整数)

1データ当たりのビット長です。5, 6, 7, 8の中から指定可能です。既定では8が指定されます。

Task.tcp, Task.udp, Task.unixオブジェクト

それぞれTCPタスク、UDPタスク、UNIXタスクを定義するためのプロパティです。これらは各方式による通信を標準入出力とします。各タスクはnetが使用されています。各タスクの詳細はドキュメント「タスクの種類」をご覧ください。

1
2
3
4
5
task:
- # shared property
  # ...: ...
  address: # address
  sync: # io sync speed

【必須】addressプロパティ(文字列)

接続先のアドレスを指定します。

【任意】syncプロパティ(文字列)

入出力の同期速度を指定します。既定では1秒毎の同期を行います。

TaskElementオブジェクト

各入出力のプロパティを設定します。

1
2
3
4
5
stdout:
  write-log: # print as log or not
  sendto: # tasks which input is sent data
    - # ...
    - # ...

【任意】write-logプロパティ(true/false)

出力をログとして表示するかどうかを選択します。既定ではfalseです。

【任意】sendtoプロパティ(文字列配列)

出力を入力として渡すタスクを定義時に示した名前を用いて指定します。複数のタスクを指定できます。以下のような形式で指定します。

1
2
- <同一フェイズ内のタスク名>
- <フェイズ名>::<タスク名>

既定ではデータを送信しません。