72 lines
2.2 KiB
Rust
72 lines
2.2 KiB
Rust
|
use crate::{error::Result, statics::OPT};
|
||
|
use log::LevelFilter;
|
||
|
use log4rs::{
|
||
|
append::{console::ConsoleAppender, file::FileAppender},
|
||
|
config::{Appender, Config, Root},
|
||
|
encode::pattern::PatternEncoder,
|
||
|
};
|
||
|
use std::path::PathBuf;
|
||
|
use structopt::StructOpt;
|
||
|
|
||
|
#[derive(StructOpt, Debug)]
|
||
|
pub(crate) struct Opt {
|
||
|
#[structopt(
|
||
|
short = "o",
|
||
|
long = "outdir",
|
||
|
parse(from_os_str),
|
||
|
default_value = "./repos"
|
||
|
)]
|
||
|
/// Path to store cloned repositories
|
||
|
pub(crate) outdir: PathBuf,
|
||
|
#[structopt(
|
||
|
short = "c",
|
||
|
long = "cachedir",
|
||
|
parse(from_os_str),
|
||
|
default_value = "./cache"
|
||
|
)]
|
||
|
/// Path to store cache
|
||
|
pub(crate) cachedir: PathBuf,
|
||
|
#[structopt(short = "p", long = "port", default_value = "8080")]
|
||
|
/// Port to listen on
|
||
|
pub(crate) port: u16,
|
||
|
#[structopt(short = "h", long = "host", default_value = "0.0.0.0")]
|
||
|
/// Interface to listen on
|
||
|
pub(crate) host: String,
|
||
|
#[structopt(short = "d", long = "domain", default_value = "hitsofcode.com")]
|
||
|
/// Interface to listen on
|
||
|
pub(crate) domain: String,
|
||
|
#[structopt(short = "w", long = "workers", default_value = "4")]
|
||
|
/// Number of worker threads
|
||
|
pub(crate) workers: usize,
|
||
|
#[structopt(
|
||
|
short = "l",
|
||
|
long = "logfile",
|
||
|
parse(from_os_str),
|
||
|
default_value = "./hoc.log"
|
||
|
)]
|
||
|
/// The logfile
|
||
|
pub(crate) logfile: PathBuf,
|
||
|
}
|
||
|
|
||
|
pub(crate) fn init() -> Result<()> {
|
||
|
std::env::set_var("RUST_LOG", "actix_web=info,hoc=info");
|
||
|
// pretty_env_logger::init();
|
||
|
openssl_probe::init_ssl_cert_env_vars();
|
||
|
let stdout = ConsoleAppender::builder().build();
|
||
|
let file = FileAppender::builder()
|
||
|
.encoder(Box::new(PatternEncoder::new("{d} - {m}{n}")))
|
||
|
.build(&OPT.logfile)
|
||
|
.unwrap();
|
||
|
let config = Config::builder()
|
||
|
.appender(Appender::builder().build("stdout", Box::new(stdout)))
|
||
|
.appender(Appender::builder().build("file", Box::new(file)))
|
||
|
.build(
|
||
|
Root::builder()
|
||
|
.appender("stdout")
|
||
|
.appender("file")
|
||
|
.build(LevelFilter::Info),
|
||
|
)?;
|
||
|
log4rs::init_config(config)?;
|
||
|
Ok(())
|
||
|
}
|