pub struct Shell { /* private fields */ }
Expand description

A Shell is the main API entry point.

Almost all of the crate’s functionality is available as methods of the Shell object.

Shell is a stateful object. It maintains a logical working directory and an environment map. They are independent from process’s std::env::current_dir and std::env::var, and only affect paths and commands passed to the Shell.

By convention, variable holding the shell is named sh.

Example

use xshell::{cmd, Shell};

let sh = Shell::new()?;
let _d = sh.push_dir("./target");
let cwd = sh.current_dir();
cmd!(sh, "echo current dir is {cwd}").run()?;

let process_cwd = std::env::current_dir().unwrap();
assert_eq!(cwd, process_cwd.join("./target"));

Implementations

Creates a new Shell.

Fails if std::env::current_dir returns an error.

Returns the working directory for this Shell.

All relative paths are interpreted relative to this directory, rather than std::env::current_dir.

Changes the working directory for this Shell.

Note that this doesn’t affect std::env::current_dir.

Temporary changes the working directory of this Shell.

Returns a RAII guard which reverts the working directory to the old value when dropped.

Note that this doesn’t affect std::env::current_dir.

Fetches the environmental variable key for this Shell.

Returns an error if the variable is not set, or set to a non-utf8 value.

Environment of the Shell affects all commands spawned via this shell.

Fetches the environmental variable key for this Shell as OsString Returns None if the variable is not set.

Environment of the Shell affects all commands spawned via this shell.

Sets the value of key environment variable for this Shell to val.

Note that this doesn’t affect std::env::var.

Temporary sets the value of key environment variable for this Shell to val.

Returns a RAII guard which restores the old environment when dropped.

Note that this doesn’t affect std::env::var.

Read the entire contents of a file into a string.

Read the entire contents of a file into a vector of bytes.

Returns a sorted list of paths directly contained in the directory at path.

Write a slice as the entire contents of a file.

This function will create the file and all intermediate directories if they don’t exist.

Copies src into dst.

src must be a file, but dst need not be. If dst is an existing directory, src will be copied into a file in the dst directory whose name is same as that of src.

Otherwise, dst is a file or does not exist, and src will be copied into it.

Hardlinks src to dst.

Creates the specified directory.

All intermediate directories will also be created.

Creates an empty named world-readable temporary directory.

Returns a TempDir RAII guard with the path to the directory. When dropped, the temporary directory and all of its contents will be removed.

Note that this is an insecure method – any other process on the system will be able to read the data.

Removes the file or directory at the given path.

Returns whether a file or directory exists at the given path.

Creates a new Cmd that executes the given program.

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.