シェルルール

ルール

sh_binary

sh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, licenses, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

sh_binary ルールは、実行可能なシェル スクリプトを宣言するために使用されます。(sh_binary は誤った名称です。出力が必ずしもバイナリとは限りません)。このルールにより、すべての依存関係がビルドされ、実行時に runfiles 領域に表示されます。sh_binary() ルールの名前は、スクリプトの名前から拡張子を除いたものにすることをおすすめします(例: .sh)。ルール名とファイル名は区別する必要があります。sh_binary では Shebang を尊重するため、使用可能な任意のインタープリタを使用できます(例:#!/bin/zsh

依存関係がなく、いくつかのデータファイルがある単純なシェル スクリプトの場合:

sh_binary(
    name = "foo",
    srcs = ["foo.sh"],
    data = glob(["datafiles/*.txt"]),
)

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

このターゲットに集約される「library」ターゲットのリスト。ほとんどのビルドルールによって定義される一般的な属性で、deps に関する一般的なコメントをご覧ください。

この属性は、srcs 内のコードに依存する解釈済みのプログラム ソースコードを提供する他の sh_library ルールをリストするために使用します。このルールによって提供されるファイルは、このターゲットの runfiles の中に存在します。

srcs

List of labels; required

シェル スクリプトを含むファイル。

この属性は、要素がシェル スクリプトであるシングルトン リストである必要があります。このスクリプトは実行可能であることが必要です。また、ソースファイルまたは生成されたファイルを使用することもできます。実行時に必要な他のすべてのファイル(スクリプトまたはデータ)は、data 属性に属します。

sh_library

sh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

このルールの主な用途は、関連スクリプト(コンパイルやリンクを必要としないインタプリタ言語のプログラム(Bourne シェルなど)のプログラム)と、それらのプログラムが実行時に必要とするデータを集約する論理「ライブラリ」を集約することです。このような「ライブラリ」は、1 つ以上の sh_binary ルールの data 属性から使用できます。

filegroup ルールを使用して、データファイルを集計できます。

インタプリタ型プログラミング言語では、「コード」と「データ」が必ずしも明確に区別されるわけではありません。結局のところ、インタープリタの視点からは、プログラムは単なる「データ」です。このため、このルールには srcsdepsdata の 3 つの属性があり、これらはすべて基本的に同等です。 現在の実装では、これらのリストの要素は区別されません。3 つの属性はすべて、ルール、ソースファイル、生成されたファイルを受け入れます。ただし、この属性は(他のルールと同様に)通常の目的に使用することをおすすめします。

sh_library(
    name = "foo",
    data = [
        ":foo_service_script",  # an sh_binary with srcs
        ":deploy_foo",  # another sh_binary with srcs
    ],
)

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

このターゲットに集約される「library」ターゲットのリスト。ほとんどのビルドルールによって定義される一般的な属性で、deps に関する一般的なコメントをご覧ください。

この属性は、srcs 内のコードに依存する解釈済みのプログラム ソースコードを提供する他の sh_library ルールをリストするために使用します。このルールによって提供されるファイルは、このターゲットの runfiles の中に存在します。

srcs

List of labels; optional

入力ファイルのリスト。

この属性は、このライブラリに属するシェル スクリプトのソースファイルを一覧表示するために使用します。スクリプトは、シェルの source または . コマンドを使用して他のスクリプトを読み込むことができます。

sh_test

sh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)

sh_test() ルールは、Bourne シェル スクリプトとして記述されたテストを作成します。

すべてのテストルールに共通する属性(*_test)をご覧ください。

sh_test(
    name = "foo_integration_test",
    size = "small",
    srcs = ["foo_integration_test.sh"],
    deps = [":foo_sh_lib"],
    data = glob(["testdata/*.txt"]),
)

引数

属性
name

Name; required

このターゲットの一意の名前。

deps

List of labels; optional

このターゲットに集約される「library」ターゲットのリスト。ほとんどのビルドルールによって定義される一般的な属性で、deps に関する一般的なコメントをご覧ください。

この属性は、srcs 内のコードに依存する解釈済みのプログラム ソースコードを提供する他の sh_library ルールをリストするために使用します。このルールによって提供されるファイルは、このターゲットの runfiles の中に存在します。

srcs

List of labels; required

シェル スクリプトを含むファイル。

この属性は、要素がシェル スクリプトであるシングルトン リストである必要があります。このスクリプトは実行可能であることが必要です。また、ソースファイルまたは生成されたファイルを使用することもできます。実行時に必要な他のすべてのファイル(スクリプトまたはデータ)は、data 属性に属します。