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

87 lines
2.3 KiB
Rust

use phetch::{gopher, ui::UI};
use std::process::exit;
5 years ago
5 years ago
fn main() {
5 years ago
exit(run())
}
fn run() -> i32 {
5 years ago
let args: Vec<String> = std::env::args().collect();
5 years ago
let mut url = "gopher://phetch/1/home";
let mut praw = false;
5 years ago
let mut tls = false;
let mut iter = args.iter();
while let Some(arg) = iter.next() {
match arg.as_ref() {
"-v" | "--version" | "-version" => {
print_version();
return 0;
}
"-h" | "--help" | "-help" => {
print_usage();
return 0;
}
"-r" | "--raw" | "-raw" => {
if args.len() > 2 {
praw = true;
5 years ago
} else {
eprintln!("--raw needs gopher-url");
return 1;
}
}
"-l" | "--local" | "-local" => url = "gopher://127.0.0.1:7070",
"-t" | "--tls" | "-tls" => tls = true,
arg => {
if arg.starts_with('-') {
eprintln!("unknown flag: {}\n", url);
print_usage();
return 1;
} else {
url = arg;
}
}
5 years ago
}
}
if praw {
print_raw(url, tls);
return 0;
}
let mut ui = UI::new(tls);
if let Err(e) = ui.open(url, url).and_then(|_| ui.run()) {
5 years ago
eprintln!("{}", e);
5 years ago
return 1;
}
5 years ago
0
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
5 years ago
phetch -t, --tls <gopher-url> attempt to open w/ tls
5 years ago
phetch -r, --raw <gopher-url> print raw gopher response
phetch -l, --local connect to 127.0.0.1:7070
5 years ago
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, try_tls: bool) {
match gopher::fetch_url(url, try_tls) {
Ok((_, response)) => println!("{}", response),
5 years ago
Err(e) => {
5 years ago
eprintln!("{}", e);
5 years ago
exit(0)
}
}
5 years ago
}