Crate papyrus

source ·
Expand description

papyrus

Build Status Latest Version Rust Documentation

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.

Structs

A command definition.
Some definition around crate names.
A REPL instance.
A structure to hold the loaded file. This only naively parses the file and describes the crates, file type and contents.

Enums

Command arguments variants.
The type of source file, .rs or .rscript.

Traits

Functions

Adds a right click context menu entry for papyrus. Associates .rs and .rscript files with papyrus.
Removes the right click context menu entry for papyrus.