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("."))
.settings(
scalaVersion := "3.3.4",
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.3.4"
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
.
Contributors to this page:
Contents
- Introduction
- Testing with MUnit
- How to write tests?
- How to run tests?
- How to run a single test?
- How to test exceptions?
- How to write asynchronous tests?
- How to manage the resources of a test?
- What else can MUnit do?
- Working with files and processes with OS-Lib
- How to read a directory?
- How to read a file?
- How to write a file?
- How to run a process?
- What else can OS-Lib do?
- Handling JSON with uPickle
- How to access values inside JSON?
- How to modify JSON?
- How to deserialize JSON to an object?
- How to serialize an object to JSON?
- How to read and write JSON files?
- What else can uPickle do?
- Sending HTTP requests with sttp
- How to send a request?
- How to construct URIs and query parameters?
- How to send a request with a body?
- How to send and receive JSON?
- How to upload a file over HTTP?
- What else can sttp do?
- Building web servers with Cask
- How to serve a static file?
- How to serve a dynamic page?
- How to handle query parameters?
- How to handle user input?
- How to use websockets?
- How to use cookies and decorators?