| |
use std::{collections::HashMap, process};
|
| |
|
| |
use radicle::prelude::RepoId;
|
| + |
use radicle::version::Version;
|
| |
use radicle_httpd as httpd;
|
| |
|
| + |
pub const VERSION: Version = Version {
|
| + |
name: "radicle-httpd",
|
| + |
commit: env!("GIT_HEAD"),
|
| + |
version: env!("RADICLE_VERSION"),
|
| + |
timestamp: env!("SOURCE_DATE_EPOCH"),
|
| + |
};
|
| + |
|
| + |
pub const HELP_MSG: &str = r#"
|
| + |
Usage
|
| + |
|
| + |
radicle-httpd [<option>...]
|
| + |
|
| + |
Options
|
| + |
|
| + |
--listen <address> Address to listen on (default: 0.0.0.0:8080)
|
| + |
--alias, -a <alias> <rid> Provide alias and RID pairs to shorten git clone commands for repositories,
|
| + |
e.g. heartwood and rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 to produce https://seed.radicle.xyz/heartwood.git
|
| + |
--cache <number> Max amount of items in cache for /tree endpoints (default: 100)
|
| + |
--version, -v Print program version
|
| + |
--help, -h Print help
|
| + |
"#;
|
| + |
|
| |
#[tokio::main]
|
| |
async fn main() -> anyhow::Result<()> {
|
| |
let options = parse_options()?;
|
| |
|
| |
// SAFETY: The logger is only initialized once.
|
| |
httpd::logger::init().unwrap();
|
| - |
tracing::info!("version {}-{}", env!("RADICLE_VERSION"), env!("GIT_HEAD"));
|
| + |
tracing::info!("starting http daemon..");
|
| + |
tracing::info!("version {} ({})", env!("RADICLE_VERSION"), env!("GIT_HEAD"));
|
| |
|
| |
match httpd::run(options).await {
|
| |
Ok(()) => {}
|
| |
|
| |
aliases.insert(alias, id);
|
| |
}
|
| + |
Long("version") | Short('v') => {
|
| + |
if let Err(e) = VERSION.write(std::io::stdout()) {
|
| + |
eprintln!("error: {e}");
|
| + |
process::exit(1);
|
| + |
};
|
| + |
process::exit(0);
|
| + |
}
|
| |
Long("cache") => {
|
| |
let size = parser.value()?.parse()?;
|
| |
cache = NonZeroUsize::new(size);
|
| |
}
|
| |
Long("help") | Short('h') => {
|
| - |
println!("usage: radicle-httpd [--listen <addr>] [--alias <name> <rid>] [--cache <size>]..");
|
| + |
println!("{HELP_MSG}");
|
| |
process::exit(0);
|
| |
}
|
| |
_ => return Err(arg.unexpected()),
|