forks/sorcery
git clone https://git.gae.moe/forks/sorcery
5e5b89f
main
1use std:: path:: PathBuf ; 2use std:: time:: Duration ; 3 4use anyhow:: Result ; 5use clap:: Parser ; 6use sorcery:: daemon::{ self , Config }; 7 8// The static musl allocator serializes allocation-heavy rayon workers 9// badly (highlighting llama.cpp took ~13x longer); mimalloc scales. 10# [ global_allocator ] 11static GLOBAL : mimalloc:: MiMalloc = mimalloc:: MiMalloc ; 12 13# [ derive ( Parser )] 14struct Args { 15# [ arg ( long , env = "SORCERY_REPOSITORIES" , value_name = "DIR" )] 16repositories : PathBuf , 17# [ arg ( long , env = "SORCERY_CACHE" , value_name = "DIR" )] 18cache : PathBuf , 19# [ arg ( long , env = "SORCERY_SOCKET" , value_name = "PATH" )] 20socket : PathBuf , 21# [ arg ( long , env = "SORCERY_INSTANCE_NAME" , value_name = "NAME" )] 22instance_name : String , 23# [ arg ( 24long , 25env = "SORCERY_INTERNAL_PREFIX" , 26default_value = "/_sorcery" , 27value_name = "PATH" 28)] 29internal_prefix : String , 30# [ arg ( 31long , 32env = "SORCERY_GIT_INTERNAL_PREFIX" , 33default_value = "/_sorcery-git" , 34value_name = "PATH" 35)] 36git_internal_prefix : String , 37# [ arg ( 38long , 39env = "SORCERY_CHECK_INTERVAL" , 40default_value_t = 2 , 41value_name = "SECONDS" 42)] 43check_interval : u64 , 44# [ arg ( 45long , 46env = "SORCERY_MAX_GIT_PROCESSES" , 47default_value_t = 8 , 48value_name = "COUNT" 49)] 50max_git_processes : usize , 51# [ arg ( long , env = "SORCERY_CONTROL_SOCKET" , value_name = "PATH" )] 52control_socket : Option < PathBuf >, 53# [ arg ( long , env = "SORCERY_CLONE_URL_BASE" , value_name = "URL" )] 54clone_url_base : Option < String >, 55} 56 57# [ tokio :: main ] 58async fn main () ->Result <()> { 59let args =Args :: parse (); 60 daemon:: run ( Config { 61repositories : args. repositories , 62cache : args. cache , 63socket : args. socket , 64instance_name : args. instance_name , 65internal_prefix : args. internal_prefix , 66git_internal_prefix : args. git_internal_prefix , 67check_interval : Duration :: from_secs ( args. check_interval ), 68max_git_processes : args. max_git_processes , 69control_socket : args. control_socket , 70clone_url_base : args. clone_url_base , 71}) 72. await 73}