a874f88cee
- rblf_cli and rblf_env - -c and -f This is in preparation for making rbcrun able to function as a more general purpose starlark interpreter. Bug: 280685526 Test: go test, ./out/rbc ./build/make/tests/run.rbc, ./build/bazel/ci/rbc_dashboard.py --quick aosp_arm64 Change-Id: Ifff9ce7b4369422f39c5003bb85a168c78bde7cf |
||
---|---|---|
.. | ||
rbcrun | ||
testdata | ||
Android.bp | ||
go.mod | ||
go.sum | ||
host.go | ||
host_test.go | ||
README.md |
Roboleaf configuration files interpreter
Reads and executes Roboleaf product configuration files.
Usage
rbcrun
options VAR=value... [ file ]
A Roboleaf configuration file is a Starlark script. Usually it is read from file. The option -c
allows to provide a
script directly on the command line. The option -f
is there to allow the name of a file script to contain (=
).
(i.e., my=file.rbc
sets my
to file.rbc
, -f my=file.rbc
runs the script from my=file.rbc
).
Options
-d
dir
Root directory for load("//path",...)
-c
text
Read script from text
--perf
file
Gather performance statistics and save it to file. Use
go tool prof -top
file
to show top CPU users
-f
file
File to run.
Extensions
The runner allows Starlark scripts to use the following features that Bazel's Starlark interpreter does not support:
Load statement URI
Starlark does not define the format of the load statement's first argument.
The Roboleaf configuration interpreter supports the format that Bazel uses
(":file"
or "//path:file"
). In addition, it allows the URI to end with
"|symbol"
which defines a single variable symbol
with None
value if a
module does not exist. Thus,
load(":mymodule.rbc|init", mymodule_init="init")
will load the module mymodule.rbc
and export a symbol init
in it as
mymodule_init
if mymodule.rbc
exists. If mymodule.rbc
is missing,
mymodule_init
will be set to None
Predefined Symbols
rblf_env
A struct
containing environment variables. E.g., rblf_env.USER
is the username when running on Unix.
rblf_cli
A struct
containing the variable set by the interpreter's command line. That is, running
rbcrun FOO=bar myfile.rbc
will have the value of rblf_cli.FOO
be "bar"
Predefined Functions
rblf_file_exists(file)
Returns True
if file exists
rblf_find_files(top, file-pattern, only_files = 0)
Returns all the paths under top whose basename matches pattern (which is a shell's glob pattern). If only_files is not zero, only the paths to the regular files are returned. The returned paths are relative to top.
rblf_wildcard(glob, top = None)
Expands glob. If top is supplied, expands "top/glob", then removes "top/" prefix from the matching file names.
rblf_regex(pattern, text)
Returns True if text matches pattern.
rblf_shell(command)
Runs sh -c "
command"
, reads its output, converts all newlines into spaces, chops trailing newline returns this
string. This is equivalent to Make's
shell
builtin function. This function will be eventually removed.
rblf_log(arg,..., sep=' ')
Same as print
builtin but writes to stderr.