2.2. コマンドラインツール#

CommandLineToolは、Processオブジェクトの一種であり、それ自体またはワークフローのステップとして実行できます。ls,echo,tar などの実行したいコマンドのラッパーです。実行したいコマンドは、CommandLineToolについてのCWL定義のbaseCommand 属性で定義されています。

CWL CommandLineToolは、inputsoutputs も持っていなければなりません。次の例は、Linuxコマンド echo のためのCWL CommandLineToolの最小限の例で、inputsとoutputsを使用します。

digraph G { compound=true; rankdir="LR"; fontname="Verdana"; fontsize="10"; graph [splines=ortho]; node [fontname="Verdana", fontsize="10", shape=box]; edge [fontname="Verdana", fontsize="10"]; subgraph cluster_0 { command[style="filled" label=<<FONT FACE='sans-serif;'>echo</FONT>>]; label="baseCommand"; fill=gray; } inputs -> command [lhead=cluster_0]; command -> outputs [ltail=cluster_0]; }

CWLコマンドラインツール。#

echo.cwl#
cwlVersion: v1.2
class: CommandLineTool

baseCommand: echo

stdout: output.txt

inputs:
  message:
    type: string
    inputBinding: {}
outputs:
  out:
    type: string
    outputBinding:
      glob: output.txt
      loadContents: true
      outputEval: $(self[0].contents)

注釈

上記の例では、簡略化した形で入力と出力を定義しています。InputsOutputsのセクションで、より詳しく説明する予定です。

2.2.1. ネットワークアクセス#

これは、プロセスが送信先としてIPv4/IPv6ネットワーク・アクセスを必要とするかどうかを示します。 CWL v1.1以降、プログラムにはデフォルトでネットワーク・アクセス権が付与されないため、ツール定義にネットワーク・アクセスの要件を含める必要があります。

cwlVersion: v1.2
class: CommandLineTool

requirements:
  NetworkAccess:
     networkAccess: true

注釈

CWL v1.0のコマンドラインツールをv1.1またはv1.2にアップグレードすると、自動的にnetworkAccess: trueが追加されネットワークアクセスできるようになります。