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

82 lines
1.7 KiB
Rust

5 years ago
#![allow(unused_must_use)]
extern crate termion;
mod gopher;
5 years ago
mod help;
mod menu;
5 years ago
mod text;
5 years ago
mod ui;
use std::process::exit;
5 years ago
use ui::UI;
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://help/1/home"
} 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();
5 years ago
if let Err(e) = ui.open(url) {
5 years ago
ui::error(&e.to_string());
5 years ago
exit(1);
}
5 years ago
ui.run();
5 years ago
}
5 years ago
fn print_version() {
println!("\x1b[93;1mphetch v0.0.1-dev\x1b[m");
}
5 years ago
fn print_usage() {
5 years ago
println!(
"\x1B[93;1mUsage:\x1B[0m
5 years ago
phetch # Launch and show start page.
5 years ago
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."
5 years ago
);
5 years ago
}
5 years ago
fn print_raw(url: &str) {
5 years ago
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
}