Make settings variant map use u64 instead of strings since no longer restricted by JSON
This commit is contained in:
parent
04a94c902f
commit
d481f13144
6 changed files with 147 additions and 7 deletions
|
@ -76,7 +76,7 @@ fn main() -> Result<(), ()> {
|
||||||
|
|
||||||
let mut loaded_settings =
|
let mut loaded_settings =
|
||||||
persist::FileJson::open(utility::settings_dir().join(DEFAULT_SETTINGS_FILE))
|
persist::FileJson::open(utility::settings_dir().join(DEFAULT_SETTINGS_FILE))
|
||||||
.map(|mut file| file.variants.remove("0")
|
.map(|mut file| file.variants.remove(&0)
|
||||||
.map(|settings| settings::Settings::from_json(DEFAULT_SETTINGS_NAME.into(), settings, DEFAULT_SETTINGS_FILE.into()))
|
.map(|settings| settings::Settings::from_json(DEFAULT_SETTINGS_NAME.into(), settings, DEFAULT_SETTINGS_FILE.into()))
|
||||||
.unwrap_or_else(|| settings::Settings::system_default(
|
.unwrap_or_else(|| settings::Settings::system_default(
|
||||||
DEFAULT_SETTINGS_FILE.into(),
|
DEFAULT_SETTINGS_FILE.into(),
|
||||||
|
|
|
@ -9,7 +9,7 @@ use super::SettingsJson;
|
||||||
pub struct FileJson {
|
pub struct FileJson {
|
||||||
pub version: u64,
|
pub version: u64,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub variants: HashMap<String, SettingsJson>,
|
pub variants: HashMap<u64, SettingsJson>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FileJson {
|
impl FileJson {
|
||||||
|
@ -45,11 +45,11 @@ impl FileJson {
|
||||||
|
|
||||||
let file = if path.exists() {
|
let file = if path.exists() {
|
||||||
let mut file = Self::open(path)?;
|
let mut file = Self::open(path)?;
|
||||||
file.variants.insert(setting.variant.to_string(), setting);
|
file.variants.insert(setting.variant, setting);
|
||||||
file
|
file
|
||||||
} else {
|
} else {
|
||||||
let mut setting_variants = HashMap::with_capacity(1);
|
let mut setting_variants = HashMap::with_capacity(1);
|
||||||
setting_variants.insert(setting.variant.to_string(), setting);
|
setting_variants.insert(setting.variant, setting);
|
||||||
Self {
|
Self {
|
||||||
version: 0,
|
version: 0,
|
||||||
name: given_name,
|
name: given_name,
|
||||||
|
|
|
@ -20,7 +20,7 @@ impl Default for SettingsJson {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
version: 0,
|
version: 0,
|
||||||
name: crate::consts::DEFAULT_SETTINGS_NAME.to_owned(),
|
name: crate::consts::DEFAULT_SETTINGS_VARIANT_NAME.to_owned(),
|
||||||
variant: 0,
|
variant: 0,
|
||||||
persistent: false,
|
persistent: false,
|
||||||
cpus: Vec::with_capacity(8),
|
cpus: Vec::with_capacity(8),
|
||||||
|
|
|
@ -178,7 +178,7 @@ impl Settings {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_variant<'a>(settings_file: &'a FileJson, variant_id: u64, variant_name: String) -> Result<&'a SettingsJson, SettingError> {
|
pub fn get_variant<'a>(settings_file: &'a FileJson, variant_id: u64, variant_name: String) -> Result<&'a SettingsJson, SettingError> {
|
||||||
if let Some(variant) = settings_file.variants.get(&variant_id.to_string()) {
|
if let Some(variant) = settings_file.variants.get(&variant_id) {
|
||||||
Ok(variant)
|
Ok(variant)
|
||||||
} else {
|
} else {
|
||||||
Err(SettingError {
|
Err(SettingError {
|
||||||
|
|
|
@ -121,8 +121,40 @@ mod generate {
|
||||||
limits: limits_core::json_v2::GenericBatteryLimit::default_for(limits_core::json_v2::BatteryLimitType::SteamDeck),
|
limits: limits_core::json_v2::GenericBatteryLimit::default_for(limits_core::json_v2::BatteryLimitType::SteamDeck),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
let output_file = std::fs::File::create("../limits_override.ron").unwrap();
|
let output_file = std::fs::File::create(format!("../{}", crate::consts::LIMITS_OVERRIDE_FILE)).unwrap();
|
||||||
ron::ser::to_writer_pretty(output_file, &limits, crate::utility::ron_pretty_config()).unwrap();
|
ron::ser::to_writer_pretty(output_file, &limits, crate::utility::ron_pretty_config()).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn generate_default_minimal_save_file() {
|
||||||
|
let mut mini_variants = std::collections::HashMap::with_capacity(2);
|
||||||
|
mini_variants.insert(0, crate::persist::SettingsJson {
|
||||||
|
version: 0,
|
||||||
|
name: crate::consts::DEFAULT_SETTINGS_VARIANT_NAME.to_owned(),
|
||||||
|
variant: 0,
|
||||||
|
persistent: false,
|
||||||
|
cpus: vec![crate::persist::CpuJson::default(); 8],
|
||||||
|
gpu: crate::persist::GpuJson::default(),
|
||||||
|
battery: crate::persist::BatteryJson::default(),
|
||||||
|
provider: None,
|
||||||
|
});
|
||||||
|
mini_variants.insert(42, crate::persist::SettingsJson {
|
||||||
|
version: 0,
|
||||||
|
name: "FortySecondary".to_owned(),
|
||||||
|
variant: 42,
|
||||||
|
persistent: false,
|
||||||
|
cpus: vec![crate::persist::CpuJson::default(); 8],
|
||||||
|
gpu: crate::persist::GpuJson::default(),
|
||||||
|
battery: crate::persist::BatteryJson::default(),
|
||||||
|
provider: None,
|
||||||
|
});
|
||||||
|
let savefile = crate::persist::FileJson {
|
||||||
|
version: 0,
|
||||||
|
name: crate::consts::DEFAULT_SETTINGS_NAME.to_owned(),
|
||||||
|
variants: mini_variants,
|
||||||
|
};
|
||||||
|
let output_file = std::fs::File::create(format!("../{}", crate::consts::DEFAULT_SETTINGS_FILE)).unwrap();
|
||||||
|
ron::ser::to_writer_pretty(output_file, &savefile, crate::utility::ron_pretty_config()).unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
108
default_settings.ron
Normal file
108
default_settings.ron
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
FileJson(
|
||||||
|
version: 0,
|
||||||
|
name: "Main",
|
||||||
|
variants: {
|
||||||
|
0: SettingsJson(
|
||||||
|
version: 0,
|
||||||
|
name: "Primary",
|
||||||
|
variant: 0,
|
||||||
|
persistent: false,
|
||||||
|
cpus: [CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
)],
|
||||||
|
gpu: GpuJson(
|
||||||
|
fast_ppt: None,
|
||||||
|
slow_ppt: None,
|
||||||
|
clock_limits: None,
|
||||||
|
slow_memory: false,
|
||||||
|
),
|
||||||
|
battery: BatteryJson(
|
||||||
|
charge_rate: None,
|
||||||
|
charge_mode: None,
|
||||||
|
events: [],
|
||||||
|
),
|
||||||
|
provider: None,
|
||||||
|
),
|
||||||
|
42: SettingsJson(
|
||||||
|
version: 0,
|
||||||
|
name: "FortySecondary",
|
||||||
|
variant: 42,
|
||||||
|
persistent: false,
|
||||||
|
cpus: [CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
), CpuJson(
|
||||||
|
online: true,
|
||||||
|
clock_limits: None,
|
||||||
|
governor: "schedutil",
|
||||||
|
)],
|
||||||
|
gpu: GpuJson(
|
||||||
|
fast_ppt: None,
|
||||||
|
slow_ppt: None,
|
||||||
|
clock_limits: None,
|
||||||
|
slow_memory: false,
|
||||||
|
),
|
||||||
|
battery: BatteryJson(
|
||||||
|
charge_rate: None,
|
||||||
|
charge_mode: None,
|
||||||
|
events: [],
|
||||||
|
),
|
||||||
|
provider: None,
|
||||||
|
),
|
||||||
|
},
|
||||||
|
)
|
Loading…
Reference in a new issue