ctx.actions
.
Hội viên
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- chạy
- run_shell
- symlink
- template_dict
- write
args
Args actions.args()Trả về một đối tượng Args có thể dùng để xây dựng các dòng lệnh tiết kiệm bộ nhớ.
declare_directory
File actions.declare_directory(filename, *, sibling=None)Khai báo rằng quy tắc hoặc khung hình sẽ tạo thư mục có tên cho trước trong gói hiện tại. Bạn phải tạo một thao tác tạo thư mục. Bạn không thể truy cập trực tiếp vào nội dung của thư mục từ Starlark, nhưng có thể mở rộng trong lệnh hành động bằng
Args.add_all()
.
Thông số
Thông số | Mô tả |
---|---|
filename
|
bắt buộc Nếu không cung cấp "anh em", đường dẫn của thư mục mới, tương ứng với gói hiện tại. Nếu không, tên cơ sở cho tệp ('ương đồng' xác định một thư mục). |
sibling
|
File; or None ;
default = NoneMột tệp nằm trong cùng thư mục với thư mục mới khai báo. Tệp phải nằm trong gói hiện tại. |
declare_file
File actions.declare_file(filename, *, sibling=None)Khai báo rằng quy tắc hoặc khía cạnh tạo một tệp có tên tệp đã cho. Nếu không chỉ định
sibling
, tên tệp sẽ tương ứng với thư mục gói, nếu không tệp sẽ nằm trong cùng thư mục với sibling
. Không thể tạo tệp bên ngoài gói hiện tại.Hãy nhớ rằng ngoài việc khai báo tệp, bạn phải tạo riêng một thao tác dùng để phát tệp đó. Để tạo hành động đó, bạn cần truyền đối tượng File
được trả về đến hàm khởi tạo của hành động.
Lưu ý rằng các tệp đầu ra được khai báo trước không cần (và không thể) được khai báo bằng hàm này. Thay vào đó, bạn có thể lấy các đối tượng File
của chúng từ ctx.outputs
. Xem ví dụ về cách sử dụng.
Thông số
Thông số | Mô tả |
---|---|
filename
|
bắt buộc Nếu không cung cấp "anh em", đường dẫn của tệp mới, tương ứng với gói hiện tại. Nếu không, tên cơ sở cho tệp ('anh em' xác định thư mục). |
sibling
|
File; or None ;
mặc định = KhôngMột tệp nằm trong cùng thư mục với tệp mới tạo. Tệp phải nằm trong gói hiện tại. |
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)
Thử nghiệm. Thông số này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào tính năng này. Bạn có thể bật tính năng này trên cơ sở thử nghiệm bằng cách đặt --experimental_allow_unresolved_symlinks
Khai báo rằng quy tắc hoặc khía cạnh tạo một đường liên kết tượng trưng có tên đã cho trong gói hiện tại. Bạn phải tạo một thao tác tạo ra đường liên kết tượng trưng này. Bazel sẽ không bao giờ huỷ tham chiếu đường liên kết tượng trưng này và sẽ chuyển đường liên kết tượng trưng đó nguyên văn sang hộp cát hoặc trình thực thi từ xa.
Thông số
Thông số | Mô tả |
---|---|
filename
|
bắt buộc Nếu không cung cấp "anh em", đường dẫn của đường liên kết tượng trưng mới, tương ứng với gói hiện tại. Nếu không, tên cơ sở cho một tệp ('anh em' xác định một thư mục). |
sibling
|
File; or None ;
mặc định = Không cóMột tệp nằm trong cùng thư mục với đường liên kết tượng trưng mới khai báo. |
do_nothing
None actions.do_nothing(mnemonic, inputs=[])Tạo một thao tác trống không thực thi lệnh cũng như không tạo ra kết quả nào, nhưng rất hữu ích khi chèn "thao tác bổ sung".
Thông số
Thông số | Mô tả |
---|---|
mnemonic
|
bắt buộc Nội dung mô tả hành động bằng một từ, ví dụ: CppCompile hoặc GoLink. |
inputs
|
sequence of Files; or depset ;
default = []Danh sách các tệp đầu vào của hành động. |
expand_template
None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)Tạo hành động mở rộng mẫu. Khi được thực thi, thao tác này sẽ tạo một tệp dựa trên mẫu. Các phần của mẫu sẽ được thay thế bằng từ điển
substitutions
, theo thứ tự được chỉ định. Bất cứ khi nào một khoá của từ điển xuất hiện trong mẫu (hoặc kết quả của lần thay thế trước đó), khoá đó sẽ được thay thế bằng giá trị có liên quan. Không có cú pháp đặc biệt cho khoá. Ví dụ: bạn có thể sử dụng dấu ngoặc nhọn để tránh xung đột (ví dụ: {KEY}
). Xem ví dụ về cách sử dụng.
Thông số
Thông số | Mô tả |
---|---|
template
|
bắt buộc Tệp mẫu là một tệp văn bản được mã hoá UTF-8. |
output
|
bắt buộc Tệp đầu ra, là tệp văn bản được mã hoá UTF-8. |
substitutions
|
default = {} Nội dung thay thế cần thực hiện khi mở rộng mẫu. |
is_executable
|
mặc định = False Liệu tệp đầu ra có thể thực thi được hay không. |
computed_substitutions
|
TemplateDict ;
mặc định = không ràng buộcThử nghiệm. Tham số này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào tính năng này. Bạn có thể bật tính năng này trên cơ sở thử nghiệm bằng cách đặt --+experimental_lazy_template_expansion Thử nghiệm: Nội dung thay thế cần thực hiện khi mở rộng mẫu. |
chạy
None actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=None)Tạo một thao tác chạy một tệp thực thi. Xem ví dụ về cách sử dụng.
Thông số
Thông số | Mô tả |
---|---|
outputs
|
sequence of Files ; bắt buộcDanh sách các tệp đầu ra của hành động. |
inputs
|
sequence of Files; or depset ;
default = []Danh sách hoặc depset của các tệp đầu vào của hành động. |
unused_inputs_list
|
File; or None ;
mặc định = KhôngTệp chứa danh sách các dữ liệu đầu vào không được hành động sử dụng. Nội dung của tệp này (thường là một trong các đầu ra của thao tác) tương ứng với danh sách các tệp đầu vào không được sử dụng trong toàn bộ quá trình thực thi thao tác. Mọi thay đổi trong các tệp đó đều không được gây ảnh hưởng đến kết quả của thao tác. |
executable
|
File; or string; or FilesToRunProvider ; bắt buộcTệp thực thi mà thao tác sẽ gọi. |
tools
|
sequence; or depset ; mặc định = không liên kếtLiệt kê hoặc gỡ bỏ mọi công cụ cần thiết cho thao tác. Công cụ là dữ liệu đầu vào có các tệp chạy bổ sung được tự động cung cấp cho thao tác. Khi được cung cấp, danh sách có thể là một tập hợp không đồng nhất gồm các Tệp, thực thể FilesToRunProvider hoặc các nhóm phần phụ thuộc của Tệp. Các tệp nằm ngay trong danh sách và đến từ ctx.executable sẽ tự động được thêm các tệp chạy bộ của chúng. Khi được cung cấp, depset chỉ được chứa Tệp. Trong cả hai trường hợp, các tệp trong bộ phân tích đều không được tham chiếu chéo với ctx.executable cho các tệp chạy. |
arguments
|
sequence ;
default = []Đối số dòng lệnh của thao tác. Phải là danh sách các chuỗi hoặc đối tượng actions.args() .
|
mnemonic
|
string; or None ;
mặc định = Không cóNội dung mô tả hành động bằng một từ, ví dụ: CppCompile hoặc GoLink. |
progress_message
|
string; or None ;
mặc định = Không cóThông báo tiến trình hiển thị cho người dùng trong quá trình tạo bản dựng, ví dụ: "Biên dịch foo.cc để tạo foo.o". Thông báo có thể chứa các mẫu %{label} , %{input} hoặc %{output} , được thay thế bằng chuỗi nhãn, đầu vào đầu tiên hoặc đường dẫn đầu ra tương ứng. Ưu tiên sử dụng mẫu thay vì chuỗi tĩnh, vì mẫu hiệu quả hơn.
|
use_default_shell_env
|
mặc định = False Liệu thao tác có nên sử dụng môi trường shell tích hợp hay không. |
env
|
dict; or None ;
mặc định = KhôngĐặt từ điển của các biến môi trường. |
execution_requirements
|
dict; or None ;
default = NoneThông tin để lên lịch hành động. Xem thẻ để biết các khoá hữu ích. |
input_manifests
|
sequence; or None ;
mặc định = Không(Thử nghiệm) đặt siêu dữ liệu tệp chạy đầu vào; các siêu dữ liệu này thường được tạo bằng resolve_command. |
exec_group
|
string; or None ;
default = NoneChạy hành động trên nền tảng thực thi của nhóm thực thi đã cho. Nếu không có, hãy sử dụng nền tảng thực thi mặc định của mục tiêu. |
shadowed_action
|
Action ;
mặc định = Không cóChạy hành động bằng cách sử dụng môi trường và dữ liệu đầu vào của hành động được che được thêm vào danh sách dữ liệu đầu vào và môi trường của hành động. Môi trường hành động có thể ghi đè bất kỳ biến môi trường nào của hành động được che khuất. Nếu không có, chỉ sử dụng dữ liệu đầu vào của thao tác và môi trường đã cho. |
resource_set
|
callable; or None ;
mặc định = Không cóHàm gọi lại trả về một từ điển tập hợp tài nguyên, dùng để ước tính mức sử dụng tài nguyên tại thời điểm thực thi nếu hành động này được chạy cục bộ. Hàm này chấp nhận 2 đối số vị trí: một chuỗi đại diện cho tên hệ điều hành (ví dụ: "osx") và một số nguyên biểu thị số lượng dữ liệu đầu vào cho thao tác. Từ điển được trả về có thể chứa các mục sau, mỗi mục có thể là float hoặc int:
Nếu tham số này được đặt thành Lệnh gọi lại phải ở cấp cao nhất (không được phép sử dụng hàm lambda và hàm lồng nhau). |
toolchain
|
Label; or string; or None ; giá trị mặc định = Không cóLoại chuỗi công cụ của tệp thực thi hoặc công cụ được dùng trong thao tác này. Bạn phải đặt tham số để hành động thực thi trên đúng nền tảng thực thi. Hiện tại, bạn không cần thiết lập giá trị này, nhưng bạn nên thiết lập giá trị này khi sử dụng chuỗi công cụ vì giá trị này sẽ bắt buộc trong các bản phát hành Bazel trong tương lai. Xin lưu ý rằng quy tắc tạo hành động này cần xác định chuỗi công cụ này bên trong hàm "rule()". Khi cả hai tham số "toolchain" và "exec_group" được đặt, "exec_group" sẽ được sử dụng. Sẽ xảy ra lỗi trong trường hợp "exec_group" không chỉ định giống nhau. |
run_shell
None actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=None)Tạo một hành động chạy lệnh shell. Xem ví dụ về cách sử dụng.
Thông số
Thông số | Mô tả |
---|---|
outputs
|
sequence of Files ;
bắt buộcDanh sách tệp đầu ra của thao tác. |
inputs
|
sequence of Files; or depset ;
mặc định = []Danh sách hoặc phần tách các tệp đầu vào của thao tác. |
tools
|
sequence of Files; or depset ;
mặc định = không ràng buộcDanh sách hoặc nhóm phần phụ thuộc của mọi công cụ mà thao tác cần đến. Công cụ là dữ liệu đầu vào có các tệp chạy bổ sung được tự động cung cấp cho thao tác. Danh sách này có thể chứa các thực thể Files hoặc FilesToRunProvider. |
arguments
|
sequence ;
mặc định = []Đối số dòng lệnh của thao tác. Phải là danh sách các chuỗi hoặc đối tượng actions.args() .Bazel truyền các phần tử trong thuộc tính này dưới dạng đối số đến lệnh. Lệnh có thể truy cập vào các đối số này bằng cách sử dụng các tham số thay thế biến shell như Trong trường hợp |
mnemonic
|
string; or None ;
mặc định = Không cóNội dung mô tả hành động bằng một từ, ví dụ: CppCompile hoặc GoLink. |
command
|
string; or sequence of strings ; bắt buộclệnh Shell để thực thi. Đây có thể là một chuỗi (ưu tiên) hoặc một chuỗi các chuỗi (không dùng nữa). Nếu (Không dùng nữa) Nếu Bazel sử dụng cùng một shell để thực thi lệnh như đối với genrules. |
progress_message
|
string; or None ;
mặc định = Không cóThông báo tiến trình hiển thị cho người dùng trong quá trình tạo bản dựng, ví dụ: "Biên dịch foo.cc để tạo foo.o". Thông báo có thể chứa các mẫu %{label} , %{input} hoặc %{output} , được thay thế bằng chuỗi nhãn, đầu vào đầu tiên hoặc đường dẫn đầu ra tương ứng. Ưu tiên sử dụng các mẫu thay vì chuỗi tĩnh, vì kiểu này hiệu quả hơn.
|
use_default_shell_env
|
mặc định = False Liệu thao tác có nên sử dụng môi trường shell tích hợp hay không. |
env
|
dict; or None ;
mặc định = Không cóĐặt từ điển cho các biến môi trường. |
execution_requirements
|
dict; or None ;
default = NoneThông tin để lên lịch cho hành động. Xem thẻ để biết các khoá hữu ích. |
input_manifests
|
sequence; or None ; mặc định = Không(Thử nghiệm) thiết lập siêu dữ liệu chạy tệp đầu vào; các tệp này thường do resolve_command tạo. |
exec_group
|
string; or None ;
default = NoneChạy hành động trên nền tảng thực thi của nhóm thực thi đã cho. Nếu không có, hãy sử dụng nền tảng thực thi mặc định của mục tiêu. |
shadowed_action
|
Action ;
mặc định = Không cóChạy hành động bằng cách sử dụng các dữ liệu đầu vào phát hiện được của hành động bị đổ bóng đã thêm vào danh sách dữ liệu đầu vào của hành động đó. Nếu không có, chỉ sử dụng dữ liệu đầu vào của hành động. |
resource_set
|
callable; or None ;
default = NoneHàm gọi lại để ước tính mức sử dụng tài nguyên nếu chạy cục bộ. Xem ctx.actions.run() .
|
toolchain
|
Label; or string; or None ;
mặc định = Không cóLoại chuỗi công cụ của tệp thực thi hoặc công cụ được dùng trong thao tác này. Bạn phải đặt tham số để hành động thực thi trên đúng nền tảng thực thi. Hiện tại, bạn không cần thiết lập giá trị này, nhưng bạn nên thiết lập giá trị này khi sử dụng chuỗi công cụ vì giá trị này sẽ bắt buộc trong các bản phát hành Bazel trong tương lai. Xin lưu ý rằng quy tắc tạo hành động này cần xác định chuỗi công cụ này bên trong hàm "rule()". Khi bạn đặt cả thông số `toolchain` và `exec_group`, `exec_group` sẽ được sử dụng. Lỗi sẽ xảy ra trong trường hợp `exec_group` không chỉ định cùng một chuỗi công cụ. |
liên kết tượng trưng
None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)Tạo một thao tác ghi đường liên kết tượng trưng trong hệ thống tệp.
Hàm này phải được gọi bằng chính xác một trong số target_file
hoặc target_path
đã chỉ định.
Khi bạn sử dụng target_file
, hãy khai báo output
bằng declare_file()
hoặc declare_directory()
và so khớp loại target_file
. Thao tác này sẽ khiến đường liên kết tượng trưng trỏ đến target_file
. Bazel sẽ vô hiệu hoá kết quả của hành động này bất cứ khi nào mục tiêu của đường liên kết tượng trưng hoặc nội dung của đường liên kết tượng trưng đó thay đổi.
Nếu không, khi bạn sử dụng target_path
, hãy khai báo output
bằng declare_symlink()
). Trong trường hợp này, đường liên kết tượng trưng trỏ đến target_path
. Bazel không bao giờ phân giải đường liên kết tượng trưng và kết quả của thao tác này chỉ mất hiệu lực khi nội dung văn bản của đường liên kết tượng trưng (tức là giá trị của readlink()
) thay đổi. Cụ thể, bạn có thể dùng tính năng này để tạo một đường liên kết tượng trưng treo lơ lửng.
Thông số
Thông số | Mô tả |
---|---|
output
|
bắt buộc Kết quả của hành động này. |
target_file
|
File; or None ;
mặc định = Không cóTệp mà đường liên kết tượng trưng đầu ra sẽ trỏ đến. |
target_path
|
string; or None ;
mặc định = Không(Thử nghiệm) Đường dẫn chính xác mà đường liên kết tượng trưng đầu ra sẽ trỏ đến. Không áp dụng quy trình chuẩn hoá hoặc xử lý nào khác. Bạn cần thiết lập --experimental_allow_unresolved_symlinks để sử dụng tính năng này.
|
is_executable
|
mặc định = False Chỉ có thể sử dụng với target_file , không phải target_path . Nếu đúng, khi thực thi thao tác, đường dẫn của target_file sẽ được kiểm tra để xác nhận rằng đường dẫn đó có thể thực thi được và báo lỗi nếu không. Việc đặt is_executable thành False không có nghĩa là mục tiêu không thực thi được, mà chỉ là không có xác minh nào được thực hiện.Tính năng này không phù hợp với |
progress_message
|
string; or None ;
mặc định = KhôngThông báo tiến trình hiển thị cho người dùng trong quá trình tạo bản dựng. |
template_dict
TemplateDict actions.template_dict()Thử nghiệm. API này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào tính năng này. Bạn có thể bật tính năng này trên cơ sở thử nghiệm bằng cách đặt
--+experimental_lazy_template_expansion
Thử nghiệm: Trả về đối tượng TemplateDict để mở rộng mẫu hiệu quả về bộ nhớ.
write
None actions.write(output, content, is_executable=False)Tạo một thao tác ghi tệp. Khi được thực thi, thao tác này sẽ ghi nội dung đã cho vào một tệp. Phương thức này dùng để tạo tệp bằng thông tin có sẵn trong giai đoạn phân tích. Nếu tệp có kích thước lớn và chứa nhiều nội dung tĩnh, hãy cân nhắc sử dụng
expand_template
.
Thông số
Thông số | Mô tả |
---|---|
output
|
bắt buộc Tệp đầu ra. |
content
|
string; or Args ;
bắt buộcnội dung của tệp. Có thể là một chuỗi hoặc đối tượng actions.args() .
|
is_executable
|
mặc định = False Liệu tệp đầu ra có thể thực thi được hay không. |