From c4d3374721032e402a92b5ef63b84bcb8c988b55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeromos=20Kov=C3=A1cs?= Date: Tue, 14 Jan 2025 12:44:11 +0100 Subject: [PATCH 1/2] refactor: use env feature of cargo --- Cargo.lock | 103 ++++++++++++++++++++++++----------------------- Cargo.toml | 2 +- src/elevation.rs | 12 +----- src/lib.rs | 2 +- src/main.rs | 6 +-- 5 files changed, 59 insertions(+), 66 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 010beac..5eeee30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -19,35 +19,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys", ] @@ -62,9 +63,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "byteorder" @@ -114,15 +115,15 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -139,15 +140,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "csv" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" dependencies = [ "csv-core", "itoa", @@ -238,15 +239,15 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "memchr" @@ -270,6 +271,12 @@ dependencies = [ "libm", ] +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + [[package]] name = "powerfmt" version = "0.2.0" @@ -278,18 +285,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -322,18 +329,18 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", @@ -343,8 +350,7 @@ dependencies = [ [[package]] name = "srtm_reader" version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a166c04ff75fa6d4f629a19bd1b5a979356bf6094f853ce268aa4ae0be2d205" +source = "git+https://github.com/jeromeschmied/srtm_reader#84e934c5ec46370e9c43b98f9f7c253b2f4c1ce5" dependencies = [ "byteorder", ] @@ -357,9 +363,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.77" +version = "2.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" dependencies = [ "proc-macro2", "quote", @@ -368,18 +374,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -419,9 +425,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "utf8parse" @@ -431,9 +437,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "windows-sys" -version = "0.52.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ "windows-targets", ] @@ -504,11 +510,6 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "xml-rs" -version = "0.8.22" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" - -[[patch.unused]] -name = "srtm_reader" -version = "0.3.0" -source = "git+https://github.com/jeromeschmied/srtm_reader#22cf10e00f7c58da76847c619791ec97d887da36" +checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" diff --git a/Cargo.toml b/Cargo.toml index b1d96a1..e02c735 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ license = "MIT" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -clap = { version = "4.5.26", features = ["derive"] } +clap = { version = "4.5.26", features = ["derive", "env"] } fit_file = "0.6.0" geo-types = "0.7.14" gpx = "0.10.0" diff --git a/src/elevation.rs b/src/elevation.rs index 1bc3904..2cac8d1 100644 --- a/src/elevation.rs +++ b/src/elevation.rs @@ -22,21 +22,13 @@ pub fn needed_tile_coords(wps: &[Waypoint]) -> Vec<(i32, i32)> { // TODO: docs pub fn read_needed_tiles( needs: &[(i32, i32)], - elev_data_dir: Option>, + elev_data_dir: impl AsRef, ) -> Vec { if needs.is_empty() { return vec![]; } + let elev_data_dir = elev_data_dir.as_ref(); - let elev_data_dir = if let Some(arg_data_dir) = &elev_data_dir { - arg_data_dir.as_ref() - } else if let Some(env_data_dir) = option_env!("ELEV_DATA_DIR") { - Path::new(env_data_dir) - } else if let Some(env_data_dir) = option_env!("elev_data_dir") { - Path::new(env_data_dir) - } else { - panic!("no elevation data dir is passed as an arg nor set as an environment variable: ELEV_DATA_DIR"); - }; needs .par_iter() .map(|c| srtm_reader::get_filename(*c)) diff --git a/src/lib.rs b/src/lib.rs index c3130d5..4413b96 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -140,7 +140,7 @@ impl Fit { #[cfg(feature = "elevation")] /// add elevation data to the `fit` file, using srtm data from `elev_data_dir` - pub fn add_elev(fit: &mut Fit, elev_data_dir: Option>) { + pub fn add_elev(fit: &mut Fit, elev_data_dir: impl AsRef) { use elevation::*; let needed_tile_coords = needed_tile_coords(&fit.track_segment.points); let needed_tiles = read_needed_tiles(&needed_tile_coords, elev_data_dir); diff --git a/src/main.rs b/src/main.rs index a8a4eda..e926c06 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,10 +8,10 @@ use std::path::PathBuf; struct Args { pub files: Vec, #[cfg(feature = "elevation")] - #[arg(short = 'd', long)] - pub elev_data_dir: Option, + #[arg(short = 'd', long, env)] + pub elev_data_dir: PathBuf, #[cfg(feature = "elevation")] - #[arg(short, long, default_value_t = false)] + #[arg(short, long, default_value_t = false, requires = "elev_data_dir")] pub add_elevation: bool, #[arg(short, long, default_value_t = false)] pub overwrite: bool, From 275c706f47ca6ae694f33c9e1a50fe554ef3a5e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeromos=20Kov=C3=A1cs?= Date: Tue, 14 Jan 2025 12:45:02 +0100 Subject: [PATCH 2/2] docs: update --- src/elevation.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elevation.rs b/src/elevation.rs index 2cac8d1..40b7171 100644 --- a/src/elevation.rs +++ b/src/elevation.rs @@ -71,7 +71,7 @@ pub fn get_all_elev_data<'a>( /// use fit2gpx::elevation::*; /// /// let mut fit = fit2gpx::Fit::from_file("evening walk.gpx").unwrap(); -/// let elev_data_dir = Some("/home/me/Downloads/srtm_data"); +/// let elev_data_dir = "/home/me/Downloads/srtm_data"; /// let needed_tile_coords = needed_tile_coords(&fit.track_segment.points); /// let needed_tiles = read_needed_tiles(&needed_tile_coords, elev_data_dir); /// let all_elev_data = get_all_elev_data(&needed_tile_coords, &needed_tiles);