forked from mars/breed
better argument parsing
This commit is contained in:
parent
71490f7421
commit
1e69ae5e98
33
src/main.rs
33
src/main.rs
|
@ -19,13 +19,14 @@
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
env::args,
|
env::args,
|
||||||
|
fs::File,
|
||||||
io::{
|
io::{
|
||||||
Read,
|
Read,
|
||||||
stdin,
|
|
||||||
stdout,
|
stdout,
|
||||||
Stdout,
|
Stdout,
|
||||||
Write,
|
Write,
|
||||||
},
|
},
|
||||||
|
os::fd::FromRawFd,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crossterm::{
|
use crossterm::{
|
||||||
|
@ -353,24 +354,34 @@ fn screen_main(stdout: &mut Stdout, mut state: State) -> Result<()> {
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
let argv = args().collect::<Vec<String>>();
|
let argv = args().collect::<Vec<String>>();
|
||||||
|
let mut buf = Vec::new();
|
||||||
let text: String;
|
let text: String;
|
||||||
|
|
||||||
if !argv.get(1).is_some() {
|
text = match argv.get(1) {
|
||||||
text = "".to_string();
|
Some(path) => {
|
||||||
} else {
|
match path.as_str() {
|
||||||
let mut buf = Vec::new();
|
"-" => unsafe { File::from_raw_fd(0) },
|
||||||
std::fs::File::open(argv[1].clone()).unwrap_or_else(|_| {
|
_ => {
|
||||||
eprintln!("{}: {}: No such file.", argv[0], argv[1]);
|
std::fs::File::open(path).unwrap_or_else(|_| {
|
||||||
|
eprintln!(
|
||||||
|
"{}: {}: No such file or directory.",
|
||||||
|
argv[0],
|
||||||
|
argv[1]
|
||||||
|
);
|
||||||
exit(EX_UNAVAILABLE);
|
exit(EX_UNAVAILABLE);
|
||||||
}).read_to_end(&mut buf).unwrap();
|
})
|
||||||
|
},
|
||||||
|
}.read_to_end(&mut buf).unwrap();
|
||||||
|
|
||||||
text = String::from_utf8(buf).unwrap_or_else(|_| {
|
String::from_utf8(buf).unwrap_or_else(|_| {
|
||||||
eprintln!(
|
eprintln!(
|
||||||
"{}: {}: File contents are invalid UTF-8.", argv[0], argv[1]
|
"{}: {}: File contents are invalid UTF-8.", argv[0], argv[1]
|
||||||
);
|
);
|
||||||
exit(EX_DATAERR);
|
exit(EX_DATAERR);
|
||||||
});
|
})
|
||||||
}
|
},
|
||||||
|
None => "".to_string(),
|
||||||
|
};
|
||||||
|
|
||||||
let state = State::from_str(&text)?;
|
let state = State::from_str(&text)?;
|
||||||
let mut stdout = stdout();
|
let mut stdout = stdout();
|
||||||
|
|
Reference in New Issue
Block a user