char/sorcery

static-files based git repo viewer

git clone https://git.t4t.associates/char/sorcery

Charlotte Somadd sorcery-ssh with sorcery-ssh-tui8f07a0e

main
1.9 KiB68 linesraw
1use std::path::PathBuf;
2use std::time::Duration;
3
4use anyhow::Result;
5use clap::Parser;
6use sorcery::daemon::{self, Config};
7
8#[derive(Parser)]
9struct Args {
10    #[arg(long, env = "SORCERY_REPOSITORIES", value_name = "DIR")]
11    repositories: PathBuf,
12    #[arg(long, env = "SORCERY_CACHE", value_name = "DIR")]
13    cache: PathBuf,
14    #[arg(long, env = "SORCERY_SOCKET", value_name = "PATH")]
15    socket: PathBuf,
16    #[arg(long, env = "SORCERY_INSTANCE_NAME", value_name = "NAME")]
17    instance_name: String,
18    #[arg(
19        long,
20        env = "SORCERY_INTERNAL_PREFIX",
21        default_value = "/_sorcery",
22        value_name = "PATH"
23    )]
24    internal_prefix: String,
25    #[arg(
26        long,
27        env = "SORCERY_GIT_INTERNAL_PREFIX",
28        default_value = "/_sorcery-git",
29        value_name = "PATH"
30    )]
31    git_internal_prefix: String,
32    #[arg(
33        long,
34        env = "SORCERY_CHECK_INTERVAL",
35        default_value_t = 2,
36        value_name = "SECONDS"
37    )]
38    check_interval: u64,
39    #[arg(
40        long,
41        env = "SORCERY_MAX_GIT_PROCESSES",
42        default_value_t = 8,
43        value_name = "COUNT"
44    )]
45    max_git_processes: usize,
46    #[arg(long, env = "SORCERY_REFRESH_TOKEN_FILE", value_name = "PATH")]
47    refresh_token_file: Option<PathBuf>,
48    #[arg(long, env = "SORCERY_CLONE_URL_BASE", value_name = "URL")]
49    clone_url_base: Option<String>,
50}
51
52#[tokio::main]
53async fn main() -> Result<()> {
54    let args = Args::parse();
55    daemon::run(Config {
56        repositories: args.repositories,
57        cache: args.cache,
58        socket: args.socket,
59        instance_name: args.instance_name,
60        internal_prefix: args.internal_prefix,
61        git_internal_prefix: args.git_internal_prefix,
62        check_interval: Duration::from_secs(args.check_interval),
63        max_git_processes: args.max_git_processes,
64        refresh_token_file: args.refresh_token_file,
65        clone_url_base: args.clone_url_base,
66    })
67    .await
68}