轉換

代表跨依附元件邊緣的設定轉換。舉例來說,如果 //package:foo 依附於設定轉換的 //package:bar,則這兩個目標的設定會有所不同:系統會根據 //package:foo 的函式,判斷 //package:bar 的轉場效果,具體取決於轉換物件定義的函式。

成員

轉換

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 參數是一種字典,其鍵組合是由輸入參數定義。因此,在每個建構設定 --//foo=bar 中,如果 inputs 包含 //foosettings 就會有一個項目 settings['//foo']='bar'

attr 參數是 ctx.attr 的參照。這樣實作函式就能存取規則屬性,以提供屬性參數化的轉換。

此函式必須從建構設定 ID 傳回 dict,從建構設定值傳回;這代表設定轉換:針對回傳 dict 中的每個項目,轉換會將設定更新為新的值。所有其他設定則維持不變。如果發生分割轉換,此函式也可以傳回 dictlistdictdict

inputs sequence of strings;必要
這項轉換作業可讀取的建構設定清單。這個項目會成為實作函式參數的設定參數鍵組合。
outputs sequence of strings;必要
可透過這項轉換作業寫入的建構設定清單。這個引數必須是這個轉換傳回的字典鍵集。