mirror of
https://github.com/nushell/nushell.git
synced 2025-08-07 03:46:44 +02:00
# Description As title, this pr introduce `-h` flag to testbin, so if I want to see which testbin I should use, I don't need to look into source code. ### About the change I don't know if there is any way to get docstring of a function inside rust code. So I created a trait, and put docstring into it's `help` method: ```rust pub trait TestBin { // the docstring of original functions are moved here. fn help(&self) -> &'static str; fn run(&self); } ``` Take `cococo` testbin as example, the changes are: ``` original cococo function --> Cococo struct, then 1. put the body of `cococo` function into `run` method 2. put the docstring of `cococo` function into `help` method ``` # User-Facing Changes `-h/--help` flag in testbin is enabled. ``` > nu --testbin -h Usage: nu --testbin <bin> <bin>: chop -> With no parameters, will chop a character off the end of each line cococo -> Cross platform echo using println!()(e.g: nu --testbin cococo a b c) echo_env -> Echo's value of env keys from args(e.g: nu --testbin echo_env FOO BAR) echo_env_mixed -> Mix echo of env keys from input(e.g: nu --testbin echo_env_mixed out-err FOO BAR; nu --testbin echo_env_mixed err-out FOO BAR) echo_env_stderr -> Echo's value of env keys from args to stderr(e.g: nu --testbin echo_env_stderr FOO BAR) echo_env_stderr_fail -> Echo's value of env keys from args to stderr, and exit with failure(e.g: nu --testbin echo_env_stderr_fail FOO BAR) fail -> Exits with failure code 1(e.g: nu --testbin fail) iecho -> Another type of echo that outputs a parameter per line, looping infinitely(e.g: nu --testbin iecho 3) input_bytes_length -> Prints the number of bytes received on stdin(e.g: 0x[deadbeef] | nu --testbin input_bytes_length) meow -> Cross platform cat (open a file, print the contents) using read_to_string and println!()(e.g: nu --testbin meow file.txt) meowb -> Cross platform cat (open a file, print the contents) using read() and write_all() / binary(e.g: nu --testbin meowb sample.db) nonu -> Cross platform echo but concats arguments without space and NO newline(e.g: nu --testbin nonu a b c) nu_repl -> Run a REPL with the given source lines relay -> Relays anything received on stdin to stdout(e.g: 0x[beef] | nu --testbin relay) repeat_bytes -> A version of repeater that can output binary data, even null bytes(e.g: nu --testbin repeat_bytes 003d9fbf 10) repeater -> Repeat a string or char N times(e.g: nu --testbin repeater a 5) ``` # Tests + Formatting None, all existed tests can guarantee the behavior of testbins doesn't change. # After Submitting NaN
Nushell REPL
This directory contains the main Nushell REPL (read eval print loop) as part of the CLI portion of Nushell, which creates the nu
binary itself.
Current versions of the nu
binary will use the Nu argument parsing logic to parse the commandline arguments passed to nu
, leaving the logic here to be a thin layer around what the core libraries.