การเปลี่ยน

รายงานปัญหา ดูแหล่งที่มา

แสดงการเปลี่ยนการกำหนดค่าใน Edge Dependency เช่น หาก //package:foo อาศัย //package:bar ในการเปลี่ยนการกำหนดค่า การกำหนดค่าของเป้าหมาย 2 อย่างนี้จะแตกต่างกัน กล่าวคือ การเปลี่ยนของ //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 จำเป็น
ฟังก์ชันที่ใช้การเปลี่ยนนี้ ฟังก์ชันนี้จะมีพารามิเตอร์ 2 ตัวเสมอ ได้แก่ settings และ attr พารามิเตอร์ settings คือพจนานุกรมที่พารามิเตอร์อินพุตกำหนดชุดคีย์ ดังนั้น สำหรับการตั้งค่าบิลด์แต่ละรายการ --//foo=bar หาก inputs มี //foo settings จะมีรายการ settings['//foo']='bar'

พารามิเตอร์ attr เป็นการอ้างอิงไปยัง ctx.attr ซึ่งจะทำให้ฟังก์ชันการใช้งานมีสิทธิ์เข้าถึงแอตทริบิวต์ของกฎเพื่อทำให้การเปลี่ยนที่มีแอตทริบิวต์เป็นพารามิเตอร์ได้

ฟังก์ชันนี้ต้องแสดงผล dict จากตัวระบุการตั้งค่าบิลด์เป็นค่าการตั้งค่าของบิลด์ ซึ่งแสดงถึงการเปลี่ยนการกำหนดค่า สำหรับแต่ละรายการใน dict ที่แสดงผล การเปลี่ยนจะอัปเดตการตั้งค่าดังกล่าวเป็นค่าใหม่ การตั้งค่าอื่นๆ ทั้งหมดจะไม่เปลี่ยนแปลง ฟังก์ชันนี้ยังสามารถแสดงผล list เป็น dict หรือ dict เป็น dict ในกรณีที่เปลี่ยนฝั่ง

inputs ลำดับของสตริง ต้องระบุ
รายการการตั้งค่าเวอร์ชันที่อ่านได้จากการเปลี่ยนนี้ ซึ่งจะกลายเป็นชุดคีย์ของพารามิเตอร์การตั้งค่าของพารามิเตอร์ฟังก์ชันการใช้งาน
outputs ลำดับของสตริงที่จำเป็น
รายการการตั้งค่าบิลด์ที่เขียนได้ด้วยการเปลี่ยนนี้ ซึ่งต้องเป็นชุดพิเศษของชุดคีย์ของพจนานุกรมที่ส่งกลับมาจากการเปลี่ยนครั้งนี้