1mod run;
2mod default;
3
4use std::io::Write;
5
6pub use self::run::*;
7pub use self::default::*;
8
9pub struct App<TStdout, TStderr>
10 where TStdout: Write + Send + 'static,
11 TStderr: Write + Send + 'static
12{
13 name: String,
14 usage: String,
15 version: String,
16 stdout: TStdout,
17 stderr: TStderr,
18 exit: bool
19}
20
21impl<TStdout: Write + Send + 'static, TStderr: Write + Send + 'static> App<TStdout, TStderr> {
22 pub fn new(stdout: TStdout, stderr: TStderr) -> Self {
23 Self {
24 name: String::default(),
25 usage: String::default(),
26 version: String::default(),
27 exit: true,
28 stdout,
29 stderr
30 }
31 }
32
33 pub fn name<S: Into<String>>(mut self, value: S) -> Self {
34 self.name = value.into();
35 self
36 }
37
38 pub fn usage<S: Into<String>>(mut self, value: S) -> Self {
39 self.usage = value.into();
40 self
41 }
42
43 pub fn version<S: Into<String>>(mut self, value: S) -> Self {
44 self.version = value.into();
45 self
46 }
47
48 pub fn stdout<S: Into<TStdout>>(mut self, value: S) -> Self {
49 self.stdout= value.into();
50 self
51 }
52
53 pub fn stderr<S: Into<TStderr>>(mut self, value: S) -> Self {
54 self.stderr = value.into();
55 self
56 }
57
58 pub fn exit<S: Into<bool>>(mut self, value: S) -> Self {
59 self.exit= value.into();
60 self
61 }
62}