Crate cicada

source ·
Expand description

Cicada is a bash-like Unix shell written in Rust.

If you would like to use cicada as a regular shell, please see details in its repository

Here is how to use cicada as a library:

Add cicada into Cargo.toml

cicada = "0.9.0"

Use cicada functions

extern crate cicada;

fn main() {
    let tokens = cicada::parse_line("echo 'hi yoo' | `which wc`");
    assert_eq!(tokens.len(), 4);

    assert_eq!(tokens[0].0, "");
    assert_eq!(tokens[0].1, "echo");

    assert_eq!(tokens[1].0, "'");
    assert_eq!(tokens[1].1, "hi yoo");

    assert_eq!(tokens[2].0, "");
    assert_eq!(tokens[2].1, "|");

    assert_eq!(tokens[3].0, "`");
    assert_eq!(tokens[3].1, "which wc");

    let out1 = cicada::run("ls Cargo.toml foo");
    assert_eq!(out1.status, 1);
    assert_eq!(out1.stdout, "Cargo.toml\n");
    assert_eq!(out1.stderr, "ls: foo: No such file or directory\n");

    let out2 = cicada::run("ls | wc");
    assert_eq!(out2.status, 0);
    assert_eq!(out2.stdout, "       4       4      33\n");



Represents an error calling exec.


Parse a command to tokens.
Run a command or a pipeline.