You can require the entire toolkit in a single line:
//> using toolkit latest
Alternatively, you can require just a specific version of OS-Lib:
//> using dep com.lihaoyi::os-lib:0.9.1
In your build.sbt
, you can add a dependency on the toolkit:
lazy val example = project.in(file("example"))
.settings(
scalaVersion := "3.2.2",
libraryDependencies += "org.scala-lang" %% "toolkit" % "0.1.7"
)
Alternatively, you can require just a specific version of OS-Lib:
libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.9.1"
In your build.sc
file, you can add a dependency on the Toolkit:
object example extends ScalaModule {
def scalaVersion = "3.2.2"
def ivyDeps =
Agg(
ivy"org.scala-lang::toolkit:0.1.7"
)
}
Alternatively, you can require just a specific version of OS-Lib:
ivy"com.lihaoyi::os-lib:0.9.1"
Paths
A fundamental data type in OS-Lib is os.Path
, representing a path
on the filesystem. An os.Path
is always an absolute path.
OS-Lib also provides os.RelPath
(relative paths) and os.SubPath
(a
relative path which cannot ascend to parent directories).
Typical starting points for making paths are os.pwd
(the
current working directory), os.home
(the current user’s home
directory), os.root
(the root of the filesystem), or
os.temp.dir()
(a new temporary directory).
Paths have a /
method for adding path segments. For example:
val etc: os.Path = os.root / "etc"
Reading a directory
os.list
returns the contents of a directory:
val entries: Seq[os.Path] = os.list(os.root / "etc")
Or if we only want subdirectories:
val dirs: Seq[os.Path] = os.list(os.root / "etc").filter(os.isDir)
To recursively descend an entire subtree, change os.list
to
os.walk
. To process results on the fly rather than reading them all
into memory first, substitute os.walk.stream
.