问题标签 [starlark]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
165 浏览

windows - bazel midl 规则生成的 c++ 头文件和 winmd 文件位于不同的文件夹中

当我使用 bazel 从 midl 文件生成 c++ 头源代码和 winmd 文件时,我发现 MyType.winmd 文件位于输出文件夹中,而 MyType.h 与源代码 MyType.idl 位于同一目录中。我想要的是我生成的头文件与 MyType.winmd 文件位于同一文件夹中。

我的类型.idl:

建造:

cmd.bzl:

midl.bat:

运行命令:

在此处生成 MyType.h:

生成的 MyType.winmd 在这里:

有什么我想念的吗?

0 投票
3 回答
242 浏览

influxdb - 如何在电报中舍入输出值?

我正在寻找一种方法来舍入telergaf 输出的值。温度、usage_idle、memory_usage 等等……到小数点后 14 位是非常巨大的。这对我来说太多了。它可以使我的一些测量值加倍。

我还没有找到一种容易做到的方法。

现在我在输出中有这个:

我想要这样:

我想您必须使用处理器,但是您如何以简单的方式做到这一点?starlark 只是为了取整一个值?

0 投票
1 回答
168 浏览

bazel - 链 expand_template 并在一个 bazel 规则中运行

我正在尝试编写一个自定义规则,我首先从模板生成一个文件,然后将此文件传递给脚本以生成一些作为我的规则输出的 c++ 标头。

generator是一个 python 库,给定提供给的输入文件srcs和参数文件生成头文件。

我面临的问题是,似乎在调用expand_template之前实际上并没有运行run,因此找不到生成的文件。我在这里做错了什么?我误解了事情的运作方式吗?

0 投票
1 回答
535 浏览

telegraf - Telegraf Starlark 处理器 - 如何将日期时间转换为 Unix 纪元格式

我按照教程https://www.influxdata.com/blog/json-to-influxdb-with-telegraf-and-starlark/开始使用 Telegraf 和 Starlark。

我以 JSON 格式获取数据,但遵循教程并将输入视为字符串,然后使用 Starlark 进行解析。

我的问题是,我需要使用作为 JSON 输入一部分的日期时间戳。我正在使用下面的代码,如果我将它设置为一些硬编码的 Unix 纪元时间,它就可以工作

但是如何将我在 DD-Mon-YYYY H:M:S 格式(例如 12-Mar-2021 15:30:00 )中的日期转换为 Starlark 脚本中的 Unix 纪元格式。由于无法在 Starlark 脚本中导入任何 python 库,因此不确定如何完成此转换。

0 投票
1 回答
281 浏览

visual-studio-code - Visual Studio Code 中 Bazel 的 Starlark 调试器

我是 Visual Studio Code 的新手。我按照本教程在 Visual Studio 代码中设置了 Bazel 构建配置(我使用的是 Windows 10)。

我创建了一个简单的 task.json

和launch.json

通过这种方式运行-> 开始调试,我能够在我的项目的 .cpp 代码中调试并停止到断点。

但是,我在这里读到,也可以使用 Starlark 调试器来调试 .bzl 文件和 Starlark 规则。根据同一页面中的说明,我应该能够“通过右键单击 Bazel 构建目标视图中的构建目标并选择“使用 Starlark 调试器构建目标”来执行此操作。不幸的是,我在我的 Bazel Build Targets 视图窗口中看不到这个选项: 在此处输入图像描述

Bazel 构建目标视图为空。如果我右键单击我看不到“使用 Starlark 调试器构建目标”选项。根据此链接,我应该能够在 Bazel Build Targets 视图下方看到我的目标。我想我在项目的配置中遗漏了一些东西,或者可能是一些 Starlack 扩展?谢谢你的帮助。

0 投票
0 回答
252 浏览

bazel - Bazel 在 Skylark 中获得 bazel-out/workspace 的完整路径

我想在这个 SO 线程之后将 checkstyle 与 bazel 集成:从 Bazel 中调用 Checkstyle 的最佳方法是什么?
只要我在构建类路径时提供完整的硬编码路径,它就可以完美地工作

checkstyle.bzl

下载的 jarbazel-out与我的 .jar 位于同一级别的目录中WORKSPACE

如何获得完整路径,bazel-out以便将其附加到file.path

另外,这是我与 bazel 合作的第三天,如果有更好的方法可以做到这一点,请提出建议。

0 投票
1 回答
187 浏览

bazel - 如何在 Skylark Ba​​zel 中通过测试参数?

我正在编写一些 bazel 测试,我需要能够提供某些文件的完整路径。

bazel test //webservice:checkstyle-test --test_arg="path_to_some_file"

我的问题是如何解析 bazel 测试中的输入参数?有什么类似的ctx.arg吗?

建造

checkstyle.bzl

0 投票
0 回答
110 浏览

docker - 如何创建在运行时也将首先运行依赖目标的规则

我正在尝试创建 Bazel 规则,该规则将执行 docker-compose 命令并从 docker-compose.yaml 文件中启动所有 docker 图像。我能够做到这一点,但我的下一步是让我的规则依赖于container_image我的构建文件中的另一个目标。

我想先运行这个container_image目标,然后运行我自己的规则。我需要运行container_image规则,因为这是规则将构建的图像实际加载到 docker 的唯一方法。我需要这样做,因为我打算将这个新建图像的名称注入到我的 docker-compose.yaml 文件中。

我的规则代码是:

问题是我在运行container_image任务时创建的文件test_image。我从巴泽尔那里得到错误Loaded image ID: sha256:c15a1b44d84dc5d3f1ba5be852e6a5dfbdc11e24ff42615739e348bdb0522813 Tagging c15a1b44d84dc5d3f1ba5be852e6a5dfbdc11e24ff42615739e348bdb0522813 as bazel/images/test:image_test ERROR: /monogit/test/BUILD:18:22: output '/test/integration.up.out' was not created ERROR: /monogit/test/BUILD:18:22: Action test/integration.up.out failed: not all outputs were created or valid

如果我从运行文件中删除文件以执行 docker-compose,那么我的文件test_image不会加载到 docker。在第一个示例中,它被加载但 docker-compose 然后失败。

对我来说很明显 container_image 规则不会创建输出文件。在那种情况下,我怎样才能让 Bazel 运行,而不仅仅是构建、container_image可执行,然后是我的可执行文件?

0 投票
1 回答
52 浏览

computation-theory - Starlark转身完成了吗?

Starlark配置语言不支持无限循环或递归或用户定义的数据类型,但它支持函数。文档表明这意味着该语言不是图灵完备的。我忘记了很多关于语言和自动机理论的计算机科学课程。

问题:

  • 缺少用户定义的数据类型、无限循环和递归是否足以使语言成为图灵不完整的。
  • 有没有证据表明 StarLark 不是图灵完备的?
  • 如果一种语言未完成,这是否意味着程序最终会停止?
0 投票
0 回答
8 浏览

starlark - 为什么 starlark 允许可变的可选参数在多个函数调用中可见?

根据starlark规范

如果函数参数的默认值是可变表达式,则在一次调用期间对该值的修改可能会被后续调用观察到。使用列表或字典作为默认值时要注意这一点。如果函数被冻结,其参数的默认值也会被冻结。

他们的规范提供了以下示例

我发现示例中解释的行为 f(2) # [1, 2], not [2]!反直觉,我想知道这种行为在 starklark 中的意义何在?似乎这种行为使代码更难阅读,那么这种行为有什么好处?