diff --git a/Cargo.toml b/Cargo.toml index 36facb9b..2d687d30 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,22 +15,21 @@ include = ["**/*.rs", "scripts/*.rhai", "**/*.md", "Cargo.toml"] keywords = ["scripting", "scripting-engine", "scripting-language", "embedded"] categories = ["no-std", "embedded", "wasm", "parser-implementations"] -[lib] -name = "rhai" -path = "src/lib.rs" - -[[bin]] -name = "rhai-repl" -path = "src/bin/rhai-repl.rs" -required-features = ["rustyline"] - [dependencies] smallvec = { version = "1.7", default-features = false, features = ["union", "const_new" ] } ahash = { version = "0.7", default-features = false } num-traits = { version = "0.2", default-features = false } smartstring = { version = "0.2.8", default-features = false } rhai_codegen = { version = "1.2", path = "codegen", default-features = false } -rustyline = { versoin = "9", optional = true } + +no-std-compat = { version = "0.4", default-features = false, features = ["alloc"], optional = true } +libm = { version = "0.2", default-features = false, optional = true } +core-error = { version = "0.0", default-features = false, features = ["alloc"], optional = true } +serde = { version = "1.0", default-features = false, features = ["derive", "alloc"], optional = true } +serde_json = { version = "1.0", default-features = false, features = ["alloc"], optional = true } +unicode-xid = { version = "0.2", default-features = false, optional = true } +rust_decimal = { version = "1.16", default-features = false, features = ["maths"], optional = true } +rustyline = { version = "9", optional = true } [dev-dependencies] serde_bytes = "0.11" @@ -62,52 +61,23 @@ no_std = ["no-std-compat", "num-traits/libm", "core-error", "libm", "ahash/compi wasm-bindgen = ["instant/wasm-bindgen"] stdweb = ["instant/stdweb"] +[[bin]] +name = "rhai-repl" +required-features = ["rustyline"] + +[[bin]] +name = "rhai-run" + +[[bin]] +name = "rhai-dbg" +required-features = ["debugging"] + [profile.release] lto = "fat" codegen-units = 1 #opt-level = "z" # optimize for size #panic = 'abort' # remove stack backtrace for no-std -[dependencies.no-std-compat] -version = "0.4" -default-features = false -features = ["alloc"] -optional = true - -[dependencies.libm] -version = "0.2" -default-features = false -optional = true - -[dependencies.core-error] -version = "0.0" -default-features = false -features = ["alloc"] -optional = true - -[dependencies.serde] -version = "1.0" -default-features = false -features = ["derive", "alloc"] -optional = true - -[dependencies.serde_json] -version = "1.0" -default-features = false -features = ["alloc"] -optional = true - -[dependencies.unicode-xid] -version = "0.2" -default-features = false -optional = true - -[dependencies.rust_decimal] -version = "1.16" -default-features = false -features = ["maths"] -optional = true - [target.'cfg(target_family = "wasm")'.dependencies] instant = { version = "0.1.10" } # WASM implementation of std::time::Instant diff --git a/src/bin/README.md b/src/bin/README.md index a0afbd8f..e0648866 100644 --- a/src/bin/README.md +++ b/src/bin/README.md @@ -3,10 +3,38 @@ Rhai Tools Tools for running Rhai scripts. +| Tool | Required feature(s) | Description | +| -------------------------------------------------------------------------------- | :-----------------: | --------------------------------------------------- | +| [`rhai-run`](https://github.com/rhaiscript/rhai/blob/main/src/bin/rhai-run.rs) | | runs each filename passed to it as a Rhai script | +| [`rhai-repl`](https://github.com/rhaiscript/rhai/blob/main/src/bin/rhai-repl.rs) | `rustyline` | simple REPL that interactively evaluates statements | +| [`rhai-dbg`](https://github.com/rhaiscript/rhai/blob/main/src/bin/rhai-dbg.rs) | `debugging` | the _Rhai Debugger_ | + How to Run ---------- -```bash +```sh cargo run --bin sample_app_to_run ``` + +or with required features + +```sh +cargo run --bin sample_app_to_run --features feature1,feature2,feature3 +``` + + +How to Install +-------------- + +To install these all tools (with [`decimal`] and [`metadata`] support), use the following command: + +```sh +cargo install --path . --bins --features decimal,metadata,debugging,rustyline +``` + +or specifically: + +```sh +cargo install --path . --bin rhai-run --features decimal,metadata,debugging,rustyline +``` diff --git a/src/bin/rhai-dbg.rs b/src/bin/rhai-dbg.rs index 9c81c202..a506b640 100644 --- a/src/bin/rhai-dbg.rs +++ b/src/bin/rhai-dbg.rs @@ -1,12 +1,6 @@ -#![cfg(not(feature = "no_std"))] - -#[cfg(feature = "debugging")] +use rhai::debugger::DebuggerCommand; use rhai::{Dynamic, Engine, EvalAltResult, ImmutableString, Position, Scope}; -#[cfg(feature = "debugging")] -use rhai::debugger::DebuggerCommand; - -#[cfg(feature = "debugging")] use std::{ env, fs::File, @@ -16,7 +10,6 @@ use std::{ }; /// Pretty-print source line. -#[cfg(feature = "debugging")] fn print_source(lines: &[String], pos: Position, offset: usize) { let line_no = if lines.len() > 1 { if pos.is_none() { @@ -44,7 +37,6 @@ fn print_source(lines: &[String], pos: Position, offset: usize) { } /// Pretty-print error. -#[cfg(feature = "debugging")] fn print_error(input: &str, mut err: EvalAltResult) { let lines: Vec<_> = input.trim().split('\n').collect(); let pos = err.take_position(); @@ -78,7 +70,6 @@ fn print_error(input: &str, mut err: EvalAltResult) { } /// Print debug help. -#[cfg(feature = "debugging")] fn print_debug_help() { println!("help => print this help"); println!("quit, exit, kill => quit"); @@ -114,7 +105,6 @@ fn print_debug_help() { } /// Display the scope. -#[cfg(feature = "debugging")] fn print_scope(scope: &Scope, dedup: bool) { let flattened_clone; let scope = if dedup { @@ -153,7 +143,6 @@ fn print_scope(scope: &Scope, dedup: bool) { println!(); } -#[cfg(feature = "debugging")] fn main() { let title = format!("Rhai Debugger (version {})", env!("CARGO_PKG_VERSION")); println!("{}", title); @@ -552,8 +541,3 @@ fn main() { } } } - -#[cfg(not(feature = "debugging"))] -fn main() { - panic!("rhai-dbg requires the 'debugging' feature.") -}