From a14fa588ef3d81d3b77c7664a9fab15636e05ae4 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Fri, 15 Nov 2024 12:07:54 -0800 Subject: [PATCH 1/7] bump: trimothy 0.5 misc: reduce section name allocations unit: test section name deserialization --- Cargo.toml | 2 +- src/parse/cargo.rs | 42 +++++++++++++++++++++++++++++++++++++----- src/parse/util.rs | 31 ++++--------------------------- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 66eab6e..ebe4b2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -75,7 +75,7 @@ adbyss_psl = "0.15.*" dactyl = "0.7.4" fyi_msg = "1.2.*" oxford_join = "0.4.*" -trimothy = "0.3.*" +trimothy = "0.5.*" utc2k = "0.11.*" write_atomic = "0.5.*" diff --git a/src/parse/cargo.rs b/src/parse/cargo.rs index af9e84f..161c287 100644 --- a/src/parse/cargo.rs +++ b/src/parse/cargo.rs @@ -43,7 +43,6 @@ use super::{ CargoMetadata, }, }; -use trimothy::NormalizeWhitespace; use url::Url; @@ -1174,14 +1173,33 @@ where D: Deserializer<'de> { /// This will return an error if a string is present but empty. fn deserialize_section_name<'de, D>(deserializer: D) -> Result where D: Deserializer<'de> { - let tmp = ::deserialize(deserializer)?; - let mut out: String = tmp.normalized_control_and_whitespace() - .flat_map(char::to_uppercase) - .collect(); + use trimothy::TrimNormal; + let mut out = ::deserialize(deserializer)?; + out.retain(|c| c.is_ascii_whitespace() || ! c.is_control()); + out.make_ascii_uppercase(); + out = out.trim_and_normalize(); + + // Add a trailing colon to unpunctuated names. let last = out.chars().last() .ok_or_else(|| serde::de::Error::custom("value cannot be empty"))?; if ! last.is_ascii_punctuation() { out.push(':'); } + + // Lowercase unicode requires char-by-char replacement, but if we work + // backwards we can avoid retreading the same ground. + let mut end = out.len(); + let mut found = '?'; + while let Some(pos) = out[..end].rfind(|c: char| + if c.is_lowercase() { + found = c; + true + } + else { false } + ) { + out.replace_range(pos..pos + found.len_utf8(), &found.to_uppercase().to_string()); + end = pos; + } + Ok(out) } @@ -1290,4 +1308,18 @@ mod test { let raw = RawValue::from_string(r#"{"default": ["foo"], "bar": null}"#.to_owned()).unwrap(); assert!(deserialize_features(&raw)); } + + #[test] + fn t_deserialize_section_name() { + for (raw, expected) in [ + (" hello world ", Some("HELLO WORLD:")), + ("\t\thello\t\nworld. ", Some("HELLO WORLD.")), + ("\t\tBjörk\u{3000}\t\nTime:", Some("BJÖRK TIME:")), + ("\t\t", None), + ] { + let raw = serde_json::to_string(raw).unwrap(); + let raw = RawValue::from_string(raw).unwrap(); + assert_eq!(deserialize_section_name(&*raw).ok().as_deref(), expected); + } + } } diff --git a/src/parse/util.rs b/src/parse/util.rs index 90d4765..9299a08 100644 --- a/src/parse/util.rs +++ b/src/parse/util.rs @@ -25,7 +25,7 @@ use std::{ sync::OnceLock, }; use trimothy::{ - NormalizeWhitespace, + TrimNormal, TrimMut, }; @@ -238,36 +238,13 @@ where D: Deserializer<'de> { ) } +#[inline] /// # Normalize String. /// /// Compact whitespace and strip control characters. -/// -/// This proceeds under the assumption that most normalization can be achieved -/// "inline" via `retain`, but if substitution is required it will rebuild the -/// string char-by-char. pub(super) fn normalize_string(raw: &mut String) { - let mut ws = true; - let mut rebuild = false; - raw.retain(|c: char| - if c.is_whitespace() { - if ws { false } - else { - ws = true; - if c != ' ' { rebuild = true; } - true - } - } - else if c.is_control() { false } - else { - ws = false; - true - } - ); - - // We encountered something requiring more than a strip; rebuild! - if rebuild { *raw = raw.normalized_whitespace().collect(); } - // Just trim the end and we're good to go! - else { raw.trim_end_mut(); } + raw.retain(|c: char| c.is_ascii_whitespace() || ! c.is_control()); + raw.trim_and_normalize(); } From d41ab14c46cd7fac92e13e65f6bae009e4e57f7e Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 21 Nov 2024 23:43:23 -0800 Subject: [PATCH 2/7] lints --- src/bash.rs | 22 +++++++++++----------- src/credits.rs | 4 ++-- src/main.rs | 6 +++--- src/man.rs | 12 ++++++------ src/parse/cargo.rs | 11 +++++------ src/parse/mod.rs | 4 ++-- src/parse/pkg.rs | 2 +- 7 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/bash.rs b/src/bash.rs index 6f98911..41a604f 100644 --- a/src/bash.rs +++ b/src/bash.rs @@ -33,7 +33,7 @@ pub(super) struct BashWriter<'a> { subcommands: Vec>, } -impl<'a> fmt::Display for BashWriter<'a> { +impl fmt::Display for BashWriter<'_> { /// # Write Completions! /// /// This method outputs the _entire_ contents of the completions file. It @@ -135,7 +135,7 @@ impl<'a> TryFrom<&'a Manifest> for BashWriter<'a> { } } -impl<'a> BashWriter<'a> { +impl BashWriter<'_> { /// # Main Command. /// /// We store the primary and subcommands together because they mostly work @@ -196,7 +196,7 @@ impl<'a> BashWriter<'a> { /// a single `write!` pattern. struct ChooserCase<'a>(&'a str, &'a str); -impl<'a> fmt::Display for ChooserCase<'a> { +impl fmt::Display for ChooserCase<'_> { /// # Write the Case. fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { writeln!(f, "\ @@ -226,7 +226,7 @@ impl<'a> From<&'a Subcommand<'a>> for ChooserCase<'a> { /// `write!` pattern. struct SubcmdCase<'a>(&'a str); -impl<'a> fmt::Display for SubcmdCase<'a> { +impl fmt::Display for SubcmdCase<'_> { /// # Write Case. fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { writeln!(f, "\ @@ -263,7 +263,7 @@ struct Key<'a> { flags: u8, } -impl<'a> fmt::Display for Key<'a> { +impl fmt::Display for Key<'_> { /// # Write Conditions. /// /// This generates code to add the key(s) to the completion matcher for a @@ -329,7 +329,7 @@ impl<'a> From<&'a OptionFlag> for Key<'a> { } } -impl<'a> Key<'a> { +impl Key<'_> { /// # Flag: Allow Duplicates? const FLAG_DUPLICATE: u8 = 0b0001; @@ -366,7 +366,7 @@ struct Subcommand<'a> { fname: String, } -impl<'a> fmt::Display for Subcommand<'a> { +impl fmt::Display for Subcommand<'_> { #[inline] /// # Write Completion Method. fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { @@ -413,19 +413,19 @@ impl<'a> From<&'a crate::Subcommand> for Subcommand<'a> { } } -impl<'a> Eq for Subcommand<'a> {} +impl Eq for Subcommand<'_> {} -impl<'a> Ord for Subcommand<'a> { +impl Ord for Subcommand<'_> { #[inline] fn cmp(&self, other: &Self) -> Ordering { self.fname.cmp(&other.fname) } } -impl<'a> PartialEq for Subcommand<'a> { +impl PartialEq for Subcommand<'_> { #[inline] fn eq(&self, other: &Self) -> bool { self.fname == other.fname } } -impl<'a> PartialOrd for Subcommand<'a> { +impl PartialOrd for Subcommand<'_> { #[inline] fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } } diff --git a/src/credits.rs b/src/credits.rs index acfd601..8ad0608 100644 --- a/src/credits.rs +++ b/src/credits.rs @@ -47,7 +47,7 @@ pub(super) struct CreditsWriter<'a> { dependencies: &'a [Dependency], } -impl<'a> fmt::Display for CreditsWriter<'a> { +impl fmt::Display for CreditsWriter<'_> { /// # Write Credits! /// /// This method writes a markdown table entry for the dependency. @@ -132,7 +132,7 @@ impl<'a> TryFrom<&'a Manifest> for CreditsWriter<'a> { } } -impl<'a> CreditsWriter<'a> { +impl CreditsWriter<'_> { /// # Write Credits! /// /// This method is called by `main.rs` to generate and save the crate diff --git a/src/main.rs b/src/main.rs index b7ab4b6..f7ed63b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -125,7 +125,7 @@ static CWD: LazyLock> = LazyLock::new(|| /// # Main. fn main() { - match _main() { + match main__() { Ok(()) => {}, Err(BashManError::Target) => { Msg::error("Target must be one of the following:") @@ -145,7 +145,7 @@ fn main() { #[inline] /// # Actual main. -fn _main() -> Result<(), BashManError> { +fn main__() -> Result<(), BashManError> { /// # Skipped Bash. const SKIPPED_BASH: u8 = 0b0001; @@ -292,7 +292,7 @@ impl<'a> From<&'a Path> for RelativePath<'a> { fn from(src: &'a Path) -> Self { Self(src.to_string_lossy()) } } -impl<'a> fmt::Display for RelativePath<'a> { +impl fmt::Display for RelativePath<'_> { #[inline] fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { /// # Strip Prefix. diff --git a/src/man.rs b/src/man.rs index 5a0b4f0..590f45e 100644 --- a/src/man.rs +++ b/src/man.rs @@ -88,7 +88,7 @@ impl<'a> TryFrom<&'a Manifest> for ManWriter<'a> { } } -impl<'a> ManWriter<'a> { +impl ManWriter<'_> { /// # Write to File. /// /// This method is called by `main.rs` to generate and save the manual @@ -171,7 +171,7 @@ struct Man<'a> { sections: Vec>, } -impl<'a> fmt::Display for Man<'a> { +impl fmt::Display for Man<'_> { /// # Write Section. /// /// This generates appropriate man code for the section. @@ -228,7 +228,7 @@ impl<'a> fmt::Display for Man<'a> { } } -impl<'a> Man<'a> { +impl Man<'_> { /// # Has Flags? const HAS_FLAGS: u8 = 0b0001; @@ -366,7 +366,7 @@ struct Section<'a> { data: Vec>, } -impl<'a> fmt::Display for Section<'a> { +impl fmt::Display for Section<'_> { /// # Write Section. /// /// This generates appropriate man code for the section. @@ -404,7 +404,7 @@ struct SectionData<'a> { indent: bool, } -impl<'a> fmt::Display for SectionData<'a> { +impl fmt::Display for SectionData<'_> { /// # Write Entry. /// /// This generates appropriate man code for a given data based on the @@ -529,7 +529,7 @@ impl<'a> From<&'a TrailingArg> for SectionData<'a> { /// # Escape Hyphens. struct EscapeHyphens<'a>(&'a str); -impl<'a> fmt::Display for EscapeHyphens<'a> { +impl fmt::Display for EscapeHyphens<'_> { /// # Write Escaped. /// /// MAN pages don't seem to like hyphens; this will escape any as they're diff --git a/src/parse/cargo.rs b/src/parse/cargo.rs index 161c287..0a6f464 100644 --- a/src/parse/cargo.rs +++ b/src/parse/cargo.rs @@ -82,7 +82,7 @@ pub(super) fn fetch(src: &Path, target: Option) "unable to determine root package".to_owned() ))?; let main = RawMainPackage::try_from_parts(name, &version, description, metadata)?; - let features = features.map_or(false, deserialize_features); + let features = features.is_some_and(deserialize_features); // If this crate has features, repeat the process to figure out if // there are any additional optional dependencies. If this fails for @@ -147,7 +147,7 @@ pub(super) fn fetch_test(target: Option) let main = RawMainPackage::try_from_parts(name, &version, description, metadata)?; // We don't have features. - assert!(! features.map_or(false, deserialize_features), "No features expected!"); + assert!(! features.is_some_and(deserialize_features), "No features expected!"); // Finish deserializing the main package. Ok((main, deps)) @@ -455,7 +455,7 @@ pub(super) struct RawPackage<'a> { metadata: Option<&'a RawValue>, } -impl<'a> RawPackage<'a> { +impl RawPackage<'_> { /// # Try Into Dependency. fn try_into_dependency(self, context: u8) -> Result { // Deserialize deferred fields. @@ -786,7 +786,7 @@ struct RawResolve<'a> { root: &'a str, } -impl<'a> RawResolve<'a> { +impl RawResolve<'_> { /// # Cumulative Context Flags. /// /// Flags are calculated per parent/child during deserialization; this @@ -1084,8 +1084,7 @@ where D: Deserializer<'de> { /// /// We just want to know if there _are_ features; the details are irrelevant. fn deserialize_features<'a>(raw: &'a RawValue) -> bool { - , &'a RawValue>>::deserialize(raw).map_or( - false, + , &'a RawValue>>::deserialize(raw).is_ok_and( |map| match 1_usize.cmp(&map.len()) { // 2+ features is always a YES. Ordering::Less => true, diff --git a/src/parse/mod.rs b/src/parse/mod.rs index d4e98b5..06b5122 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -146,7 +146,7 @@ impl Manifest { pub(crate) fn dir_bash(&self) -> Result { let has_data = 1 < self.subcommands.len() || - self.subcommands.first().map_or(false, |s| { + self.subcommands.first().is_some_and(|s| { ! s.data.flags.is_empty() || ! s.data.options.is_empty() || s.data.args.is_some() @@ -185,7 +185,7 @@ impl Manifest { pub(crate) fn dir_man(&self) -> Result { let has_data = 1 < self.subcommands.len() || - self.subcommands.first().map_or(false, |s| { + self.subcommands.first().is_some_and(|s| { ! s.data.flags.is_empty() || ! s.data.options.is_empty() || s.data.args.is_some() || diff --git a/src/parse/pkg.rs b/src/parse/pkg.rs index fc5335c..76d0d96 100644 --- a/src/parse/pkg.rs +++ b/src/parse/pkg.rs @@ -153,7 +153,7 @@ impl fmt::Display for Dependency { close: &'a str, url: Option<&'a str>, } - impl<'a> fmt::Display for FmtName<'a> { + impl fmt::Display for FmtName<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { if let Some(url) = self.url { write!(f, "[{}{}{}]({url})", self.open, self.name, self.close) From bda9d8f92ff774d4b1260167a56017963b0700ac Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 28 Nov 2024 12:17:28 -0800 Subject: [PATCH 3/7] bump: dactyl 0.8 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index ebe4b2a..3ae7e47 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,7 +72,7 @@ argyle = "0.10.*" [dependencies] argyle = "0.10.*" adbyss_psl = "0.15.*" -dactyl = "0.7.4" +dactyl = "0.8.*" fyi_msg = "1.2.*" oxford_join = "0.4.*" trimothy = "0.5.*" From 84a0027a9a0a05709e7205e8d2c14c0f9ff487c6 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 28 Nov 2024 12:17:40 -0800 Subject: [PATCH 4/7] bump: fyi_msg 1.3 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 3ae7e47..88d5723 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,7 +73,7 @@ argyle = "0.10.*" argyle = "0.10.*" adbyss_psl = "0.15.*" dactyl = "0.8.*" -fyi_msg = "1.2.*" +fyi_msg = "1.3.*" oxford_join = "0.4.*" trimothy = "0.5.*" utc2k = "0.11.*" From bed2539f58d619917aa42cbedb6543bb7daf30e6 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 28 Nov 2024 12:17:46 -0800 Subject: [PATCH 5/7] bump: trimothy 0.6 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 88d5723..639e93c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -75,7 +75,7 @@ adbyss_psl = "0.15.*" dactyl = "0.8.*" fyi_msg = "1.3.*" oxford_join = "0.4.*" -trimothy = "0.5.*" +trimothy = "0.6.*" utc2k = "0.11.*" write_atomic = "0.5.*" From c5b94652777a7493a73e8a7cd75185b134ede44b Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 28 Nov 2024 12:18:04 -0800 Subject: [PATCH 6/7] bump: 0.6.8 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 639e93c..8e827aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cargo-bashman" -version = "0.6.7" +version = "0.6.8" license = "WTFPL" authors = ["Josh Stoik "] edition = "2021" From 9c4645bbdee40ca6fdb33e53b7fa025c5ae9fd6a Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 28 Nov 2024 12:19:15 -0800 Subject: [PATCH 7/7] build: 0.6.8 --- CREDITS.md | 50 ++++++++++++++++++------------------- release/man/cargo-bashman.1 | 4 +-- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index 29cd613..5064b7b 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,21 +1,21 @@ # Project Dependencies Package: cargo-bashman - Version: 0.6.7 + Version: 0.6.8 Target: x86_64-unknown-linux-gnu - Generated: 2024-11-11 20:33:44 UTC + Generated: 2024-11-28 20:18:31 UTC | Package | Version | Author(s) | License | | ---- | ---- | ---- | ---- | -| [**adbyss_psl**](https://github.com/Blobfolio/adbyss) | 0.15.0 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | -| [**argyle**](https://github.com/Blobfolio/argyle) | 0.10.0 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [**adbyss_psl**](https://github.com/Blobfolio/adbyss) | 0.15.1 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | +| [**argyle**](https://github.com/Blobfolio/argyle) | 0.10.1 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | | [bitflags](https://github.com/bitflags/bitflags) | 2.6.0 | The Rust Project Developers | MIT OR Apache-2.0 | -| [cc](https://github.com/rust-lang/cc-rs) ⚒️ | 1.1.37 | [Alex Crichton](mailto:alex@alexcrichton.com) | MIT OR Apache-2.0 | +| [cc](https://github.com/rust-lang/cc-rs) ⚒️ | 1.2.1 | [Alex Crichton](mailto:alex@alexcrichton.com) | MIT OR Apache-2.0 | | [cfg-if](https://github.com/alexcrichton/cfg-if) | 1.0.0 | [Alex Crichton](mailto:alex@alexcrichton.com) | MIT OR Apache-2.0 | -| [**dactyl**](https://github.com/Blobfolio/dactyl) | 0.7.4 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [**dactyl**](https://github.com/Blobfolio/dactyl) | 0.8.0 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | | [displaydoc](https://github.com/yaahc/displaydoc) | 0.2.5 | [Jane Lusby](mailto:jlusby@yaah.dev) | MIT OR Apache-2.0 | | [fastrand](https://github.com/smol-rs/fastrand) | 2.2.0 | [Stjepan Glavina](mailto:stjepang@gmail.com) | Apache-2.0 OR MIT | | [form_urlencoded](https://github.com/servo/rust-url) | 1.2.1 | The rust-url developers | MIT OR Apache-2.0 | -| [**fyi_msg**](https://github.com/Blobfolio/fyi) | 1.2.0 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | +| [**fyi_msg**](https://github.com/Blobfolio/fyi) | 1.3.0 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | | [icu_collections](https://github.com/unicode-org/icu4x) | 1.5.0 | The ICU4X Project Developers | Unicode-3.0 | | [icu_locid](https://github.com/unicode-org/icu4x) | 1.5.0 | The ICU4X Project Developers | Unicode-3.0 | | [icu_locid_transform](https://github.com/unicode-org/icu4x) | 1.5.0 | The ICU4X Project Developers | Unicode-3.0 | @@ -28,43 +28,43 @@ | [icu_provider_macros](https://github.com/unicode-org/icu4x) | 1.5.0 | The ICU4X Project Developers | Unicode-3.0 | | [idna](https://github.com/servo/rust-url/) | 1.0.3 | The rust-url developers | MIT OR Apache-2.0 | | [idna_adapter](https://github.com/hsivonen/idna_adapter) | 1.2.0 | The rust-url developers | Apache-2.0 OR MIT | -| [itoa](https://github.com/dtolnay/itoa) | 1.0.11 | [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | +| [itoa](https://github.com/dtolnay/itoa) | 1.0.14 | [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | | [libdeflate-sys](https://github.com/adamkewley/libdeflater) | 1.22.0 | [Adam Kewley](mailto:contact@adamkewley.com) | Apache-2.0 | | [**libdeflater**](https://github.com/adamkewley/libdeflater) | 1.22.0 | [Adam Kewley](mailto:contact@adamkewley.com) | Apache-2.0 | | [linux-raw-sys](https://github.com/sunfishcode/linux-raw-sys) | 0.4.14 | [Dan Gohman](mailto:dev@sunfishcode.online) | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | -| [litemap](https://github.com/unicode-org/icu4x) | 0.7.3 | The ICU4X Project Developers | Unicode-3.0 | +| [litemap](https://github.com/unicode-org/icu4x) | 0.7.4 | The ICU4X Project Developers | Unicode-3.0 | | [memchr](https://github.com/BurntSushi/memchr) | 2.7.4 | [Andrew Gallant](mailto:jamslam@gmail.com) and bluss | Unlicense OR MIT | | [once_cell](https://github.com/matklad/once_cell) | 1.20.2 | [Aleksey Kladov](mailto:aleksey.kladov@gmail.com) | MIT OR Apache-2.0 | -| [**oxford_join**](https://github.com/Blobfolio/oxford_join) | 0.4.0 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [**oxford_join**](https://github.com/Blobfolio/oxford_join) | 0.4.1 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | | [percent-encoding](https://github.com/servo/rust-url/) | 2.3.1 | The rust-url developers | MIT OR Apache-2.0 | -| [proc-macro2](https://github.com/dtolnay/proc-macro2) | 1.0.89 | [David Tolnay](mailto:dtolnay@gmail.com) and [Alex Crichton](mailto:alex@alexcrichton.com) | MIT OR Apache-2.0 | +| [proc-macro2](https://github.com/dtolnay/proc-macro2) | 1.0.92 | [David Tolnay](mailto:dtolnay@gmail.com) and [Alex Crichton](mailto:alex@alexcrichton.com) | MIT OR Apache-2.0 | | [quote](https://github.com/dtolnay/quote) | 1.0.37 | [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | -| [rustix](https://github.com/bytecodealliance/rustix) | 0.38.40 | [Dan Gohman](mailto:dev@sunfishcode.online) and [Jakub Konka](mailto:kubkon@jakubkonka.com) | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | +| [rustix](https://github.com/bytecodealliance/rustix) | 0.38.41 | [Dan Gohman](mailto:dev@sunfishcode.online) and [Jakub Konka](mailto:kubkon@jakubkonka.com) | Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT | | [ryu](https://github.com/dtolnay/ryu) | 1.0.18 | [David Tolnay](mailto:dtolnay@gmail.com) | Apache-2.0 OR BSL-1.0 | | [**semver**](https://github.com/dtolnay/semver) | 1.0.23 | [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | -| [**serde**](https://github.com/serde-rs/serde) | 1.0.214 | [Erick Tryzelaar](mailto:erick.tryzelaar@gmail.com) and [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | -| [serde_derive](https://github.com/serde-rs/serde) | 1.0.214 | [Erick Tryzelaar](mailto:erick.tryzelaar@gmail.com) and [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | -| [**serde_json**](https://github.com/serde-rs/json) | 1.0.132 | [Erick Tryzelaar](mailto:erick.tryzelaar@gmail.com) and [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | +| [**serde**](https://github.com/serde-rs/serde) | 1.0.215 | [Erick Tryzelaar](mailto:erick.tryzelaar@gmail.com) and [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | +| [serde_derive](https://github.com/serde-rs/serde) | 1.0.215 | [Erick Tryzelaar](mailto:erick.tryzelaar@gmail.com) and [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | +| [**serde_json**](https://github.com/serde-rs/json) | 1.0.133 | [Erick Tryzelaar](mailto:erick.tryzelaar@gmail.com) and [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | | [shlex](https://github.com/comex/rust-shlex) ⚒️ | 1.3.0 | [comex](mailto:comexk@gmail.com), [Fenhl](mailto:fenhl@fenhl.net), [Adrian Taylor](mailto:adetaylor@chromium.org), [Alex Touchet](mailto:alextouchet@outlook.com), [Daniel Parks](mailto:dp+git@oxidized.org), and [Garrett Berg](mailto:googberg@gmail.com) | MIT OR Apache-2.0 | | [smallvec](https://github.com/servo/rust-smallvec) | 1.13.2 | The Servo Project Developers | MIT OR Apache-2.0 | | [stable_deref_trait](https://github.com/storyyeller/stable_deref_trait) | 1.2.0 | [Robert Grosse](mailto:n210241048576@gmail.com) | MIT OR Apache-2.0 | -| [syn](https://github.com/dtolnay/syn) | 2.0.87 | [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | +| [syn](https://github.com/dtolnay/syn) | 2.0.89 | [David Tolnay](mailto:dtolnay@gmail.com) | MIT OR Apache-2.0 | | [synstructure](https://github.com/mystor/synstructure) | 0.13.1 | [Nika Layzell](mailto:nika@thelayzells.com) | MIT | | [tempfile](https://github.com/Stebalien/tempfile) | 3.14.0 | [Steven Allen](mailto:steven@stebalien.com), The Rust Project Developers, [Ashley Mannix](mailto:ashleymannix@live.com.au), and [Jason White](mailto:me@jasonwhite.io) | MIT OR Apache-2.0 | | [tinystr](https://github.com/unicode-org/icu4x) | 0.7.6 | The ICU4X Project Developers | Unicode-3.0 | -| [**trimothy**](https://github.com/Blobfolio/trimothy) | 0.3.1 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | -| [unicode-ident](https://github.com/dtolnay/unicode-ident) | 1.0.13 | [David Tolnay](mailto:dtolnay@gmail.com) | (MIT OR Apache-2.0) AND Unicode-DFS-2016 | -| [**url**](https://github.com/servo/rust-url) | 2.5.3 | The rust-url developers | MIT OR Apache-2.0 | -| [**utc2k**](https://github.com/Blobfolio/utc2k) | 0.11.0 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [**trimothy**](https://github.com/Blobfolio/trimothy) | 0.6.0 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | +| [unicode-ident](https://github.com/dtolnay/unicode-ident) | 1.0.14 | [David Tolnay](mailto:dtolnay@gmail.com) | (MIT OR Apache-2.0) AND Unicode-3.0 | +| [**url**](https://github.com/servo/rust-url) | 2.5.4 | The rust-url developers | MIT OR Apache-2.0 | +| [**utc2k**](https://github.com/Blobfolio/utc2k) | 0.11.1 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | | [utf16_iter](https://github.com/hsivonen/utf16_iter) | 1.0.5 | [Henri Sivonen](mailto:hsivonen@hsivonen.fi) | Apache-2.0 OR MIT | | [utf8_iter](https://github.com/hsivonen/utf8_iter) | 1.0.4 | [Henri Sivonen](mailto:hsivonen@hsivonen.fi) | Apache-2.0 OR MIT | | [write16](https://github.com/hsivonen/write16) | 1.0.0 | | Apache-2.0 OR MIT | -| [**write_atomic**](https://github.com/Blobfolio/write_atomic) | 0.5.1 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [**write_atomic**](https://github.com/Blobfolio/write_atomic) | 0.5.2 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | | [writeable](https://github.com/unicode-org/icu4x) | 0.5.5 | The ICU4X Project Developers | Unicode-3.0 | -| [yoke](https://github.com/unicode-org/icu4x) | 0.7.4 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | -| [yoke-derive](https://github.com/unicode-org/icu4x) | 0.7.4 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | -| [zerofrom](https://github.com/unicode-org/icu4x) | 0.1.4 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | -| [zerofrom-derive](https://github.com/unicode-org/icu4x) | 0.1.4 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | +| [yoke](https://github.com/unicode-org/icu4x) | 0.7.5 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | +| [yoke-derive](https://github.com/unicode-org/icu4x) | 0.7.5 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | +| [zerofrom](https://github.com/unicode-org/icu4x) | 0.1.5 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | +| [zerofrom-derive](https://github.com/unicode-org/icu4x) | 0.1.5 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | | [zerovec](https://github.com/unicode-org/icu4x) | 0.10.4 | The ICU4X Project Developers | Unicode-3.0 | | [zerovec-derive](https://github.com/unicode-org/icu4x) | 0.10.3 | [Manish Goregaokar](mailto:manishsmail@gmail.com) | Unicode-3.0 | diff --git a/release/man/cargo-bashman.1 b/release/man/cargo-bashman.1 index 260f929..e21c355 100644 --- a/release/man/cargo-bashman.1 +++ b/release/man/cargo-bashman.1 @@ -1,6 +1,6 @@ -.TH "CARGO BASHMAN" "1" "November 2024" "cargo\-bashman v0.6.7" "User Commands" +.TH "CARGO BASHMAN" "1" "November 2024" "cargo\-bashman v0.6.8" "User Commands" .SH NAME -CARGO BASHMAN \- Manual page for cargo\-bashman v0.6.7. +CARGO BASHMAN \- Manual page for cargo\-bashman v0.6.8. .SH DESCRIPTION A Cargo plugin to generate bash completions, man pages, and/or crate credits. .SS USAGE: