这个问题出现在尝试在WSL2上运行一个Clojure项目,该项目最初是在Windoze上构建的。
原始的:local/root路径以"C:/..."开始,但在WSL2(运行Ubuntu 22)上它们需要转换为"/mnt/c/..."才能运行。
手动更改它们可以使其工作,但这很麻烦。甚至不想提到源代码控制的烦恼。
想象自动转换规则感觉令人讨厌,如果我们可以简单地指定操作系统特定的值会更好。也许像这样的东西:
{some.ns/some-lib {:local/root
{:local-path/windows "C:/..."
:local-path/linux "/mnt/c/..."
:local-path/macos "/some/other/dev/path"}}}
在运行时,应基于JVM运行的操作系统选择正确的本地路径值。
当然,这也可能是在MacOS运行Parallels上出现的问题,其中文件系统集成也很紧密,但来宾操作系统可以在主机上具有不同值的相同路径。考虑到Linux发行版、Windows版本和MacOS版本的 Cambrian爆炸,事先知道这些值可能并不实用。开发者将负责根据具体开发设置设置这些值。因此,我认为,可选地提供映射以包含某些高级操作系统选项,以代替字符串,就足够了。
对我来说显然,这些值始终以开发者为中心,并且可能受雇主的DevOps策略的影响。
(是的,这是我实现偏差的一部分,但我将乐意支持任何处理此问题的通用方式。)