pub struct Context {
pub args: Vec<String>,
/* private fields */
}
Expand description
Context
type
This type is used only for Action
arguments
Fields§
§args: Vec<String>
Vec<String>
with flags and flag values removed from command line arguments
Implementations§
source§impl Context
impl Context
sourcepub fn new(
args: Vec<String>,
flags: Option<Vec<Flag>>,
help_text: String
) -> Self
pub fn new( args: Vec<String>, flags: Option<Vec<Flag>>, help_text: String ) -> Self
Create new instance of Context
Parse processing using Vec<String>
command line argument and Vec<Flag>
as arguments
sourcepub fn bool_flag(&self, name: &str) -> bool
pub fn bool_flag(&self, name: &str) -> bool
Get bool flag
Example
use seahorse::Context;
fn action(c: &Context) {
if c.bool_flag("bool") {
println!("True!");
} else {
println!("False!");
}
}
Examples found in repository?
More examples
examples/multiple_app.rs (line 11)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
fn main() {
let args: Vec<String> = env::args().collect();
let app = App::new("multiple_app")
.author(env!("CARGO_PKG_AUTHORS"))
.description(env!("CARGO_PKG_DESCRIPTION"))
.usage("multiple_app [command] [arg]")
.version(env!("CARGO_PKG_VERSION"))
.action(|c: &Context| println!("{:?} : {}", c.args, c.bool_flag("bool")))
.flag(
Flag::new("bool", FlagType::Bool)
.description("bool flag")
.alias("b"),
)
.command(add_command())
.command(hello_command());
app.run(args);
}
fn hello_action(c: &Context) {
if c.bool_flag("bye") {
println!("Bye, {:?}", c.args);
} else {
println!("Hello, {:?}", c.args);
}
match c.int_flag("age") {
Ok(age) => println!("{:?} is {} years old", c.args, age),
Err(e) => match e {
FlagError::TypeError => println!("age flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined age flag"),
FlagError::ArgumentError => println!("age flag argument error"),
FlagError::NotFound => println!("not found age flag"),
},
}
match c.string_flag("neko") {
Ok(neko) => println!("neko say {}", neko),
Err(e) => match e {
FlagError::TypeError => println!("neko flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined neko flag"),
FlagError::ArgumentError => println!("neko flag argument error"),
FlagError::NotFound => println!("not found neko flag"),
},
}
}
examples/nested_multiple_app.rs (line 11)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
fn main() {
let args: Vec<String> = env::args().collect();
let app = App::new("multiple_app")
.author(env!("CARGO_PKG_AUTHORS"))
.description(env!("CARGO_PKG_DESCRIPTION"))
.usage("multiple_app [command] [arg]")
.version(env!("CARGO_PKG_VERSION"))
.action(|c: &Context| println!("{:?} : {}", c.args, c.bool_flag("bool")))
.flag(
Flag::new("bool", FlagType::Bool)
.description("bool flag")
.alias("b"),
)
.command(add_command())
.command(hello_command());
app.run(args);
}
fn hello_action(c: &Context) {
if c.bool_flag("bye") {
println!("Bye, {:?}", c.args);
} else {
println!("Hello, {:?}", c.args);
}
match c.int_flag("age") {
Ok(age) => println!("{:?} is {} years old", c.args, age),
Err(e) => match e {
FlagError::TypeError => println!("age flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined age flag"),
FlagError::ArgumentError => println!("age flag argument error"),
FlagError::NotFound => println!("not found age flag"),
},
}
match c.string_flag("neko") {
Ok(neko) => println!("neko say {}", neko),
Err(e) => match e {
FlagError::TypeError => println!("neko flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined neko flag"),
FlagError::ArgumentError => println!("neko flag argument error"),
FlagError::NotFound => println!("not found neko flag"),
},
}
}
examples/top_level_error_handling.rs (line 12)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
fn main() {
let args: Vec<String> = env::args().collect();
let app = App::new("cli")
.author(env!("CARGO_PKG_AUTHORS"))
.description(env!("CARGO_PKG_DESCRIPTION"))
.usage("multiple_app [command] [arg]")
.version(env!("CARGO_PKG_VERSION"))
.action_with_result(|c: &Context| {
if c.bool_flag("error") {
Err(ActionError {
message: "ERROR...".to_string(),
})
} else {
Ok(())
}
})
.flag(
Flag::new("error", FlagType::Bool)
.description("error flag")
.alias("e"),
);
match app.run_with_result(args) {
Ok(_) => println!("OK"),
Err(e) => match e {
ActionError { message } => println!("{}", message),
},
};
}
sourcepub fn string_flag(&self, name: &str) -> Result<String, FlagError>
pub fn string_flag(&self, name: &str) -> Result<String, FlagError>
Get string flag
Example
use seahorse::Context;
fn action(c: &Context) {
match c.string_flag("string") {
Ok(s) => println!("{}", s),
Err(e) => println!("{}", e)
}
}
Examples found in repository?
examples/multiple_app.rs (line 41)
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
fn hello_action(c: &Context) {
if c.bool_flag("bye") {
println!("Bye, {:?}", c.args);
} else {
println!("Hello, {:?}", c.args);
}
match c.int_flag("age") {
Ok(age) => println!("{:?} is {} years old", c.args, age),
Err(e) => match e {
FlagError::TypeError => println!("age flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined age flag"),
FlagError::ArgumentError => println!("age flag argument error"),
FlagError::NotFound => println!("not found age flag"),
},
}
match c.string_flag("neko") {
Ok(neko) => println!("neko say {}", neko),
Err(e) => match e {
FlagError::TypeError => println!("neko flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined neko flag"),
FlagError::ArgumentError => println!("neko flag argument error"),
FlagError::NotFound => println!("not found neko flag"),
},
}
}
More examples
examples/nested_multiple_app.rs (line 41)
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
fn hello_action(c: &Context) {
if c.bool_flag("bye") {
println!("Bye, {:?}", c.args);
} else {
println!("Hello, {:?}", c.args);
}
match c.int_flag("age") {
Ok(age) => println!("{:?} is {} years old", c.args, age),
Err(e) => match e {
FlagError::TypeError => println!("age flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined age flag"),
FlagError::ArgumentError => println!("age flag argument error"),
FlagError::NotFound => println!("not found age flag"),
},
}
match c.string_flag("neko") {
Ok(neko) => println!("neko say {}", neko),
Err(e) => match e {
FlagError::TypeError => println!("neko flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined neko flag"),
FlagError::ArgumentError => println!("neko flag argument error"),
FlagError::NotFound => println!("not found neko flag"),
},
}
}
sourcepub fn int_flag(&self, name: &str) -> Result<isize, FlagError>
pub fn int_flag(&self, name: &str) -> Result<isize, FlagError>
Get int flag
Example
use seahorse::Context;
fn action(c: &Context) {
match c.int_flag("int") {
Ok(i) => println!("{}", i),
Err(e) => println!("{}", e)
}
}
Examples found in repository?
examples/multiple_app.rs (line 30)
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
fn hello_action(c: &Context) {
if c.bool_flag("bye") {
println!("Bye, {:?}", c.args);
} else {
println!("Hello, {:?}", c.args);
}
match c.int_flag("age") {
Ok(age) => println!("{:?} is {} years old", c.args, age),
Err(e) => match e {
FlagError::TypeError => println!("age flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined age flag"),
FlagError::ArgumentError => println!("age flag argument error"),
FlagError::NotFound => println!("not found age flag"),
},
}
match c.string_flag("neko") {
Ok(neko) => println!("neko say {}", neko),
Err(e) => match e {
FlagError::TypeError => println!("neko flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined neko flag"),
FlagError::ArgumentError => println!("neko flag argument error"),
FlagError::NotFound => println!("not found neko flag"),
},
}
}
More examples
examples/nested_multiple_app.rs (line 30)
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
fn hello_action(c: &Context) {
if c.bool_flag("bye") {
println!("Bye, {:?}", c.args);
} else {
println!("Hello, {:?}", c.args);
}
match c.int_flag("age") {
Ok(age) => println!("{:?} is {} years old", c.args, age),
Err(e) => match e {
FlagError::TypeError => println!("age flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined age flag"),
FlagError::ArgumentError => println!("age flag argument error"),
FlagError::NotFound => println!("not found age flag"),
},
}
match c.string_flag("neko") {
Ok(neko) => println!("neko say {}", neko),
Err(e) => match e {
FlagError::TypeError => println!("neko flag type error"),
FlagError::ValueTypeError => println!("value type error"),
FlagError::Undefined => println!("undefined neko flag"),
FlagError::ArgumentError => println!("neko flag argument error"),
FlagError::NotFound => println!("not found neko flag"),
},
}
}
sourcepub fn uint_flag(&self, name: &str) -> Result<usize, FlagError>
pub fn uint_flag(&self, name: &str) -> Result<usize, FlagError>
Get Uint flag
Example
use seahorse::Context;
fn action(c: &Context) {
match c.uint_flag("uint") {
Ok(i) => println!("{}", i),
Err(e) => println!("{}", e)
}
}
Auto Trait Implementations§
impl RefUnwindSafe for Context
impl Send for Context
impl Sync for Context
impl Unpin for Context
impl UnwindSafe for Context
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more