about summary refs log tree commit diff stats
path: root/pkgs/by-name/ba/back/src/main.rs
blob: 61953c4af457e88d43edaee8b03aa4a4e7e130b7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Back - An extremely simple git issue tracking system. Inspired by tvix's
// panettone
//
// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
// 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 <https://www.gnu.org/licenses/agpl.txt>.

use std::{process, sync::Arc};

use clap::Parser;

use crate::config::BackConfig;

mod cli;
pub mod config;
mod error;
pub mod git_bug;
mod web;

fn main() -> Result<(), String> {
    if let Err(err) = server_main() {
        eprintln!("Error {err}");
        process::exit(1);
    } else {
        Ok(())
    }
}

#[tokio::main]
async fn server_main() -> Result<(), error::Error> {
    let args = cli::Cli::parse();

    stderrlog::new()
        .module(module_path!())
        .modules(["hyper", "http"])
        .quiet(false)
        .show_module_names(false)
        .color(stderrlog::ColorChoice::Auto)
        .verbosity(2)
        .timestamp(stderrlog::Timestamp::Off)
        .init()
        .expect("Let's just hope that this does not panic");

    let config = BackConfig::from_config_file(&args.config_file)?;

    web::main(Arc::new(config)).await?;

    Ok(())
}