From 60dd680c33ce9dd9850717194c8383933e9f3a78 Mon Sep 17 00:00:00 2001 From: Philip Kristoffersen Date: Fri, 24 Sep 2021 23:08:35 +0200 Subject: [PATCH] Create files for configuration --- Cargo.lock | 157 ++++++++++++++++++++++++++++++++++-- Cargo.toml | 3 +- src/egs/mod.rs | 1 + src/egs/settings.rs | 29 +++++++ src/main.rs | 2 + src/settings.rs | 18 +++++ src/steamgriddb/mod.rs | 2 + src/steamgriddb/settings.rs | 16 ++++ 8 files changed, 221 insertions(+), 7 deletions(-) create mode 100644 src/egs/settings.rs create mode 100644 src/settings.rs create mode 100644 src/steamgriddb/mod.rs create mode 100644 src/steamgriddb/settings.rs diff --git a/Cargo.lock b/Cargo.lock index 364a6f2..4cb14d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,21 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "aho-corasick" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +dependencies = [ + "memchr", +] + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + [[package]] name = "ascii" version = "1.0.0" @@ -68,6 +83,22 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "config" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1b9d958c2b1368a663f05538fc1b5975adce1e19f435acceae987aceeeb369" +dependencies = [ + "lazy_static", + "nom 5.1.2", + "rust-ini", + "serde 1.0.130", + "serde-hjson", + "serde_json", + "toml", + "yaml-rust", +] + [[package]] name = "core-foundation" version = "0.9.1" @@ -352,12 +383,31 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lexical-core" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" +dependencies = [ + "arrayvec", + "bitflags", + "cfg-if", + "ryu", + "static_assertions", +] + [[package]] name = "libc" version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" +[[package]] +name = "linked-hash-map" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" + [[package]] name = "lock_api" version = "0.4.5" @@ -440,6 +490,17 @@ dependencies = [ "tempfile", ] +[[package]] +name = "nom" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +dependencies = [ + "lexical-core", + "memchr", + "version_check", +] + [[package]] name = "nom" version = "6.2.1" @@ -483,6 +544,24 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-traits" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" +dependencies = [ + "num-traits 0.2.14", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + [[package]] name = "num_cpus" version = "1.13.0" @@ -660,6 +739,23 @@ dependencies = [ "bitflags", ] +[[package]] +name = "regex" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + [[package]] name = "remove_dir_all" version = "0.5.3" @@ -692,7 +788,7 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", - "serde", + "serde 1.0.130", "serde_json", "serde_urlencoded", "tokio", @@ -704,6 +800,12 @@ dependencies = [ "winreg", ] +[[package]] +name = "rust-ini" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" + [[package]] name = "ryu" version = "1.0.5" @@ -749,6 +851,12 @@ dependencies = [ "libc", ] +[[package]] +name = "serde" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" + [[package]] name = "serde" version = "1.0.130" @@ -758,6 +866,18 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-hjson" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a3a4e0ea8a88553209f6cc6cfe8724ecad22e1acf372793c27d995290fe74f8" +dependencies = [ + "lazy_static", + "num-traits 0.1.43", + "regex", + "serde 0.8.23", +] + [[package]] name = "serde_derive" version = "1.0.130" @@ -777,7 +897,7 @@ checksum = "a7f9e390c27c3c0ce8bc5d725f6e4d30a29d26659494aa4b17535f7522c5c950" dependencies = [ "itoa", "ryu", - "serde", + "serde 1.0.130", ] [[package]] @@ -789,7 +909,7 @@ dependencies = [ "form_urlencoded", "itoa", "ryu", - "serde", + "serde 1.0.130", ] [[package]] @@ -823,12 +943,19 @@ dependencies = [ "winapi", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "steam_shortcuts_sync" version = "0.1.0" dependencies = [ + "config", "reqwest", - "serde", + "serde 1.0.130", "serde_json", "steam_shortcuts_util", "steamgriddb_api", @@ -854,7 +981,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49989dd0a9cb16bc02ea1939b513e310fcdbc31d52981d8c70bcb86a23b12d5f" dependencies = [ "reqwest", - "serde", + "serde 1.0.130", "serde_json", "urlencoding", ] @@ -960,6 +1087,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde 1.0.130", +] + [[package]] name = "tower-service" version = "0.3.1" @@ -1066,7 +1202,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce9b1b516211d33767048e5d47fa2a381ed8b76fc48d2ce4aa39877f9f183e0" dependencies = [ "cfg-if", - "serde", + "serde 1.0.130", "serde_json", "wasm-bindgen-macro", ] @@ -1173,3 +1309,12 @@ name = "wyz" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] diff --git a/Cargo.toml b/Cargo.toml index 1a8bd7e..e871be7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,4 +11,5 @@ steamgriddb_api="0.2,0" serde={version="*", features=["derive"]} serde_json="*" tokio = { version = "1.11.0", features = ["full"] } -reqwest = { version = "*", features = ["default"] } \ No newline at end of file +reqwest = { version = "*", features = ["default"] } +config = "*" \ No newline at end of file diff --git a/src/egs/mod.rs b/src/egs/mod.rs index 4301a6e..30bc729 100644 --- a/src/egs/mod.rs +++ b/src/egs/mod.rs @@ -1,4 +1,5 @@ mod get_manifests; mod manifest_item; +mod settings; pub use manifest_item::*; pub use get_manifests::get_egs_manifests; \ No newline at end of file diff --git a/src/egs/settings.rs b/src/egs/settings.rs new file mode 100644 index 0000000..98303a9 --- /dev/null +++ b/src/egs/settings.rs @@ -0,0 +1,29 @@ +use serde::Deserialize; + +#[derive(Debug, Deserialize)] +struct EpicGamesLauncher { + enabled: bool, + location: Option, +} + +impl Default for EpicGamesLauncher { + fn default() -> Self { + + // On windows + // Even if no path is given, we can try to guess, so lets enable by default + #[cfg(target_os = "windows")] + let enabled = true; + + + // On linux + // We can notguess, so lets not enable by default + #[cfg(target_os = "linux")] + let enabled = false; + + EpicGamesLauncher { + enabled, + location: None, + } + } +} + diff --git a/src/main.rs b/src/main.rs index fe8ddbf..905dff3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,6 +9,8 @@ use std::{ mod cached_search; mod egs; mod legendary; +mod steamgriddb; + use crate::legendary::get_legendary_games; use egs::{get_egs_manifests, ManifestItem}; use std::error::Error; diff --git a/src/settings.rs b/src/settings.rs new file mode 100644 index 0000000..5f0ce22 --- /dev/null +++ b/src/settings.rs @@ -0,0 +1,18 @@ +use std::env; +use config::{ConfigError, Config, File, Environment}; + + +#[derive(Debug, Deserialize)] +pub struct Settings { + debug: bool, + database: EpicGamesLauncher, +} + +//https://github.com/JosefNemec/Playnite/tree/master/source/Plugins/OriginLibrary +//https://github.com/JosefNemec/Playnite/blob/master/source/Plugins/OriginLibrary/Origin.cs#L109 +impl Settings { + + pub fn new() -> Result { + + } +} \ No newline at end of file diff --git a/src/steamgriddb/mod.rs b/src/steamgriddb/mod.rs new file mode 100644 index 0000000..1bd4528 --- /dev/null +++ b/src/steamgriddb/mod.rs @@ -0,0 +1,2 @@ +mod settings; +pub use settings::*; \ No newline at end of file diff --git a/src/steamgriddb/settings.rs b/src/steamgriddb/settings.rs new file mode 100644 index 0000000..58950b7 --- /dev/null +++ b/src/steamgriddb/settings.rs @@ -0,0 +1,16 @@ +use serde::Deserialize; + +#[derive(Debug, Deserialize)] +pub struct SteamGridDb { + pub enabled: bool, + pub auth_key: Option, +} + +impl Default for SteamGridDb { + fn default() -> Self { + Self { + enabled: true, + auth_key: None, + } + } +}