// Back - An extremely simple git issue tracking system. Inspired by tvix's // panettone // // Copyright (C) 2024 Benedikt Peetz // SPDX-License-Identifier: AGPL-3.0-or-later // // This file is part of Back. // // You should have received a copy of the License along with this program. // If not, see . use std::{env::args, path::PathBuf, process, sync::OnceLock}; use gix::ThreadSafeRepository; use rocket::{launch, routes}; use crate::issues::{closed, open, show_issue, styles}; mod issues; static REPOSITORY: OnceLock = OnceLock::new(); #[launch] fn rocket() -> _ { let repository_path = { let maybe_path = args().skip(1).rev().last(); if let Some(path) = maybe_path { PathBuf::from(path) } else { eprintln!("Usage: back "); process::exit(1); } }; REPOSITORY .set( ThreadSafeRepository::open(&repository_path).unwrap_or_else(|err| { eprintln!( "Error while opening repository ('{}'): {} ", repository_path.display(), err ); process::exit(1); }), ) .expect("There should be only one thread accessing this right now"); rocket::build().mount("/", routes![open, closed, show_issue, styles]) }