os

package os

Type members

Classlikes

object /

Extractor to let you easily pattern match on os.Paths. Lets you do

Extractor to let you easily pattern match on os.Paths. Lets you do

 @ val base/segment/filename = pwd
 base: Path = Path(Vector("Users", "haoyi", "Dropbox (Personal)"))
 segment: String = "Workspace"
 filename: String = "Ammonite"

To break apart a path and extract various pieces of it.

trait BasePath

A path which is either an absolute Path, a relative RelPath, or a ResourcePath with shared APIs and implementations.

A path which is either an absolute Path, a relative RelPath, or a ResourcePath with shared APIs and implementations.

Most of the filesystem-independent path-manipulation logic that lets you splice paths together or navigate in and out of paths lives in this interface

Companion
object
object BasePath
Companion
class
trait BasePathImpl extends BasePath
case class CommandResult(exitCode: Int, chunks: Seq[Either[Bytes, Bytes]])

Contains the accumulated output for the invocation of a subprocess command.

Contains the accumulated output for the invocation of a subprocess command.

Apart from the exit code, the primary data-structure is a sequence of byte chunks, tagged with Left for stdout and Right for stderr. This is interleaved roughly in the order it was emitted by the subprocess, and reflects what a user would have see if the subprocess was run manually.

Derived from that, is the aggregate out and err StreamValues, wrapping stdout/stderr respectively, and providing convenient access to the aggregate output of each stream, as bytes or strings or lines.

sealed trait FilePath extends BasePath

Represents a value that is either an absolute Path or a relative RelPath, and can be constructed from a java.nio.file.Path or java.io.File

Represents a value that is either an absolute Path or a relative RelPath, and can be constructed from a java.nio.file.Path or java.io.File

Companion
object
object FilePath
Companion
class
sealed trait FileType

Simple enum with the possible filesystem objects a path can resolve to

Simple enum with the possible filesystem objects a path can resolve to

Companion
object
object FileType
Companion
class
Companion
class
class GlobInterpolator(sc: StringContext)

Lets you pattern match strings with interpolated glob-variables

Lets you pattern match strings with interpolated glob-variables

Companion
object
object Inherit extends ProcessInput with ProcessOutput

Inherit the input/output stream from the current process

Inherit the input/output stream from the current process

object Internals
object Path
Companion
class
class Path extends FilePath with ReadablePath with BasePathImpl

An absolute path on the filesystem. Note that the path is normalized and cannot contain any empty "", "." or ".." segments

An absolute path on the filesystem. Note that the path is normalized and cannot contain any empty "", "." or ".." segments

Companion
object
case class PathAppendRedirect(p: Path) extends ProcessOutput
trait PathChunk
Companion
object
object PathChunk
Companion
class
sealed trait PathConvertible[T]
Companion
object
Companion
class
object PathError
case class PathRedirect(p: Path) extends ProcessInput with ProcessOutput
object PermSet
Companion
class
case class PermSet(value: Int)

A set of permissions; can be converted easily to the rw-rwx-r-x form via toString, or to a set of PosixFilePermissions via toSet and the other way via PermSet.fromString/PermSet.fromSet

A set of permissions; can be converted easily to the rw-rwx-r-x form via toString, or to a set of PosixFilePermissions via toSet and the other way via PermSet.fromString/PermSet.fromSet

Companion
object
object Pipe extends ProcessInput with ProcessOutput

Pipe the input/output stream to the current process to be used via java.lang.Process#{getInputStream,getOutputStream,getErrorStream}

Pipe the input/output stream to the current process to be used via java.lang.Process#{getInputStream,getOutputStream,getErrorStream}

case class PosixStatInfo(owner: UserPrincipal, permissions: PermSet)
Companion
object
Companion
class

Represents the configuration of a SubProcess's input stream. Can either be os.Inherit, os.Pipe, os.Path or a os.Source

Represents the configuration of a SubProcess's input stream. Can either be os.Inherit, os.Pipe, os.Path or a os.Source

Companion
object
object ProcessInput
Companion
class

Represents the configuration of a SubProcess's output or error stream. Can either be os.Inherit, os.Pipe, os.Path or a os.ProcessOutput

Represents the configuration of a SubProcess's output or error stream. Can either be os.Inherit, os.Pipe, os.Path or a os.ProcessOutput

Companion
object
Companion
class
class RelPath extends FilePath with BasePathImpl with SegmentedPath

A relative path on the filesystem. Note that the path is normalized and cannot contain any empty or ".". Parent ".." segments can only occur at the left-end of the path, and are collapsed into a single number ups.

A relative path on the filesystem. Note that the path is normalized and cannot contain any empty or ".". Parent ".." segments can only occur at the left-end of the path, and are collapsed into a single number ups.

Companion
object
object RelPath
Companion
class
case class ResourceNotFoundException(path: ResourcePath) extends Exception

Thrown when you try to read from a resource that doesn't exist.

Thrown when you try to read from a resource that doesn't exist.

object ResourcePath
Companion
class

Represents path to a resource on the java classpath.

Represents path to a resource on the java classpath.

Classloaders are tricky: http://stackoverflow.com/questions/12292926

Companion
object
sealed trait ResourceRoot

Represents a possible root where classpath resources can be loaded from; either a ResourceRoot.ClassLoader or a ResourceRoot.Class. Resources loaded from classloaders are always loaded via their absolute path, while resources loaded via classes are always loaded relatively.

Represents a possible root where classpath resources can be loaded from; either a ResourceRoot.ClassLoader or a ResourceRoot.Class. Resources loaded from classloaders are always loaded via their absolute path, while resources loaded via classes are always loaded relatively.

Companion
object
object ResourceRoot
Companion
class
trait SeekableSource extends Source

A source which is guaranteeds to provide a SeekableByteChannel

A source which is guaranteeds to provide a SeekableByteChannel

Companion
object
Companion
class
trait SegmentedPath extends BasePath
case class Shellable(value: Seq[String])

An implicit wrapper defining the things that can be "interpolated" directly into a subprocess call.

An implicit wrapper defining the things that can be "interpolated" directly into a subprocess call.

Companion
object
object Shellable
Companion
class
trait Source extends Writable

A source of bytes; must provide either an InputStream or a SeekableByteChannel to read from. Can be constructed implicitly from strings, byte arrays, inputstreams, channels or file paths

A source of bytes; must provide either an InputStream or a SeekableByteChannel to read from. Can be constructed implicitly from strings, byte arrays, inputstreams, channels or file paths

Companion
object
object Source extends WritableLowPri
Companion
class
case class StatInfo(size: Long, mtime: FileTime, ctime: FileTime, atime: FileTime, fileType: FileType)

The result from doing an system stat on a particular path.

The result from doing an system stat on a particular path.

Created via stat! filePath.

If you want more information, use stat.full

Companion
object
object StatInfo
Companion
class
class SubPath extends FilePath with BasePathImpl with SegmentedPath

A relative path on the filesystem, without any .. or . segments

A relative path on the filesystem, without any .. or . segments

Companion
object
object SubPath
Companion
class
class SubProcess(val wrapped: Process, val inputPumperThread: Option[Thread], val outputPumperThread: Option[Thread], val errorPumperThread: Option[Thread]) extends AutoCloseable

Represents a spawn subprocess that has started and may or may not have completed.

Represents a spawn subprocess that has started and may or may not have completed.

Companion
object
object SubProcess
Companion
class
case class SubprocessException(result: CommandResult) extends Exception

Thrown when a shellout command results in a non-zero exit code.

Thrown when a shellout command results in a non-zero exit code.

Doesn't contain any additional information apart from the CommandResult that is normally returned, but ensures that failures in subprocesses happen loudly and won't get ignored unless intentionally caught

object copy

Copy a file or folder from one path to another. Recursively copies folders with all their contents. Errors out if the destination path already exists, or is within the source path.

Copy a file or folder from one path to another. Recursively copies folders with all their contents. Errors out if the destination path already exists, or is within the source path.

object exists extends Path => Boolean

Checks if a file or folder exists at the given path.

Checks if a file or folder exists at the given path.

object followLink extends Path => Option[Path]

Attempts to any symbolic links in the given path and return the canonical path. Returns None if the path cannot be resolved (i.e. some symbolic link in the given path is broken)

Attempts to any symbolic links in the given path and return the canonical path. Returns None if the path cannot be resolved (i.e. some symbolic link in the given path is broken)

object group extends Path => GroupPrincipal

Get the owning group of the file/folder at the given path

Get the owning group of the file/folder at the given path

object hardlink

Creates a hardlink between two paths

Creates a hardlink between two paths

object isDir extends Path => Boolean

Checks whether the given path is a directory

Checks whether the given path is a directory

Returns false if the path does not exist

object isFile extends Path => Boolean

Checks whether the given path is a regular file

Checks whether the given path is a regular file

Returns false if the path does not exist

object isLink extends Path => Boolean

Checks whether the given path is a symbolic link

Checks whether the given path is a symbolic link

Returns false if the path does not exist

object list extends Path => IndexedSeq[Path]

Returns all the files and folders directly within the given folder. If the given path is not a folder, raises an error. Can be called with list.stream to return an iterator. To list files recursively, use walk

Returns all the files and folders directly within the given folder. If the given path is not a folder, raises an error. Can be called with list.stream to return an iterator. To list files recursively, use walk

For convenience os.list sorts the entries in the folder before returning them. You can disable sorted by passing in the flag sort = false.

object makeDir extends Path => Unit

Create a single directory at the specified path. Optionally takes in a PermSet to specify the filesystem permissions of the created directory.

Create a single directory at the specified path. Optionally takes in a PermSet to specify the filesystem permissions of the created directory.

Errors out if the directory already exists, or if the parent directory of the specified path does not exist. To automatically create enclosing directories and ignore the destination if it already exists, using os.makeDir.all

object move

Moves a file or folder from one path to another. Errors out if the destination path already exists, or is within the source path.

Moves a file or folder from one path to another. Errors out if the destination path already exists, or is within the source path.

object mtime extends Path => Long

Gets the mtime of the given file or directory

Gets the mtime of the given file or directory

object owner extends Path => UserPrincipal

Get the owner of the file/folder at the given path

Get the owner of the file/folder at the given path

object perms extends Path => PermSet

Get the filesystem permissions of the file/folder at the given path

Get the filesystem permissions of the file/folder at the given path

case class proc(command: Shellable*)

Convenience APIs around java.lang.Process and java.lang.ProcessBuilder:

Convenience APIs around java.lang.Process and java.lang.ProcessBuilder:

  • os.proc.call provides a convenient wrapper for "function-like" processes that you invoke with some input, whose entire output you need, but otherwise do not have any intricate back-and-forth communication

  • os.proc.stream provides a lower level API: rather than providing the output all at once, you pass in callbacks it invokes whenever there is a chunk of output received from the spawned process.

  • os.proc(...) provides the lowest level API: an simple Scala API around java.lang.ProcessBuilder, that spawns a normal java.lang.Process for you to deal with. You can then interact with it normally through the standard stdin/stdout/stderr streams, using whatever protocol you want

object read extends ReadablePath => String

Reads the contents of a os.Path or other os.Source as a java.lang.String. Defaults to reading the entire file as UTF-8, but you can also select a different charSet to use, and provide an offset/count to read from if the source supports seeking.

Reads the contents of a os.Path or other os.Source as a java.lang.String. Defaults to reading the entire file as UTF-8, but you can also select a different charSet to use, and provide an offset/count to read from if the source supports seeking.

object readLink extends Path => FilePath

Reads the destination that the given symbolic link is pointed to

Reads the destination that the given symbolic link is pointed to

object remove extends Path => Boolean

Roughly equivalent to bash's rm -rf. Deletes any files or folders in the target path, or does nothing if there aren't any

Roughly equivalent to bash's rm -rf. Deletes any files or folders in the target path, or does nothing if there aren't any

object size extends Path => Long

Gets the size of the given file or folder

Gets the size of the given file or folder

Throws an exception if the file or folder does not exist

When called on folders, returns the size of the folder metadata (i.e. the list of children names), and not the size of the folder's recursive contents. Use os.walk if you want to sum up the total size of a directory tree.

object stat extends Path => StatInfo

Reads in the basic filesystem metadata for the given file. By default follows symbolic links to read the metadata of whatever the link is pointing at; set followLinks = false to disable that and instead read the metadata of the symbolic link itself.

Reads in the basic filesystem metadata for the given file. By default follows symbolic links to read the metadata of whatever the link is pointing at; set followLinks = false to disable that and instead read the metadata of the symbolic link itself.

Throws an exception if the file or folder does not exist

object symlink

Creates a symbolic link between two paths

Creates a symbolic link between two paths

object temp

Alias for java.nio.file.Files.createTempFile and java.io.File.deleteOnExit. Pass in deleteOnExit = false if you want the temp file to stick around.

Alias for java.nio.file.Files.createTempFile and java.io.File.deleteOnExit. Pass in deleteOnExit = false if you want the temp file to stick around.

object truncate

Truncate the given file to the given size. If the file is smaller than the given size, does nothing.

Truncate the given file to the given size. If the file is smaller than the given size, does nothing.

object walk

Recursively walks the given folder and returns the paths of every file or folder within.

Recursively walks the given folder and returns the paths of every file or folder within.

You can pass in a skip callback to skip files or folders you are not interested in. This can avoid walking entire parts of the folder hierarchy, saving time as compared to filtering them after the fact.

By default, the paths are returned as a pre-order traversal: the enclosing folder is occurs first before any of it's contents. You can pass in preOrder = false to turn it into a post-order traversal, such that the enclosing folder occurs last after all it's contents.

os.walk returns but does not follow symlinks; pass in followLinks = true to override that behavior. You can also specify a maximum depth you wish to walk via the maxDepth parameter.

object write

Write some data to a file. This can be a String, an Array[Byte], or a Seq[String] which is treated as consecutive lines. By default, this fails if a file already exists at the target location. Use write.over or write.append if you want to over-write it or add to what's already there.

Write some data to a file. This can be a String, an Array[Byte], or a Seq[String] which is treated as consecutive lines. By default, this fails if a file already exists at the target location. Use write.over or write.append if you want to over-write it or add to what's already there.

Types

type Generator[+T] = Generator[T]

Value members

Concrete methods

def resource(implicit resRoot: ResourceRoot): ResourcePath

Concrete fields

val Generator: Generator
val home: Path

The user's home directory

The user's home directory

val pwd: Path

The current working directory for this process.

The current working directory for this process.

val rel: RelPath
val root: Path

The root of the filesystem

The root of the filesystem

val sub: SubPath
val up: RelPath

Implicits

Implicits

implicit def GlobSyntax(s: StringContext): GlobInterpolator