轉移

表示依附元件邊緣的設定轉換。舉例來說,如果 //package:foo 依附於 //package:bar,並進行設定轉換,則 //package:bar (及其依附元件) 的設定會是 //package:foo 的設定,加上轉換函式指定的變更。

成員

轉場

transition transition(*, implementation, inputs, outputs)

轉換會讀取一組輸入建構設定,並寫入一組輸出建構設定。

範例:

def _transition_impl(settings, attr):
    # This transition just reads the current CPU value as a demonstration.
    # A real transition could incorporate this into its followup logic.
    current_cpu = settings["//command_line_option:cpu"]
    return {"//command_line_option:compilation_mode": "dbg"}

build_in_debug_mode = transition(
    implementation = _transition_impl,
    inputs = ["//command_line_option:cpu"],
    outputs = ["//command_line_option:compilation_mode"],
)

如需更多詳情,請按這裡

參數

參數 說明
implementation callable; required
實作這項轉換作業的函式。這個函式一律有兩個參數:settingsattrsettings 參數是字典,其索引鍵集是由輸入參數定義。因此,對於每個建構設定 --//foo=bar,如果 inputs 包含 //foo,則 settings 會包含項目 settings['//foo']='bar'

attr 參數是 ctx.attr 的參照。這樣一來,實作函式就能存取規則的屬性,進而進行屬性參數化轉換。

這個函式必須傳回從建構設定 ID 到建構設定值的 dict,代表設定轉換:針對傳回的 dict 中的每個項目,轉換會將該設定更新為新值。所有其他設定都不會變更。如果是分割轉場效果,這個函式也可以傳回 listdictdictdict

inputs 字串序列;必要
可供這項轉換讀取的建構設定清單。這會成為實作函式參數的設定參數鍵集。
outputs sequence of strings; required
List of build settings that can be written by this transition. 這必須是此轉換傳回的字典鍵集的超集。