Cómo pasar una variable de Bash a una consulta “set” de Bazel.
Tengo el siguiente conjunto de archivos que quiero pasar a Bazel utilizando
res = $ (git diff --name-only ${COMMIT_HASH} ^! | grep '^ src /' | uniq | cut -d / -f2-)
echo $ res
servicios / service-a / README.md
servicios / service-a / main.go
...
bazel query --keepgoing 'set ($ {res})'
Pero simplemente intentarlo resulta en:
bazel query --keepgoing 'set (${res})'
ERROR: Omitiendo '$': no hay tal destino '//:$': el destino '$' no está declarado en el paquete '' definido por / Users / aoutadi / code / KeepTruckin / kt / src /BUILD.bazel
ERROR: Omitiendo '{res': no hay tal destino '//:{res': el destino '{res' no está declarado en el paquete '' definido por / Users / aoutadi / code / KeepTruckin / kt / src / BUILD.bazel
ERROR: Omitiendo '}': no hay tal destino '//:}': el destino '}' no está declarado en el paquete '' definido por / Users / aoutadi / code / KeepTruckin / kt / src /BUILD.bazel
ADVERTENCIA: se especificó --keep_going, ignorando errores. Los resultados pueden ser inexactos.
INFO: resultados vacíos
Sé que podría ser posible incrustar mi comando en la consulta de Bazel usando
bash
bazel query –keep_going ‘set ($(git diff –name-only ${COMMIT_HASH}^! | grep ‘^src/’ | uniq | cut -d/ -f2-))’
pero me gustaría evitar esto por claridad y en su lugar usar $ res.
¿Es esto posible?
davy.ai
¿Cómo hacerlo?
Sí, esto es posible. Puede usar el comando
eval
para evaluar el contenido de$res
antes de pasarlo abazel query
. El comando se vería así:bash
eval bazel query --keep_going 'set($res)'