doanh số bán hàng

Bản dựng chạy vào ban đêm · 9.0 · 8.5 · 8.4 · 8.3 · 8.2 · 7.7
Một đối tượng ngữ cảnh được truyền đến hàm triển khai cho một quy tắc hoặc khía cạnh. Nó cung cấp quyền truy cập vào thông tin và các phương pháp cần thiết để phân tích mục tiêu hiện tại.

Cụ thể, nó cho phép hàm triển khai truy cập vào nhãn, thuộc tính, cấu hình và nhà cung cấp của các phần phụ thuộc của mục tiêu hiện tại. Nó có các phương thức để khai báo tệp đầu ra và các thao tác tạo ra tệp đó.

Về cơ bản, các đối tượng bối cảnh sẽ tồn tại trong suốt thời gian gọi đến hàm triển khai. Việc truy cập vào các đối tượng này bên ngoài hàm được liên kết sẽ không hữu ích. Hãy xem trang Quy tắc để biết thêm thông tin.

Hội viên

hành động

actions ctx.actions

Chứa các phương thức để khai báo tệp đầu ra và các thao tác tạo ra tệp đó.

aspect_ids

list ctx.aspect_ids

Danh sách mã nhận dạng cho tất cả các khía cạnh được áp dụng cho mục tiêu. Chỉ có trong các hàm triển khai khía cạnh.

attr

struct ctx.attr

Một cấu trúc để truy cập vào các giá trị của thuộc tính. Người dùng cung cấp các giá trị (nếu không, hệ thống sẽ sử dụng giá trị mặc định). Các thuộc tính của cấu trúc và các loại giá trị của chúng tương ứng với các khoá và giá trị của từ điển attrs được cung cấp cho hàm rule. Xem ví dụ về cách sử dụng.

bin_dir

root ctx.bin_dir

Thư mục gốc tương ứng với thư mục bin.

build_file_path

string ctx.build_file_path

Không dùng nữa: Sử dụng ctx.label.package + '/BUILD'. Đường dẫn đến tệp BUILD cho quy tắc này, tương ứng với thư mục gốc.

build_setting_value

unknown ctx.build_setting_value

Giá trị của chế độ cài đặt bản dựng do mục tiêu hiện tại đại diện. Nếu đây không phải là bối cảnh cho một phiên bản của quy tắc đặt thuộc tính build_setting, thì việc đọc thuộc tính này là một lỗi.

cấu hình

configuration ctx.configuration

Cấu hình bản dựng của mục tiêu hiện tại. Hãy xem loại cấu hình Starlarktài liệu về cấu hình để biết thêm thông tin chi tiết.

coverage_instrumented

bool ctx.coverage_instrumented(target=None)

Trả về liệu có nên tạo tính năng đo lường mức độ phù hợp của mã khi thực hiện các thao tác biên dịch cho quy tắc này hay không, hoặc nếu target được cung cấp, thì quy tắc do Target đó chỉ định. (Nếu bạn cung cấp một Target không phải quy tắc hoặc quy tắc Starlark, thì hàm này sẽ trả về False.) Kiểm tra xem các nguồn của quy tắc hiện tại (nếu không có Target nào được cung cấp) hoặc các nguồn của Target có nên được đo lường hay không dựa trên chế độ cài đặt cấu hình --instrumentation_filter và --instrument_test_targets. Điều này khác với coverage_enabled trong cấu hình. Cấu hình này ghi chú liệu tính năng thu thập dữ liệu về mức độ phù hợp có được bật cho toàn bộ quá trình chạy hay không, nhưng không ghi chú liệu một mục tiêu cụ thể có được đo lường hay không.

Thông số

Tham số Mô tả
target Target; hoặc None; mặc định là None
Một Target chỉ định một quy tắc. Nếu bạn không cung cấp, hệ thống sẽ mặc định sử dụng quy tắc hiện tại.

created_actions

StarlarkValue ctx.created_actions()

Đối với các quy tắc có _skylark_testable được đặt thành True, thao tác này sẽ trả về một trình cung cấp Actions đại diện cho tất cả các thao tác đã tạo cho đến nay đối với quy tắc hiện tại. Đối với tất cả các quy tắc khác, hàm này sẽ trả về None. Xin lưu ý rằng nhà cung cấp sẽ không được cập nhật khi các thao tác tiếp theo được tạo, vì vậy, bạn sẽ phải gọi lại hàm này nếu muốn kiểm tra các thao tác đó.

Mục đích của việc này là giúp viết các bài kiểm thử cho các hàm trợ giúp triển khai quy tắc. Các hàm này có thể nhận một đối tượng ctx và tạo các thao tác trên đối tượng đó.

disabled_features

list ctx.disabled_features

Tập hợp các tính năng mà người dùng đã tắt một cách rõ ràng cho quy tắc này.

exec_groups

ExecGroupCollection ctx.exec_groups

Một tập hợp các nhóm thực thi có sẵn cho quy tắc này, được lập chỉ mục theo tên. Truy cập bằng ctx.exec_groups[name_of_group].

tệp thực thi

struct ctx.executable

Một struct chứa các tệp thực thi được xác định trong thuộc tính loại nhãn được đánh dấu là executable=True. Các trường cấu trúc tương ứng với tên thuộc tính. Mỗi giá trị trong cấu trúc là File hoặc None. Nếu bạn không chỉ định một thuộc tính không bắt buộc trong quy tắc, thì giá trị cấu trúc tương ứng sẽ là None. Nếu một loại nhãn không được đánh dấu là executable=True, thì không có trường cấu trúc tương ứng nào được tạo. Xem ví dụ về cách sử dụng.

expand_location

string ctx.expand_location(input, targets=[])

Mở rộng tất cả các mẫu $(location ...) trong chuỗi đã cho bằng cách thay thế $(location //x) bằng đường dẫn của tệp đầu ra của mục tiêu //x. Hoạt động mở rộng chỉ áp dụng cho những nhãn trỏ đến các phần phụ thuộc trực tiếp của quy tắc này hoặc được liệt kê rõ ràng trong đối số không bắt buộc targets.

$(location ...) sẽ gây ra lỗi nếu mục tiêu được tham chiếu có nhiều đầu ra. Trong trường hợp này, vui lòng sử dụng $(locations ...) vì lệnh này tạo ra một danh sách các đường dẫn đầu ra được phân tách bằng dấu cách. Bạn cũng có thể sử dụng hàm này một cách an toàn cho một tệp đầu ra duy nhất.

Hàm này rất hữu ích khi cho phép người dùng chỉ định một lệnh trong tệp BUILD (chẳng hạn như đối với genrule). Trong các trường hợp khác, thường thì bạn nên thao tác trực tiếp với nhãn.

Thông số

Tham số Mô tả
input string; required
Chuỗi cần mở rộng.
targets sequence của Targets; giá trị mặc định là []
Danh sách các mục tiêu để biết thêm thông tin tra cứu. Các mục tiêu này được mở rộng như sau: Một mục tiêu có một tệp duy nhất trong DefaultInfo.files sẽ mở rộng thành tệp đó. Các mục tiêu khác sẽ mở rộng đến tệp DefaultInfo.executable nếu được đặt và nếu --incompatible_locations_prefers_executable được bật, nếu không, các mục tiêu này sẽ mở rộng đến DefaultInfo.files.
Có thể trả về None.

expand_make_variables

string ctx.expand_make_variables(attribute_name, command, additional_substitutions)

Không dùng nữa. Thay vào đó, hãy dùng ctx.var để truy cập vào các biến.
Trả về một chuỗi sau khi mở rộng tất cả các thông tin tham chiếu đến "Tạo biến". Các biến phải có định dạng sau: $(VAR_NAME). Ngoài ra, $$VAR_NAME expands to $VAR_NAME. Examples:
ctx.expand_make_variables("cmd", "$(MY_VAR)", {"MY_VAR": "Hi"})  # == "Hi"
ctx.expand_make_variables("cmd", "$$PWD", {})  # == "$PWD"
Additional variables may come from other places, such as configurations. Note that this function is experimental.
                  
      

Parameters

Parameter Description
attribute_name string; required
The attribute name. Used for error reporting.
command string; required
The expression to expand. It can contain references to "Make variables".
additional_substitutions dict; required
Additional substitutions to make beyond the default make variables.

features

list ctx.features

The set of features that are explicitly enabled by the user for this rule. See example of use.

file

struct ctx.file

A struct containing files defined in label type attributes marked as allow_single_file. The struct fields correspond to the attribute names. The struct value is always a File or None. If an optional attribute is not specified in the rule then the corresponding struct value is None. If a label type is not marked as allow_single_file, no corresponding struct field is generated. It is a shortcut for:
list(ctx.attr.<ATTR>.files)[0]
In other words, use file to access the (singular) default output of a dependency. See example of use.

files

struct ctx.files

A struct containing files defined in label or label list type attributes. The struct fields correspond to the attribute names. The struct values are list of Files. It is a shortcut for:
[f for t in ctx.attr.<ATTR> for f in t.files]
In other words, use files to access the default outputs of a dependency. See example of use.

fragments

fragments ctx.fragments

Allows access to configuration fragments in target configuration.

genfiles_dir

root ctx.genfiles_dir

The root corresponding to genfiles directory.

info_file

File ctx.info_file

The file that is used to hold the non-volatile workspace status for the current build request. See documentation for --workspace_status_command for more information.

label

Label ctx.label

The label of the target currently being analyzed.

outputs

structure ctx.outputs

A pseudo-struct containing all the predeclared output files, represented by File objects. See the Rules page for more information and examples.

This field does not exist on aspect contexts, since aspects do not have predeclared outputs.

The fields of this object are defined as follows. It is an error if two outputs produce the same field name or have the same label.

  • If the rule declares an outputs dict, then for every entry in the dict, there is a field whose name is the key and whose value is the corresponding File.
  • For every attribute of type attr.output that the rule declares, there is a field whose name is the attribute's name. If the target specified a label for that attribute, then the field value is the corresponding File; otherwise the field value is None.
  • For every attribute of type attr.output_list that the rule declares, there is a field whose name is the attribute's name. The field value is a list of File objects corresponding to the labels given for that attribute in the target, or an empty list if the attribute was not specified in the target.
  • (Deprecated) If the rule is marked executable or test, there is a field named "executable", which is the default executable. It is recommended that instead of using this, you pass another file (either predeclared or not) to the executable arg of DefaultInfo.

package_relative_label

Label ctx.package_relative_label(input)

Converts the input string into a Label object, in the context of the package of the target currently being analyzed. If the input is already a Label, it is returned unchanged.

The result of this function is the same Label value as would be produced by passing the given string to a label-valued attribute of the rule and accessing the corresponding Label()Label() sử dụng ngữ cảnh của gói tệp .bzl đã gọi nó, chứ không phải gói của mục tiêu hiện đang được phân tích. Hàm này có hành vi tương tự như native.package_relative_label(), không thể dùng trong hàm triển khai quy tắc hoặc khía cạnh.

Thông số

Tham số Mô tả
input string; hoặc Label; bắt buộc
Chuỗi nhãn đầu vào hoặc đối tượng Nhãn. Nếu một đối tượng Nhãn được truyền, thì đối tượng đó sẽ được trả về nguyên trạng.

resolve_command

tuple ctx.resolve_command(*, command='', attribute=None, expand_locations=False, make_variables=None, tools=[], label_dict={}, execution_requirements={})

(Thử nghiệm) Trả về một bộ (inputs, command, empty list) gồm danh sách các đầu vào đã phân giải và danh sách argv cho lệnh đã phân giải, cả hai đều phù hợp để truyền dưới dạng các đối số có cùng tên của phương thức ctx.action.
Lưu ý cho người dùng Windows: phương thức này yêu cầu Bash (MSYS2). Hãy cân nhắc sử dụng resolve_tools() (nếu phù hợp với nhu cầu của bạn). Danh sách trống được trả về dưới dạng thành viên thứ ba của bộ dữ liệu để đảm bảo khả năng tương thích ngược.

Thông số

Tham số Mô tả
command string; mặc định là ''
Lệnh cần phân giải.
attribute string; hoặc None; mặc định là None
Tên của thuộc tính được liên kết mà bạn muốn đưa ra lỗi hoặc None.
expand_locations bool; default is False
Shall we expand $(location) variables? Hãy xem ctx.expand_location() để biết thêm thông tin.
make_variables dict; hoặc None; default is None
Make variables to expand, or None.
tools sequence của Targets; mặc định là []
Danh sách công cụ (danh sách mục tiêu).
label_dict dict; default is {}
Dictionary of resolved labels and the corresponding list of Files (a dict of Label : list of Files).
execution_requirements dict; mặc định là {}
Thông tin để lên lịch hành động nhằm giải quyết lệnh này. Hãy xem các thẻ để biết các khoá hữu ích.

resolve_tools

tuple ctx.resolve_tools(*, tools=[])

Trả về một bộ (inputs, empty list) của depset gồm các đầu vào đã phân giải cần thiết để chạy các công cụ, phù hợp để truyền dưới dạng đối số có cùng tên của các phương thức ctx.actions.runctx.actions.run_shell.

Ngược lại với ctx.resolve_command, phương thức này không yêu cầu phải cài đặt Bash trên máy, vì vậy, phương thức này phù hợp với các quy tắc được xây dựng trên Windows. Danh sách trống được trả về trong bộ dữ liệu để đảm bảo khả năng tương thích ngược.

Thông số

Tham số Mô tả
tools sequence của Targets; mặc định là []
Danh sách công cụ (danh sách mục tiêu).

quy tắc

rule_attributes ctx.rule

Phần mô tả thuộc tính quy tắc cho quy tắc mà khía cạnh được áp dụng. Chỉ có trong các hàm triển khai khía cạnh.

runfiles

runfiles ctx.runfiles(files=[], transitive_files=None, collect_data=False, collect_default=False, symlinks={}, root_symlinks={})

Tạo một đối tượng runfiles.

Thông số

Tham số Mô tả
files sequence của Files; giá trị mặc định là []
Danh sách các tệp sẽ được thêm vào runfiles.
transitive_files depset của File; hoặc None; mặc định là None
Tập hợp (bắc cầu) các tệp sẽ được thêm vào runfiles. Depsets nên sử dụng thứ tự default (theo mặc định).
collect_data bool; mặc định là False
Bạn không nên sử dụng tham số này. Xem hướng dẫn về runfiles.

Có thu thập các tệp chạy dữ liệu từ các phần phụ thuộc trong thuộc tính srcs, data và deps hay không.

collect_default bool; mặc định là False
Bạn không nên sử dụng tham số này. Xem hướng dẫn về runfiles.

Có thu thập các tệp chạy mặc định từ các phần phụ thuộc trong thuộc tính srcs, data và deps hay không.

dict; hoặc depset của SymlinkEntrys; mặc định là {}
Một depset SymlinkEntry hoặc bản đồ của các symlink sẽ được thêm vào runfiles. Symlink luôn được thêm vào thư mục runfiles của không gian làm việc chính (ví dụ: <runfiles_root>/_main/<symlink_path>, không phải thư mục tương ứng với kho lưu trữ của mục tiêu hiện tại. Xem Runfiles symlinks trong hướng dẫn về các quy tắc.
dict; hoặc depset của SymlinkEntrys; mặc định là {}
Một depset SymlinkEntry hoặc một bản đồ các symlink sẽ được thêm vào runfiles. Xem Runfiles symlinks trong hướng dẫn về các quy tắc.

split_attr

struct ctx.split_attr

Một cấu trúc để truy cập vào các giá trị của thuộc tính có cấu hình phân chia. Nếu thuộc tính là một danh sách nhãn, thì giá trị của split_attr là một từ điển gồm các khoá của phần chia tách (dưới dạng chuỗi) cho danh sách ConfiguredTargets trong nhánh đó của phần chia tách. Nếu thuộc tính là một nhãn, thì giá trị của split_attr là một dict của các khoá của phần chia (dưới dạng chuỗi) thành ConfiguredTarget duy nhất. Các thuộc tính có cấu hình phân chia vẫn xuất hiện trong cấu trúc attr, nhưng giá trị của chúng sẽ là danh sách đơn lẻ với tất cả các nhánh của cấu hình phân chia được hợp nhất với nhau.

super

unknown ctx.super()

Thử nghiệm: Gọi hàm triển khai của thành phần mẹ và trả về các trình cung cấp của hàm đó

target_platform_has_constraint

bool ctx.target_platform_has_constraint(constraintValue)

Trả về true nếu giá trị ràng buộc đã cho thuộc nền tảng mục tiêu hiện tại.

Thông số

Tham số Mô tả
constraintValue ConstraintValueInfo; bắt buộc
Giá trị ràng buộc để kiểm tra nền tảng mục tiêu.

chuỗi công cụ

ToolchainContext ctx.toolchains

Chuỗi công cụ cho nhóm thực thi mặc định của quy tắc này.

var

dict ctx.var

Từ điển (Chuỗi đến chuỗi) của các biến cấu hình.

version_file

File ctx.version_file

Tệp dùng để lưu giữ trạng thái không gian làm việc tạm thời cho yêu cầu bản dựng hiện tại. Hãy xem tài liệu về --workspace_status_command để biết thêm thông tin.

workspace_name

string ctx.workspace_name

Tên của không gian làm việc, đây là tên gốc thực thi và tiền tố runfiles cho kho lưu trữ chính. Nếu --enable_bzlmod ở trạng thái bật, thì đây là chuỗi cố định _main. Nếu không, đây là tên không gian làm việc như được xác định trong tệp WORKSPACE.