From dcbd44a752891ea3c52c49046093ec67ed392127 Mon Sep 17 00:00:00 2001 From: Sebastian Hugentobler Date: Thu, 4 May 2017 16:19:06 +0200 Subject: [PATCH 1/4] use seperate info files --- Cargo.lock | 2 +- src/configfiles.rs | 27 +++++++++++++ src/gog.rs | 97 ++++++++++++++++++++++++---------------------- src/http.rs | 6 +-- src/models.rs | 43 ++++++++++++++++++++ 5 files changed, 125 insertions(+), 50 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aba6141..b4de2ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ [root] name = "gog-sync" -version = "0.2.3" +version = "0.2.4" dependencies = [ "chrono 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.22.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/src/configfiles.rs b/src/configfiles.rs index 2915a32..1d9123b 100644 --- a/src/configfiles.rs +++ b/src/configfiles.rs @@ -13,6 +13,7 @@ use std; use std::io::{Read, Write}; use xdg; use xdg::BaseDirectories; +use std::path::Path; /// Wraps `std::io::Error` and `serde_json::Error`. #[derive(Debug)] @@ -116,4 +117,30 @@ impl ConfigFiles { Err(error) => Err(ConfigError::IOError(error)), } } + + pub fn save_to_path(path: &Path, content: &T) -> Result<(), ConfigError> + where T: Serialize + { + let content_toml = serde_json::to_string_pretty(content)?; + + let mut config_file = File::create(path)?; + match config_file.write_all(content_toml.as_bytes()) { + Ok(_) => Ok(()), + Err(error) => Err(ConfigError::IOError(error)), + } + } + + pub fn load_from_path(path: &Path) -> Result + where T: Deserialize + { + let mut file = File::open(path)?; + + let mut contents = String::new(); + file.read_to_string(&mut contents)?; + + match serde_json::from_str(contents.as_str()) { + Ok(value) => Ok(value), + Err(error) => Err(ConfigError::SerdeJsonError(error)), + } + } } diff --git a/src/gog.rs b/src/gog.rs index 1fe3075..cb9b137 100644 --- a/src/gog.rs +++ b/src/gog.rs @@ -13,7 +13,7 @@ use configfiles::{ConfigFiles, ConfigError}; use http::{Http, HttpError}; use models; -use models::{Token, Content, Data, Config}; +use models::{Token, Content, ContentInfo, DataInfo, ExtraInfo, Data}; use serde_json; use serde_json::Value; use std::collections::HashMap; @@ -130,35 +130,9 @@ impl<'a> Gog<'a> { skip_movies: bool, skip_games: bool) -> Result<(), GogError> { - let configfiles = ConfigFiles::new(); - let mut config: Config = match configfiles.load("config.json") { - Ok(value) => value, - Err(_) => { - error!("Configuration error, generating new one"); - - Config { - game_storage: String::from(storage_path), - movie_storage: String::from(storage_path_movies), - content: HashMap::new(), - data: HashMap::new(), - extras: HashMap::new(), - os_filters: os_filters.clone(), - language_filters: language_filters.clone(), - resolution_filters: resolution_filters.clone(), - skip_movies: skip_movies, - skip_games: skip_games, - } - } - }; - let content_ids = self.get_content_ids()?; for content_id in content_ids { - let content_hash_saved = match config.content.get(&content_id.to_string()) { - Some(value) => value.clone(), - None => u64::min_value(), - }; - let content = match self.get_content(content_id, &os_filters, &language_filters, @@ -170,6 +144,20 @@ impl<'a> Gog<'a> { } }; + let content_root = if content.is_movie { + Path::new(storage_path_movies).join(&content.title) + } else { + Path::new(storage_path).join(&content.title) + }; + + let content_info_path = Path::new(&content_root).join("info.json"); + + let content_info_saved = + match ConfigFiles::load_from_path::(&content_info_path) { + Ok(value) => value, + Err(_) => ContentInfo::new(), + }; + if (content.is_movie && skip_movies) || (!content.is_movie && skip_games) { info!("filtering {}", content.title); continue; @@ -177,18 +165,23 @@ impl<'a> Gog<'a> { let content_hash = models::get_hash(&content); - if content_hash_saved == content_hash { + if content_info_saved.hash == content_hash { info!("{} already up to date.", &content.title); continue; } - let content_root = if content.is_movie { - Path::new(storage_path_movies).join(&content.title) - } else { - Path::new(storage_path).join(&content.title) + fs::create_dir_all(&content_root)?; + + let mut content_info = ContentInfo { + hash: content_hash, + id: content_id, + title: content.title.clone(), + cd_keys: content.cd_keys.clone(), + data: HashMap::new(), + extras: HashMap::new(), }; - fs::create_dir_all(&content_root)?; + ConfigFiles::save_to_path(&content_info_path, &content_info)?; let key_root = content_root.join("keys"); @@ -203,10 +196,11 @@ impl<'a> Gog<'a> { } for data in content.data { - let data_hash_saved = match config.data.get(&data.manual_url) { - Some(value) => value.clone(), + let data_hash_saved = match content_info_saved.data.get(&content_id.to_string()) { + Some(value) => value.hash, None => u64::min_value(), }; + let data_hash = models::get_hash(&data); if data_hash_saved == data_hash { @@ -220,15 +214,22 @@ impl<'a> Gog<'a> { let data_uri = format!("https://embed.gog.com{}", data.manual_url); info!("downloading {} for {}...", &data.manual_url, &content.title); - self.http_client.download(data_uri.as_str(), &data_root)?; + let filename = self.http_client.download(data_uri.as_str(), &data_root)?; - config.data.insert(data.manual_url, data_hash); - configfiles.save("config.json", &config)?; + let data_info = DataInfo { + hash: data_hash, + filename: filename, + language: data.language, + }; + + content_info.data.insert(data.manual_url.clone(), data_info); + ConfigFiles::save_to_path(&content_info_path, &content_info)?; } for extra in content.extras { - let extra_hash_saved = match config.extras.get(&extra.manual_url) { - Some(value) => value.clone(), + let extra_hash_saved = match content_info_saved.extras + .get(&content_id.to_string()) { + Some(value) => value.hash, None => u64::min_value(), }; @@ -242,14 +243,17 @@ impl<'a> Gog<'a> { let extra_uri = format!("https://embed.gog.com{}", extra.manual_url); info!("downloading {} for {}...", &extra.name, &content.title); - self.http_client.download(extra_uri.as_str(), &content_root)?; + let filename = self.http_client.download(extra_uri.as_str(), &content_root)?; - config.extras.insert(extra.manual_url, extra_hash); - configfiles.save("config.json", &config)?; + let extra_info = ExtraInfo { + hash: extra_hash, + filename: filename, + name: extra.name, + }; + + content_info.extras.insert(extra.manual_url.clone(), extra_info); + ConfigFiles::save_to_path(&content_info_path, &content_info)?; } - - config.content.insert(content_id.to_string(), content_hash); - configfiles.save("config.json", &config)?; } Ok(()) @@ -390,6 +394,7 @@ impl<'a> Gog<'a> { debug!("found {:?}", &content_raw); let mut content: Content = serde_json::from_str(&response)?; + content.id = content_id; let downloads = &content_raw["downloads"]; diff --git a/src/http.rs b/src/http.rs index a4b40ca..61335ff 100644 --- a/src/http.rs +++ b/src/http.rs @@ -131,7 +131,7 @@ impl Http { /// Download a file to the specified folder without creating the folder. /// - /// The filename is taken from the last URI segment. + /// The filename is taken from the last URI segment and returned in the result. /// # Example /// ``` /// use http::Http; @@ -145,7 +145,7 @@ impl Http { pub fn download(&mut self, download_uri: &str, download_dir: &PathBuf) - -> Result<(), HttpError> { + -> Result { let download_path_tmp = Path::new(download_dir.as_os_str()).join(".progress"); let mut file_download = File::create(&download_path_tmp)?; @@ -185,6 +185,6 @@ impl Http { Err(error) => Err(HttpError::IOError(error)), }?; - Ok(()) + Ok(file_name.to_owned()) } } diff --git a/src/models.rs b/src/models.rs index b4e68ca..f6e0989 100644 --- a/src/models.rs +++ b/src/models.rs @@ -84,6 +84,8 @@ impl Config { #[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Content { + #[serde(skip_deserializing)] + pub id: u64, pub title: String, #[serde(skip_deserializing)] #[serde(rename(deserialize = "cdKey"))] @@ -101,6 +103,47 @@ impl fmt::Display for Content { } } +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ContentInfo { + #[serde(skip_deserializing)] + pub id: u64, + pub hash: u64, + pub title: String, + pub cd_keys: BTreeMap, + pub data: HashMap, + pub extras: HashMap, +} + +impl ContentInfo { + pub fn new() -> ContentInfo { + ContentInfo { + id: 0, + hash: 0, + title: String::new(), + cd_keys: BTreeMap::new(), + data: HashMap::new(), + extras: HashMap::new(), + } + } +} + +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct DataInfo { + pub hash: u64, + pub filename: String, + pub language: String, +} + +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ExtraInfo { + pub hash: u64, + pub filename: String, + pub name: String, +} + #[derive(Hash)] #[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")] From 4b322b500f347f0f55952f9efbec7f21aeeec021 Mon Sep 17 00:00:00 2001 From: Sebastian Hugentobler Date: Thu, 4 May 2017 16:21:07 +0200 Subject: [PATCH 2/4] refactor global config model --- src/models.rs | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/models.rs b/src/models.rs index f6e0989..4a78471 100644 --- a/src/models.rs +++ b/src/models.rs @@ -30,6 +30,10 @@ fn timestamp() -> i64 { UTC::now().timestamp() } +fn default_list() -> Vec { + Vec::new() +} + #[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Config { @@ -37,12 +41,6 @@ pub struct Config { pub game_storage: String, #[serde(default)] pub movie_storage: String, - #[serde(default = "default_map")] - pub content: HashMap, - #[serde(default = "default_map")] - pub data: HashMap, - #[serde(default = "default_map")] - pub extras: HashMap, #[serde(default = "default_list")] pub os_filters: Vec, #[serde(default = "default_list")] @@ -55,22 +53,11 @@ pub struct Config { pub skip_games: bool, } -fn default_map() -> HashMap { - HashMap::new() -} - -fn default_list() -> Vec { - Vec::new() -} - impl Config { pub fn new() -> Config { Config { game_storage: String::from("."), movie_storage: String::from("."), - content: HashMap::new(), - data: HashMap::new(), - extras: HashMap::new(), os_filters: Vec::new(), language_filters: Vec::new(), resolution_filters: Vec::new(), From 435e5ba3145250d0aae71f4086085d175a094c8b Mon Sep 17 00:00:00 2001 From: Sebastian Hugentobler Date: Thu, 4 May 2017 16:26:58 +0200 Subject: [PATCH 3/4] update cargo dependencies --- Cargo.lock | 120 ++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b4de2ca..947db39 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,14 +2,14 @@ name = "gog-sync" version = "0.2.4" dependencies = [ - "chrono 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.22.0 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.23.3 (registry+https://github.com/rust-lang/crates.io-index)", "curl 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -33,34 +33,34 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bitflags" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "chrono" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "clap" -version = "2.22.0" +version = "2.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "term_size 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "term_size 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "vec_map 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -71,22 +71,22 @@ name = "curl" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "curl-sys 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-probe 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + "curl-sys 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-probe 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "curl-sys" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gcc 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "libz-sys 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -121,7 +121,7 @@ dependencies = [ [[package]] name = "idna" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -145,7 +145,7 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.21" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -154,7 +154,7 @@ version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gcc 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -173,7 +173,7 @@ name = "memchr" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -181,14 +181,14 @@ name = "num" version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", "num-iter 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-integer" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -199,7 +199,7 @@ name = "num-iter" version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -210,17 +210,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-probe" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-sys" -version = "0.9.9" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gcc 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -259,36 +259,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "0.9.11" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_codegen_internals" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "syn 0.11.9 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "0.9.11" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_codegen_internals 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.11.9 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_codegen_internals 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -298,7 +298,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "syn" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -316,11 +316,11 @@ dependencies = [ [[package]] name = "term_size" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -330,7 +330,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -343,11 +343,11 @@ dependencies = [ [[package]] name = "time" -version = "0.1.36" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -385,7 +385,7 @@ name = "url" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "idna 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -427,45 +427,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66" "checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" "checksum atty 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d912da0db7fa85514874458ca3651fe2cddace8d0b0505571dbdcd41ab490159" -"checksum bitflags 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e1ab483fc81a8143faa7203c4a3c02888ebd1a782e37e41fa34753ba9a162" -"checksum chrono 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "158b0bd7d75cbb6bf9c25967a48a2e9f77da95876b858eadfabaa99cd069de6e" -"checksum clap 2.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "875f4f161166a71c4b7bf2c05f46d26c30d8b9052c16a6bdd3171ddf03848cbe" +"checksum bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1370e9fc2a6ae53aea8b7a5110edbd08836ed87c88736dfabccade1c2b44bff4" +"checksum chrono 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d9123be86fd2a8f627836c235ecdf331fdd067ecf7ac05aa1a68fbcf2429f056" +"checksum clap 2.23.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f57e9b63057a545ad2ecd773ea61e49422ed1b1d63d74d5da5ecaee55b3396cd" "checksum curl 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c90e1240ef340dd4027ade439e5c7c2064dd9dc652682117bd50d1486a3add7b" -"checksum curl-sys 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d909dc402ae80b6f7b0118c039203436061b9d9a3ca5d2c2546d93e0a61aaa" +"checksum curl-sys 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "23e7e544dc5e1ba42c4a4a678bd47985e84b9c3f4d3404c29700622a029db9c3" "checksum dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "80c8b71fd71146990a9742fc06dcbbde19161a267e0ad4e572c35162f4578c90" "checksum env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "15abd780e45b3ea4f76b4e9a26ff4843258dd8a3eed2775a0e7368c2e7936c2f" "checksum gcc 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)" = "40899336fb50db0c78710f53e87afc54d8c7266fb76262fecc78ca1a7f09deae" "checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518" -"checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11" +"checksum idna 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6ac85ec3f80c8e4e99d9325521337e14ec7555c458a14e377d189659a427f375" "checksum itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eb2f404fbc66fd9aac13e998248505e7ecb2ad8e44ab6388684c5fb11c6c251c" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "88ee81885f9f04bff991e306fea7c1c60a5f0f9e409e99f6b40e3311a3363135" +"checksum libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)" = "babb8281da88cba992fa1f4ddec7d63ed96280a1a53ec9b919fd37b53d71e502" "checksum libz-sys 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e5ee912a45d686d393d5ac87fac15ba0ba18daae14e8e7543c63ebf7fb7e970c" "checksum log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5141eca02775a762cc6cd564d8d2c50f67c0ea3a372cbf1c51592b3e029e10ad" "checksum matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efd7622e3022e1a6eaa602c4cea8912254e5582c9c692e9167714182244801b1" "checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20" "checksum num 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "98b15ba84e910ea7a1973bccd3df7b31ae282bf9d8bd2897779950c9b8303d40" -"checksum num-integer 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)" = "21e4df1098d1d797d27ef0c69c178c3fab64941559b290fcae198e0825c9c8b5" +"checksum num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1a4bf6f9174aa5783a9b4cc892cacd11aebad6c69ad027a0b65c6ca5f8aa37" "checksum num-iter 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d1891bd7b936f12349b7d1403761c8a0b85a18b148e9da4429d5d102c1a41e" "checksum num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "e1cbfa3781f3fe73dc05321bed52a06d2d491eaa764c52335cf4399f046ece99" -"checksum openssl-probe 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "756d49c8424483a3df3b5d735112b4da22109ced9a8294f1f5cdf80fb3810919" -"checksum openssl-sys 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)" = "376c5c6084e5ea95eea9c3280801e46d0dcf51251d4f01b747e044fb64d1fb31" +"checksum openssl-probe 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d98df0270d404ccd3c050a41d579c52d1db15375168bb3471e04ec0f5f378daf" +"checksum openssl-sys 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e5e0fd64cb2fa018ed2e7b2c8d9649114fe5da957c9a67432957f01e5dcc82e9" "checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum redox_syscall 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "29dbdfd4b9df8ab31dec47c6087b7b13cbf4a776f335e4de8efba8288dda075b" "checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f" "checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957" -"checksum serde 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)" = "a702319c807c016e51f672e5c77d6f0b46afddd744b5e437d6b8436b888b458f" -"checksum serde_codegen_internals 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d52006899f910528a10631e5b727973fe668f3228109d1707ccf5bad5490b6e" -"checksum serde_derive 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f15ea24bd037b2d64646b4d934fa99c649be66e3f7b29fb595a5543b212b1452" -"checksum serde_json 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)" = "dbc45439552eb8fb86907a2c41c1fd0ef97458efb87ff7f878db466eb581824e" +"checksum serde 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)" = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af" +"checksum serde_codegen_internals 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bc888bd283bd2420b16ad0d860e35ad8acb21941180a83a189bb2046f9d00400" +"checksum serde_derive 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)" = "978fd866f4d4872084a81ccc35e275158351d3b9fe620074e7d7504b816b74ba" +"checksum serde_json 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ad8bcf487be7d2e15d3d543f04312de991d631cfe1b43ea0ade69e6a8a5b16a1" "checksum strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694" -"checksum syn 0.11.9 (registry+https://github.com/rust-lang/crates.io-index)" = "480c834701caba3548aa991e54677281be3a5414a9d09ddbdf4ed74a569a9d19" +"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -"checksum term_size 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "07b6c1ac5b3fffd75073276bca1ceed01f67a28537097a2a9539e116e50fb21a" +"checksum term_size 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2b6b55df3198cc93372e85dd2ed817f0e38ce8cc0f22eb32391bfad9c4bf209" "checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03" "checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5" -"checksum time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "211b63c112206356ef1ff9b19355f43740fc3f85960c598a93d3a3d3ba7beade" +"checksum time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "ffd7ccbf969a892bf83f1e441126968a07a3941c24ff522a26af9f9f4585d1a3" "checksum unicode-bidi 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d3a078ebdd62c0e71a709c3d53d2af693fe09fe93fbff8344aebe289b78f9032" "checksum unicode-normalization 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e28fa37426fceeb5cf8f41ee273faa7c82c47dc8fba5853402841e665fcd86ff" "checksum unicode-segmentation 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18127285758f0e2c6cf325bb3f3d138a12fee27de4f23e146cd6a179f26c2cf3" From b4630b7767a673a352443bb64aac5914f1e808ad Mon Sep 17 00:00:00 2001 From: Sebastian Hugentobler Date: Thu, 4 May 2017 16:29:31 +0200 Subject: [PATCH 4/4] push version --- CHANGELOG.md | 3 +++ Cargo.toml | 2 +- README.md | 9 --------- src/main.rs | 2 +- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8563eb1..dae0940 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.3.0 (2017-05-04) +- move hashes and content info into seperate files as to not clutter up the main config file. + ## 0.2.4 (2017-03-23) - fix a bug in serial key parsing diff --git a/Cargo.toml b/Cargo.toml index fba5b70..451cb3a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gog-sync" -version = "0.2.4" +version = "0.3.0" authors = ["Sebastian Hugentobler "] description = "Synchronizes a GOG library with a local folder." documentation = "https://docs.rs/crate/gog-sync" diff --git a/README.md b/README.md index 44c1aab..56227a4 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,6 @@ A bare configuration with default values before first use: { "gameStorage": ".", "movieStorage": ".", - "content": {}, - "data": {}, - "extras": {}, "osFilters": [], "languageFilters": [], "skipMovies": false, @@ -43,9 +40,6 @@ A bare configuration with default values before first use: - *gameStorage*: Where to save games - *movieStorage*: Where to save movies -- *content*: A map, content id => hash -- *data*: A map, data url => hash -- *extras*: A map, extra url => hash - *osFilters*: An array of operating systems. If it is not empty, game data is limited to the ones in the list. - *languageFilters*: An array of languages. If it is not empty, game data is limited to the ones in the list. - *resolutionFilters*: An array of resolutions. If it is not empty, movie data is limited to the ones in the list. @@ -66,9 +60,6 @@ An incomplete list of resolutions on gog: - `1080p` - `4k` -You should have no need of changing `content`, `data` or `extras`, as these are -used to determine whether specific content is up to date. - # Usage If you want to see the information log while running set `RUST_LOG=info`. diff --git a/src/main.rs b/src/main.rs index 6cf428b..8fb6eb6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,7 +28,7 @@ fn main() { env_logger::init().unwrap(); let matches = App::new("Gog Synchronizer") - .version("0.2.4") + .version("0.3.0") .author("Sebastian Hugentobler ") .about("Synchronizes your gog library to a local folder.") .arg(Arg::with_name("game-storage")