use std::path::PathBuf; use std::time::Duration; use anyhow::Result; use clap::Parser; use sorcery::daemon::{self, Config}; #[derive(Parser)] struct Args { #[arg(long, env = "SORCERY_REPOSITORIES", value_name = "DIR")] repositories: PathBuf, #[arg(long, env = "SORCERY_CACHE", value_name = "DIR")] cache: PathBuf, #[arg(long, env = "SORCERY_SOCKET", value_name = "PATH")] socket: PathBuf, #[arg(long, env = "SORCERY_INSTANCE_NAME", value_name = "NAME")] instance_name: String, #[arg( long, env = "SORCERY_INTERNAL_PREFIX", default_value = "/_sorcery", value_name = "PATH" )] internal_prefix: String, #[arg( long, env = "SORCERY_GIT_INTERNAL_PREFIX", default_value = "/_sorcery-git", value_name = "PATH" )] git_internal_prefix: String, #[arg( long, env = "SORCERY_CHECK_INTERVAL", default_value_t = 2, value_name = "SECONDS" )] check_interval: u64, #[arg( long, env = "SORCERY_MAX_GIT_PROCESSES", default_value_t = 8, value_name = "COUNT" )] max_git_processes: usize, #[arg(long, env = "SORCERY_REFRESH_TOKEN_FILE", value_name = "PATH")] refresh_token_file: Option, #[arg(long, env = "SORCERY_CLONE_URL_BASE", value_name = "URL")] clone_url_base: Option, } #[tokio::main] async fn main() -> Result<()> { let args = Args::parse(); daemon::run(Config { repositories: args.repositories, cache: args.cache, socket: args.socket, instance_name: args.instance_name, internal_prefix: args.internal_prefix, git_internal_prefix: args.git_internal_prefix, check_interval: Duration::from_secs(args.check_interval), max_git_processes: args.max_git_processes, refresh_token_file: args.refresh_token_file, clone_url_base: args.clone_url_base, }) .await }