1mod keymap_file;
2mod settings_file;
3mod settings_store;
4
5use gpui::AssetSource;
6pub use keymap_file::{keymap_file_json_schema, KeymapFileContent};
7pub use settings_file::*;
8pub use settings_store::{Setting, SettingsJsonSchemaParams, SettingsStore};
9use std::{borrow::Cow, str};
10
11pub const DEFAULT_SETTINGS_ASSET_PATH: &str = "settings/default.json";
12const INITIAL_USER_SETTINGS_ASSET_PATH: &str = "settings/initial_user_settings.json";
13const INITIAL_LOCAL_SETTINGS_ASSET_PATH: &str = "settings/initial_local_settings.json";
14
15pub fn default_settings() -> Cow<'static, str> {
16 asset_str(&assets::Assets, DEFAULT_SETTINGS_ASSET_PATH)
17}
18
19pub fn initial_user_settings_content(assets: &dyn AssetSource) -> Cow<'_, str> {
20 asset_str(assets, INITIAL_USER_SETTINGS_ASSET_PATH)
21}
22
23pub fn initial_local_settings_content(assets: &dyn AssetSource) -> Cow<'_, str> {
24 asset_str(assets, INITIAL_LOCAL_SETTINGS_ASSET_PATH)
25}
26
27fn asset_str<'a>(assets: &'a dyn AssetSource, path: &str) -> Cow<'a, str> {
28 match assets.load(path).unwrap() {
29 Cow::Borrowed(s) => Cow::Borrowed(str::from_utf8(s).unwrap()),
30 Cow::Owned(s) => Cow::Owned(String::from_utf8(s).unwrap()),
31 }
32}