You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
phetch/src/main.rs

75 lines
1.7 KiB
Rust

use phetch::{gopher, ui::UI};
use std::process::exit;
5 years ago
5 years ago
fn main() {
5 years ago
let args: Vec<String> = std::env::args().collect();
5 years ago
let url = if args.len() < 2 {
"gopher://phetch/1/home"
5 years ago
} else {
args.get(1).unwrap()
};
5 years ago
5 years ago
if url == "--raw" || url == "-r" || url == "-raw" {
5 years ago
if args.len() > 2 {
let url = args.get(2).unwrap();
print_raw(url);
} else {
5 years ago
eprintln!("--raw needs gopher-url");
exit(1);
5 years ago
}
return;
}
5 years ago
if url == "--version" || url == "-v" || url == "-version" {
5 years ago
print_version();
return;
}
5 years ago
5 years ago
if url == "--help" || url == "-h" || url == "-help" {
5 years ago
print_usage();
5 years ago
return;
}
5 years ago
5 years ago
if !url.is_empty() && url.starts_with('-') {
5 years ago
eprintln!("unknown flag: {}\n", url);
print_usage();
exit(1);
5 years ago
}
5 years ago
let mut ui = UI::new();
if let Err(e) = ui.open(url, url) {
5 years ago
eprintln!("{}", e);
5 years ago
exit(1);
}
5 years ago
ui.run();
5 years ago
}
5 years ago
fn print_version() {
println!("phetch v{}", phetch::VERSION);
5 years ago
}
5 years ago
fn print_usage() {
5 years ago
println!(
5 years ago
"Usage:
phetch launch and show start page
phetch <gopher-url> open gopherhole at url
phetch -r, --raw <gopher-url> print raw gopher response
phetch -h, --help show this screen
phetch -v, --version show phetch version
Once you've launched phetch, use `ctrl-h` to view the on-line help."
5 years ago
);
5 years ago
}
5 years ago
fn print_raw(url: &str) {
5 years ago
let _ = gopher::fetch_url(url)
5 years ago
.and_then(|x| {
println!("{}", x);
Ok(())
})
5 years ago
.map_err(|e| {
eprintln!("{}", e);
5 years ago
exit(1);
5 years ago
});
5 years ago
}