Add ability to set datapath outside of cli args

This commit is contained in:
Ethan O'Brien
2025-11-30 16:51:08 -06:00
parent 66f97c48ee
commit 60eb7d469b
5 changed files with 30 additions and 23 deletions

View File

@@ -36,7 +36,7 @@ extern "C" fn Java_one_ethanthesleepy_androidew_BackgroundService_startServer<'l
//crate::runtime::set_easter_mode(easter != 0);
let data_path: String = env.get_string(&data_path).unwrap().into();
//crate::runtime::set_datapath(data_path);
crate::runtime::update_data_path(data_path);
let output = env.new_string(String::from("Azunyannnn~")).unwrap();
thread::spawn(|| {

View File

@@ -7,7 +7,7 @@ pub static INITIALIZER: extern "C" fn() = main;
#[unsafe(no_mangle)]
pub extern "C" fn main() {
let data_path = get_bundle_path().into_os_string().into_string().unwrap();
//set_datapath(data_path);
crate::runtime::update_data_path(data_path);
std::thread::spawn(|| {
crate::run_server(true).unwrap();
@@ -18,7 +18,7 @@ pub extern "C" fn main() {
use objc2_foundation::{NSFileManager, NSSearchPathDirectory, NSSearchPathDomainMask};
#[cfg(target_os = "ios")]
fn get_bundle_path() -> std::path::PathBuf {
pub fn get_bundle_path() -> std::path::PathBuf {
unsafe {
let manager = NSFileManager::defaultManager();
let application_support = manager.URLsForDirectory_inDomains(NSSearchPathDirectory::ApplicationSupportDirectory, NSSearchPathDomainMask::UserDomainMask);

View File

@@ -3,7 +3,7 @@ mod options;
mod router;
mod encryption;
mod sql;
mod runtime;
pub mod runtime;
#[macro_use]
mod macros;
@@ -22,9 +22,9 @@ use actix_web::{
web,
dev::Service
};
use std::fs;
use std::time::Duration;
use options::get_args;
pub use options::get_args;
use runtime::get_data_path;
#[actix_web::main]
pub async fn run_server(in_thread: bool) -> std::io::Result<()> {
@@ -78,13 +78,3 @@ pub async fn stop_server() {
runtime::set_running(false);
println!("Stopping");
}
pub fn get_data_path(file_name: &str) -> String {
let args = get_args();
let mut path = args.path;
while path.ends_with('/') {
path.pop();
}
fs::create_dir_all(&path).unwrap();
format!("{}/{}", path, file_name)
}

View File

@@ -1,6 +1,7 @@
#[cfg(not(feature = "library"))]
fn main() -> std::io::Result<()> {
ew::runtime::update_data_path(&ew::get_args().path);
ew::run_server(false)
}

View File

@@ -1,17 +1,33 @@
use crate::lock_onto_mutex;
use lazy_static::lazy_static;
use std::sync::Mutex;
use std::sync::RwLock;
use std::fs;
lazy_static! {
static ref RUNNING: Mutex<bool> = Mutex::new(false);
static ref RUNNING: RwLock<bool> = RwLock::new(false);
static ref DATAPATH: RwLock<String> = RwLock::new(String::new());
}
pub fn set_running(running: bool) {
let mut result = lock_onto_mutex!(RUNNING);
*result = running;
let mut w = RUNNING.write().unwrap();
*w = running;
}
pub fn get_running() -> bool {
let result = lock_onto_mutex!(RUNNING);
*result
*RUNNING.read().unwrap()
}
pub fn get_data_path(file_name: &str) -> String {
let mut path = {
DATAPATH.read().unwrap().clone()
};
while path.ends_with('/') {
path.pop();
}
fs::create_dir_all(&path).unwrap();
format!("{}/{}", path, file_name)
}
pub fn update_data_path(path: &str) {
let mut w = DATAPATH.write().unwrap();
*w = path.to_string();
}