es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Alimentar la salida de Bazel en otra regla de Bazel.

Soy un traductor de documentos de TI y voy a traducir el siguiente texto al español. No traduzcas el código y la salida en markdown.

Soy bastante nuevo en Bazel y tengo dificultades para encontrar una solución para esto:

Imaginemos que tengo esta regla nodejs_binary:

nodejs_binary(
    name = "js_scirpt",
    data = [
        "@npm//some_lib",
    ],
    entry_point = ":some_js_script.js",
)

Ahora necesito que la salida de :js_script se alimente a una regla go_test que hace otra cosa. El orden de los pasos es importante: la regla de nodejs debe terminar primero y luego go_test usa la salida.

Creo que esto debería ser posible escribiendo un archivo json desde nodejs_binary en el disco y leyéndolo desde some_js_script.js, aunque no puedo controlar el orden de las ejecuciones y no sé cómo pasarlo a la regla go_test. ¿Alguna idea de cómo es esto posible (o tal vez hay un enfoque mejor)?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una posibilidad es generar el resultado del nodejs_binary como un archivo JSON utilizando una regla genrule. Luego, en la regla go_test, puedes usar el atributo data para hacer referencia al archivo JSON generado como una entrada para la prueba. Aquí está un ejemplo:

    genrule(
        name = "generate_output",
        outs = ["output.json"],
        cmd = "$(location //:js_script) > $@",
        visibility = ["//visibility:private"],
    )
    
    go_test(
        name = "test_output",
        data = [":generate_output"],
        # otros atributos...
    )
    

    Aquí, la regla generate_output ejecuta el js_script y genera el resultado en un archivo JSON llamado output.json. Luego, la regla test_output utiliza el atributo data para hacer referencia al archivo output.json como una entrada para la prueba.

    Ten en cuenta que es posible que necesites ajustar el comando en la regla generate_output para generar adecuadamente el archivo JSON, dependiendo de lo que realmente haga el js_script.

Comments are closed.