From e2538e64f8faf2b598c887f364b325739e96e812 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Sat, 7 Sep 2024 19:06:53 +0800 Subject: [PATCH] . --- Readme.adoc | 5 +++++ os/src-jvm/package.scala | 16 +++++++++++++--- os/src-native/package.scala | 16 +++++++++++++--- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/Readme.adoc b/Readme.adoc index 3898dfcd..8ca24987 100644 --- a/Readme.adoc +++ b/Readme.adoc @@ -2247,6 +2247,11 @@ string, int or set representations of the `os.PermSet` via: == Changelog +[#main] +=== main + +* Make `os.pwd` modifiable via the `os.dynamicPwd0` + [#0-10-6] === 0.10.6 diff --git a/os/src-jvm/package.scala b/os/src-jvm/package.scala index d11a54d6..417aa673 100644 --- a/os/src-jvm/package.scala +++ b/os/src-jvm/package.scala @@ -39,9 +39,19 @@ package object os { /** * The current working directory for this process. */ - def pwd: Path = dynamicPwd.value - val dynamicPwd: DynamicVariable[Path] = - new DynamicVariable(os.Path(java.nio.file.Paths.get(".").toAbsolutePath)) + def pwd: Path = dynamicPwdFunction.value() + + private val pwd0 = os.Path(java.nio.file.Paths.get(".").toAbsolutePath) + + /** + * Used to override `pwd` within a certain scope with a generated value + */ + val dynamicPwdFunction: DynamicVariable[() => Path] = new DynamicVariable(() => dynamicPwd.value) + + /** + * Used to override `pwd` within a certain scope with a fixed value + */ + val dynamicPwd: DynamicVariable[Path] = new DynamicVariable(pwd0) val up: RelPath = RelPath.up diff --git a/os/src-native/package.scala b/os/src-native/package.scala index e71aac1a..0dbef162 100644 --- a/os/src-native/package.scala +++ b/os/src-native/package.scala @@ -32,9 +32,19 @@ package object os { /** * The current working directory for this process. */ - def pwd: Path = dynamicPwd.value - val dynamicPwd: DynamicVariable[Path] = - new DynamicVariable(os.Path(java.nio.file.Paths.get(".").toAbsolutePath)) + def pwd: Path = dynamicPwdFunction.value() + + private val pwd0 = os.Path(java.nio.file.Paths.get(".").toAbsolutePath) + + /** + * Used to override `pwd` within a certain scope with a generated value + */ + val dynamicPwdFunction: DynamicVariable[() => Path] = new DynamicVariable(() => dynamicPwd.value) + + /** + * Used to override `pwd` within a certain scope with a fixed value + */ + val dynamicPwd: DynamicVariable[Path] = new DynamicVariable(pwd0) val up: RelPath = RelPath.up