papyrus 0.5.2

A rust repl and script runner
Documentation

papyrus

Build Status Latest Version Rust Documentation codecov

A rust REPL and script running tool

See the rs docs and the usage guide Look at progress and contribute on github.

Installation

papyrus depends on proc-macro2 and syn which contains features that are only available on a nightly compiler. Further to this, the features are underneath a config flag, so compiling requires the RUSTFLAGS environment variable to include --cfg procmacro2_semver_exempt.

Switch to a nightly compiler.

rustup default nightly

Linux, Mac

RUSTFLAGS="--cfg procmacro2_semver_exempt" cargo install papyrus

Windows

$env:RUSTFLAGS="--cfg procmacro2_semver_exempt"
cargo install papyrus

REPL

papyrus run will start the repl!

Shell Context Menu

Add right click context menu. (May need admin rights)

papyrus rc-add

Remove right click context menu. (May need admin rights)

papyrus rc-remove

Run papyrus from command line.

papyrus run path_to_src_file.rs
papyrus run path_to_script_file.rscript

Implementation Notes

  • Right click on a .rs or .rscript file and choose Run with Papyrus to compile and run code!
  • Papyrus will take the contents of the source code and construct a directory to be used with cargo. For now the directory is created under a .papyrus directory in the users home directory.
  • The compiled binary will be executed with the current directory the one that houses the file. So env::current_dir() will return the directory of the .rs or .rscript file.

Example - .rs

File hello.rs.

extern crate some_crate;

fn main() {
  println!("Hello, world!");
}

Use papyrus to execute code.

papyrus run hello.rs

The src/main.rs will be populated with the same contents as hello.rs. A Cargo.toml file will be created, where some_crate will be added as a dependency some-crate = "*".

Example - .rscript

File hello.rscript.

extern crate some_crate;

println!("Hello, world!");

Use papyrus to execute code.

papyrus run hello.rscript

The src/main.rs will be populated with a main function encapsulating the code, and crate references placed above it. A similar Cargo.toml will be created as before.