【发布时间】:2019-08-05 22:53:52
【问题描述】:
我需要将 python 文件的内容打印到 YAML 文件中,而不会弄乱 YAML 文件的缩进。 YAML 文件中执行此操作的部分是对将传递到 Bash 脚本中的命令的描述,因此我们需要使用 Bash 脚本语法来完成此操作。例如,以下硬编码代码 WORKS。注意“cat”行是如何用适当的缩进输出 script.py 的内容的:
诀窍是在尝试从另一个文件读取 Python 时将其转换为该格式。事实上,为了创建该屏幕截图,我必须在生成文件后实际进入该文件并添加一堆空格以使其看起来正确。添加空格后,文件按预期工作。这是我手动编辑之前错误输出的样子:
有趣的是,python 的第一行(绿色箭头)从正确的行开始。但是其余的行都在左边距并且不正确(红色箭头)。
这是我用来将我的代码(在 script.py 中)放入构建规范的代码:
注意:${Script} 是对我的 script.py 文件的引用。此变量正在文件中的其他位置设置。
version: 0.2
phases:
install:
commands:
- apt-get update -y
build:
commands:
- git config --global credential.helper '!aws codecommit credential-helper $@'
- git config --global credential.UseHttpPath true
- |
cat >> scrypt.py <<EOL
${Script}
EOL
【问题讨论】:
-
我是否正确描述了您正在使用 script.yml,将 ${Script} 替换为 script.py 内容,然后尝试运行该 python 文本作为构建步骤的情况?
-
还有其他方法可以传递该 script.py 吗?比如从某个地方下载它并运行?
-
是的,这就是我想要做的。还有其他方法,但我专门尝试使用指定的 NO_SOURCE 选项来执行此操作,因此我不需要从其他地方下载源代码,例如 S3 存储桶。
-
我重新修改了这个问题,以减少很多不必要的噪音并专注于这个问题。
-
看来问题出在插入变量的工具上。它逐字插入,而您希望缩进。您可以尝试在工具插入之前重新格式化 script.py(自己为内容添加足够的缩进)。
标签: bash yaml amazon-cloudformation