From 4a3b1657813af4ff145af386362a2e6a22d0a82b Mon Sep 17 00:00:00 2001 From: Denis Drakhnia Date: Sun, 7 Apr 2024 08:13:30 +0300 Subject: [PATCH] query|admin: replace termion with crossterm --- Cargo.lock | 204 ++++++++++++++++++++++++++++++-------- admin/Cargo.toml | 2 +- admin/src/main.rs | 65 +++++++++--- query/Cargo.toml | 4 +- query/src/main.rs | 35 ++++--- supply-chain/audits.toml | 42 ++++++++ supply-chain/config.toml | 4 - supply-chain/imports.lock | 98 ++++++++++++++++++ 8 files changed, 379 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 60a2282..dcc121f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -132,6 +132,31 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +[[package]] +name = "crossterm" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + [[package]] name = "crunchy" version = "0.2.2" @@ -209,14 +234,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] -name = "libredox" -version = "0.0.2" +name = "lock_api" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ - "bitflags 2.5.0", - "libc", - "redox_syscall", + "autocfg", + "scopeguard", ] [[package]] @@ -225,6 +249,18 @@ version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de" +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys", +] + [[package]] name = "num-traits" version = "0.2.18" @@ -234,18 +270,35 @@ dependencies = [ "autocfg", ] -[[package]] -name = "numtoa" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" - [[package]] name = "once_cell" version = "1.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9670a07f94779e00908f3e686eab508878ebb390ba6e604d3a284c00e8d0487b" +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + [[package]] name = "proc-macro2" version = "1.0.79" @@ -273,18 +326,18 @@ dependencies = [ "bitflags 1.3.2", ] -[[package]] -name = "redox_termios" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb" - [[package]] name = "ryu" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "serde" version = "1.0.197" @@ -326,6 +379,17 @@ dependencies = [ "signal-hook-registry", ] +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -335,6 +399,12 @@ dependencies = [ "libc", ] +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + [[package]] name = "syn" version = "2.0.56" @@ -346,18 +416,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "termion" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4648c7def6f2043b2568617b9f9b75eae88ca185dbc1f1fda30e95a85d49d7d" -dependencies = [ - "libc", - "libredox", - "numtoa", - "redox_termios", -] - [[package]] name = "thiserror" version = "1.0.58" @@ -496,7 +554,31 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -505,51 +587,93 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.4" @@ -561,8 +685,8 @@ name = "xash3d-admin" version = "0.1.0" dependencies = [ "blake2b_simd", + "crossterm", "getopts", - "termion", "thiserror", "xash3d-protocol", ] @@ -598,12 +722,12 @@ dependencies = [ name = "xash3d-query" version = "0.1.0" dependencies = [ + "crossterm", "fastrand", "getopts", "libc", "serde", "serde_json", - "termion", "thiserror", "xash3d-protocol", ] diff --git a/admin/Cargo.toml b/admin/Cargo.toml index c5f95dc..fa3d805 100644 --- a/admin/Cargo.toml +++ b/admin/Cargo.toml @@ -14,6 +14,6 @@ repository = "https://git.mentality.rip/numas13/xash3d-master" [dependencies] thiserror = "1.0.49" getopts = "0.2.21" -termion = "2" +crossterm = "0.25.0" blake2b_simd = "=1.0.0" xash3d-protocol = { path = "../protocol", version = "0.1.0" } diff --git a/admin/src/main.rs b/admin/src/main.rs index aea9f59..f04b533 100644 --- a/admin/src/main.rs +++ b/admin/src/main.rs @@ -3,11 +3,10 @@ mod cli; -use std::io::{self, Write}; +use std::io; use std::net::UdpSocket; use blake2b_simd::Params; -use termion::input::TermRead; use thiserror::Error; use xash3d_protocol::{admin, master}; @@ -21,6 +20,56 @@ enum Error { Io(#[from] io::Error), } +fn read_password() -> Result, Error> { + use crossterm::event::{read, Event, KeyCode, KeyEventKind, KeyModifiers}; + use crossterm::terminal::{disable_raw_mode, enable_raw_mode}; + + println!("Password:"); + + enable_raw_mode()?; + + let mut buf = String::with_capacity(32); + loop { + let event = match read() { + Ok(event) => event, + Err(err) => { + disable_raw_mode()?; + return Err(err.into()); + } + }; + + match event { + Event::Key(key) => { + if key.kind != KeyEventKind::Press { + continue; + } + + let is_ctrl = key.modifiers.contains(KeyModifiers::CONTROL); + match key.code { + KeyCode::Esc => break, + KeyCode::Enter => break, + KeyCode::Char('c' | 'd') if is_ctrl => break, + KeyCode::Char('w') if is_ctrl => buf.clear(), + KeyCode::Char(c) => buf.push(c), + KeyCode::Backspace => { + buf.pop(); + } + _ => {} + } + } + Event::Paste(s) => buf.push_str(&s), + _ => {} + } + } + + disable_raw_mode()?; + + Ok(match buf.len() { + 0 => None, + _ => Some(buf), + }) +} + fn send_command(cli: &cli::Cli) -> Result<(), Error> { let sock = UdpSocket::bind("0.0.0.0:0")?; sock.connect(&cli.address)?; @@ -35,16 +84,8 @@ fn send_command(cli: &cli::Cli) -> Result<(), Error> { _ => return Err(Error::UnexpectedPacket), }; - let stdout = io::stdout(); - let stdin = io::stdin(); - let mut stdout = stdout.lock(); - let mut stdin = stdin.lock(); - - stdout.write_all(b"Password:\n")?; - stdout.flush()?; - - let password = match stdin.read_passwd(&mut stdout)? { - Some(pass) => pass, + let password = match read_password()? { + Some(s) => s, None => return Ok(()), }; diff --git a/query/Cargo.toml b/query/Cargo.toml index 2a73911..c38fd9b 100644 --- a/query/Cargo.toml +++ b/query/Cargo.toml @@ -13,7 +13,7 @@ repository = "https://git.mentality.rip/numas13/xash3d-master" [features] default = ["color"] -color = ["termion"] +color = ["crossterm"] [dependencies] libc = "0.2.148" @@ -22,5 +22,5 @@ getopts = "0.2.21" fastrand = "2.0.1" serde = { version = "1.0.188", features = ["derive"] } serde_json = "1.0.107" -termion = { version = "2", optional = true } +crossterm = { version = "0.25.0", default-features = false, optional = true } xash3d-protocol = { path = "../protocol", version = "0.1.0" } diff --git a/query/src/main.rs b/query/src/main.rs index ffddb5c..f82de15 100644 --- a/query/src/main.rs +++ b/query/src/main.rs @@ -176,29 +176,31 @@ impl<'a> Colored<'a> { impl fmt::Display for Colored<'_> { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { #[cfg(feature = "color")] - if self.forced || termion::is_tty(&io::stdout()) { - use termion::color::*; + use crossterm::{style::Stylize, tty::IsTty}; + #[cfg(feature = "color")] + if self.forced || io::stdout().is_tty() { for (color, text) in color::ColorIter::new(self.inner) { - match color::Color::try_from(color) { - Ok(color::Color::Black) => write!(fmt, "{}", Fg(Black))?, - Ok(color::Color::Red) => write!(fmt, "{}", Fg(Red))?, - Ok(color::Color::Green) => write!(fmt, "{}", Fg(Green))?, - Ok(color::Color::Yellow) => write!(fmt, "{}", Fg(Yellow))?, - Ok(color::Color::Blue) => write!(fmt, "{}", Fg(Blue))?, - Ok(color::Color::Cyan) => write!(fmt, "{}", Fg(Cyan))?, - Ok(color::Color::Magenta) => write!(fmt, "{}", Fg(Magenta))?, - Ok(color::Color::White) => write!(fmt, "{}", Fg(White))?, - _ => {} - } - write!(fmt, "{}", text)?; + let colored = match color::Color::try_from(color) { + Ok(color::Color::Black) => text.black(), + Ok(color::Color::Red) => text.red(), + Ok(color::Color::Green) => text.green(), + Ok(color::Color::Yellow) => text.yellow(), + Ok(color::Color::Blue) => text.blue(), + Ok(color::Color::Cyan) => text.cyan(), + Ok(color::Color::Magenta) => text.magenta(), + Ok(color::Color::White) => text.white(), + _ => text.reset(), + }; + write!(fmt, "{}", colored)?; } - return write!(fmt, "{}", Fg(Reset)); } + #[cfg(not(feature = "color"))] for (_, text) in color::ColorIter::new(self.inner) { write!(fmt, "{}", text)?; } + Ok(()) } } @@ -583,8 +585,9 @@ fn execute(cli: Cli) -> Result<(), Error> { fn main() { let cli = cli::parse(); - // suppress broken pipe error + #[cfg(not(windows))] unsafe { + // suppress broken pipe error libc::signal(libc::SIGPIPE, libc::SIG_DFL); } diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index 5b52736..9b917c4 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -105,12 +105,36 @@ user-id = 51017 # Yuki Okushi (JohnTitor) start = "2020-03-17" end = "2025-04-04" +[[trusted.lock_api]] +criteria = "safe-to-deploy" +user-id = 2915 # Amanieu d'Antras (Amanieu) +start = "2019-05-04" +end = "2025-04-07" + +[[trusted.mio]] +criteria = "safe-to-deploy" +user-id = 10 +start = "2019-05-15" +end = "2025-04-07" + [[trusted.num-traits]] criteria = "safe-to-deploy" user-id = 539 # Josh Stone (cuviper) start = "2019-05-20" end = "2025-04-04" +[[trusted.parking_lot]] +criteria = "safe-to-deploy" +user-id = 2915 # Amanieu d'Antras (Amanieu) +start = "2019-05-04" +end = "2025-04-07" + +[[trusted.parking_lot_core]] +criteria = "safe-to-deploy" +user-id = 2915 # Amanieu d'Antras (Amanieu) +start = "2019-05-04" +end = "2025-04-07" + [[trusted.proc-macro2]] criteria = "safe-to-deploy" user-id = 3618 # David Tolnay (dtolnay) @@ -129,6 +153,12 @@ user-id = 3618 # David Tolnay (dtolnay) start = "2019-05-02" end = "2025-04-04" +[[trusted.scopeguard]] +criteria = "safe-to-deploy" +user-id = 2915 # Amanieu d'Antras (Amanieu) +start = "2020-02-16" +end = "2025-04-07" + [[trusted.serde]] criteria = "safe-to-deploy" user-id = 3618 # David Tolnay (dtolnay) @@ -147,6 +177,12 @@ user-id = 3618 # David Tolnay (dtolnay) start = "2019-02-28" end = "2025-04-04" +[[trusted.smallvec]] +criteria = "safe-to-deploy" +user-id = 2017 # Matt Brubeck (mbrubeck) +start = "2019-10-28" +end = "2025-04-07" + [[trusted.syn]] criteria = "safe-to-deploy" user-id = 3618 # David Tolnay (dtolnay) @@ -219,6 +255,12 @@ user-id = 64539 # Kenny Kerr (kennykerr) start = "2021-11-15" end = "2025-04-04" +[[trusted.windows-sys]] +criteria = "safe-to-deploy" +user-id = 64539 # Kenny Kerr (kennykerr) +start = "2021-11-15" +end = "2025-04-07" + [[trusted.windows-targets]] criteria = "safe-to-deploy" user-id = 64539 # Kenny Kerr (kennykerr) diff --git a/supply-chain/config.toml b/supply-chain/config.toml index 0296709..edf441e 100644 --- a/supply-chain/config.toml +++ b/supply-chain/config.toml @@ -35,10 +35,6 @@ audit-as-crates-io = true version = "0.2.16" criteria = "safe-to-deploy" -[[exemptions.termion]] -version = "2.0.1" -criteria = "safe-to-deploy" - [[exemptions.winapi]] version = "0.3.9" criteria = "safe-to-deploy" diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock index 59d0148..bb745c6 100644 --- a/supply-chain/imports.lock +++ b/supply-chain/imports.lock @@ -43,6 +43,13 @@ user-id = 51017 user-login = "JohnTitor" user-name = "Yuki Okushi" +[[publisher.lock_api]] +version = "0.4.11" +when = "2023-10-17" +user-id = 2915 +user-login = "Amanieu" +user-name = "Amanieu d'Antras" + [[publisher.num-traits]] version = "0.2.18" when = "2024-02-08" @@ -50,6 +57,20 @@ user-id = 539 user-login = "cuviper" user-name = "Josh Stone" +[[publisher.parking_lot]] +version = "0.12.1" +when = "2022-05-31" +user-id = 2915 +user-login = "Amanieu" +user-name = "Amanieu d'Antras" + +[[publisher.parking_lot_core]] +version = "0.9.9" +when = "2023-10-17" +user-id = 2915 +user-login = "Amanieu" +user-name = "Amanieu d'Antras" + [[publisher.proc-macro2]] version = "1.0.79" when = "2024-03-12" @@ -64,6 +85,13 @@ user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" +[[publisher.scopeguard]] +version = "1.2.0" +when = "2023-07-17" +user-id = 2915 +user-login = "Amanieu" +user-name = "Amanieu d'Antras" + [[publisher.serde_json]] version = "1.0.115" when = "2024-03-26" @@ -71,6 +99,13 @@ user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" +[[publisher.smallvec]] +version = "1.13.2" +when = "2024-03-20" +user-id = 2017 +user-login = "mbrubeck" +user-name = "Matt Brubeck" + [[publisher.syn]] version = "2.0.56" when = "2024-03-30" @@ -155,6 +190,20 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" +[[publisher.windows-sys]] +version = "0.48.0" +when = "2023-03-31" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + +[[publisher.windows-targets]] +version = "0.48.5" +when = "2023-08-18" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + [[publisher.windows-targets]] version = "0.52.4" when = "2024-02-28" @@ -162,6 +211,13 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" +[[publisher.windows_aarch64_gnullvm]] +version = "0.48.5" +when = "2023-08-18" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + [[publisher.windows_aarch64_gnullvm]] version = "0.52.4" when = "2024-02-28" @@ -169,6 +225,13 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" +[[publisher.windows_aarch64_msvc]] +version = "0.48.5" +when = "2023-08-18" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + [[publisher.windows_aarch64_msvc]] version = "0.52.4" when = "2024-02-28" @@ -176,6 +239,13 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" +[[publisher.windows_i686_gnu]] +version = "0.48.5" +when = "2023-08-18" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + [[publisher.windows_i686_gnu]] version = "0.52.4" when = "2024-02-28" @@ -183,6 +253,13 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" +[[publisher.windows_i686_msvc]] +version = "0.48.5" +when = "2023-08-18" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + [[publisher.windows_i686_msvc]] version = "0.52.4" when = "2024-02-28" @@ -190,6 +267,13 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" +[[publisher.windows_x86_64_gnu]] +version = "0.48.5" +when = "2023-08-18" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + [[publisher.windows_x86_64_gnu]] version = "0.52.4" when = "2024-02-28" @@ -197,6 +281,13 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" +[[publisher.windows_x86_64_gnullvm]] +version = "0.48.5" +when = "2023-08-18" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + [[publisher.windows_x86_64_gnullvm]] version = "0.52.4" when = "2024-02-28" @@ -204,6 +295,13 @@ user-id = 64539 user-login = "kennykerr" user-name = "Kenny Kerr" +[[publisher.windows_x86_64_msvc]] +version = "0.48.5" +when = "2023-08-18" +user-id = 64539 +user-login = "kennykerr" +user-name = "Kenny Kerr" + [[publisher.windows_x86_64_msvc]] version = "0.52.4" when = "2024-02-28"