如何使用来自 Ammonite 脚本的资源?

Posted

技术标签:

【中文标题】如何使用来自 Ammonite 脚本的资源?【英文标题】:How to use resources from an Ammonite script? 【发布时间】:2020-09-16 23:50:18 【问题描述】:

我有一些菊石脚本,它们存储在一个文件夹中。该文件夹位于我的 PATH 上,因此无论身在何处,我都可以轻松调用这些脚本。

我可以在同一个文件夹中导入其他菊石脚本:

$import $file.<name_of_the_other_script>

但是我想“导入”一个简单的文本文件,将其内容保存为字符串并稍后使用。

我能做到:

val myString = os.read(os.root/"absolute"/"path"/"to"/"the"/"file")

但出于显而易见的原因,我不想使用绝对路径。相对路径不起作用,因为它是相对于我从中调用脚本的文件夹,而不是相对于脚本所在的位置。

有什么办法可以做到吗?

编辑:

#/bin/bash

echo $BASH_SOURCE

如果上述 bash 脚本中的功能可以在 Ammonite 中复制,问题就可以轻松解决。

【问题讨论】:

【参考方案1】:

我认为您可以像这样使用ammonite.ops 阅读资源:

val resourcePath = resource/'test/'ammonite/'ops/'folder/"file.txt"
read(resourcePath).length        ==> 18
read.bytes(resourcePath).length  ==> 18
read.lines(resourcePath).length  ==> 1

请参阅 Ammonite 文档中的 Reading Resources。

【讨论】:

问题是资源根文件夹不是原脚本文件所在的文件夹。所以这样我就无法访问与原始脚本位于同一文件夹中的文件。

以上是关于如何使用来自 Ammonite 脚本的资源?的主要内容,如果未能解决你的问题,请参考以下文章

Ammonite: Script ... 不接受参数(在 OS X 下)

在 Ammonite (scala) 中重新导入脚本

如何使来自同一资源的多个可绘制对象唯一?

如何使跨域资源共享 (CORS) 发布请求正常工作

有没有办法在 Windows 8.1 中安装 Scala Ammonite-REPL

如何在 maven pom.xml 中更改 shell 脚本输出以使用