/* This file is part of jellything (https://codeberg.org/metamuffin/jellything) which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2023 metamuffin */ #![feature(lazy_cell)] pub mod permission; pub mod cache; use jellycommon::{config::GlobalConfig, AssetLocation}; use std::{fs::File, path::PathBuf, sync::LazyLock}; pub static CONF: LazyLock = LazyLock::new(|| { serde_json::from_reader( File::open( std::env::args() .nth(1) .expect("First argument must specify the config.json to use."), ) .unwrap(), ) .unwrap() }); pub trait AssetLocationExt { fn path(&self) -> PathBuf; } impl AssetLocationExt for AssetLocation { fn path(&self) -> PathBuf { match self { AssetLocation::Assets(p) => CONF.asset_path.join(p), AssetLocation::Cache(p) => CONF.cache_path.join(p), AssetLocation::Library(p) => CONF.library_path.join(p), } } }