proc

replpp.shaded.os.proc
case class proc(command: Shellable*)

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

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

def call(cwd: Path, env: Map[String, String], stdin: ProcessInput, stdout: ProcessOutput, stderr: ProcessOutput, mergeErrIntoOut: Boolean, timeout: Long, check: Boolean, propagateEnv: Boolean): CommandResult

Invokes the given subprocess like a function, passing in input and returning a CommandResult. You can then call result.exitCode to see how it exited, or result.out.bytes or result.err.string to access the aggregated stdout and stderr of the subprocess in a number of convenient ways. If a non-zero exit code is returned, this throws a os.SubprocessException containing the CommandResult, unless you pass in check = false.

Invokes the given subprocess like a function, passing in input and returning a CommandResult. You can then call result.exitCode to see how it exited, or result.out.bytes or result.err.string to access the aggregated stdout and stderr of the subprocess in a number of convenient ways. If a non-zero exit code is returned, this throws a os.SubprocessException containing the CommandResult, unless you pass in check = false.

If you want to spawn an interactive subprocess, such as vim, less, or a python shell, set all of stdin/stdout/stderr to os.Inherit

call provides a number of parameters that let you configure how the subprocess is run:

Value parameters

check

disable this to avoid throwing an exception if the subprocess fails with a non-zero exit code

cwd

the working directory of the subprocess

env

any additional environment variables you wish to set in the subprocess

mergeErrIntoOut

merges the subprocess's stderr stream into it's stdout

propagateEnv

disable this to avoid passing in this parent process's environment variables to the subprocess

stderr

How the process's error stream is configured.

stdin

any data you wish to pass to the subprocess's standard input

stdout

How the process's output stream is configured.

timeout

how long to wait in milliseconds for the subprocess to complete

Attributes

def commandChunks: Seq[String]
def spawn(cwd: Path, env: Map[String, String], stdin: ProcessInput, stdout: ProcessOutput, stderr: ProcessOutput, mergeErrIntoOut: Boolean, propagateEnv: Boolean): SubProcess

The most flexible of the os.proc calls, os.proc.spawn simply configures and starts a subprocess, and returns it as a java.lang.Process for you to interact with however you like.

The most flexible of the os.proc calls, os.proc.spawn simply configures and starts a subprocess, and returns it as a java.lang.Process for you to interact with however you like.

To implement pipes, you can spawn a process, take it's stdout, and pass it as the stdin of a second spawned process.

Note that if you provide ProcessOutput callbacks to stdout/stderr, the calls to those callbacks take place on newly spawned threads that execute in parallel with the main thread. Thus make sure any data processing you do in those callbacks is thread safe!

Attributes

Inherited methods

def productElementNames: Iterator[String]

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

Attributes

Inherited from:
Product