轉換

回報問題 查看原始碼 夜間 7.3 7.2 7.1 7.0 6.5

代表跨依附元件邊緣的設定轉換。舉例來說,如果 //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 可呼叫; 必要
實作這項轉換的函式。這個函式一律具有兩個參數:settingsattrsettings 參數是字典,其鍵組由 inputs 參數定義。因此,針對每個建構設定 --//foo=bar,如果 inputs 包含 //foosettings 就會有 settings['//foo']='bar' 項目。

attr 參數是 ctx.attr 的參照。這可讓實作函式存取規則的屬性,以便進行屬性參數化轉換。

此函式必須傳回從建構設定 ID 到建構設定值的 dict,這代表設定轉換:對於傳回 dict 中的每個項目,轉換會將該設定更新為新值。所有其他設定都保持不變。在分割轉換的情況下,這個函式也可以傳回 dictlistdictdict

inputs 字串序列; 必要
這項轉換作業可讀取的建構設定清單。這會成為實作函式參數設定參數的索引鍵組合。
outputs 字串序列; 必要
這項轉換作業可寫入的建構設定清單。這個集合必須是這個轉換作業傳回的字典主鍵集合的超集合。