From 6b5e7cf7741712899d73d94b006e64eea72bf82f Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Wed, 3 May 2023 22:39:51 -0700 Subject: [PATCH 01/12] misc: test in debug and release modes --- .github/workflows/ci.yaml | 8 +++++++- justfile | 22 ++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a873054..85689e9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -48,6 +48,7 @@ jobs: - name: Build run: | + cargo build --bin fyi --target ${{ matrix.target }} cargo build --bin fyi --release --target ${{ matrix.target }} - name: Clippy @@ -55,7 +56,12 @@ jobs: cargo clippy --release --all-features --target ${{ matrix.target }} cargo clippy --release --no-default-features --target ${{ matrix.target }} - - name: Tests + - name: Tests (Debug) + run: | + cargo test --all-features --target ${{ matrix.target }} + cargo test --no-default-features --target ${{ matrix.target }} + + - name: Tests (Release) run: | cargo test --release --all-features --target ${{ matrix.target }} cargo test --release --no-default-features --target ${{ matrix.target }} diff --git a/justfile b/justfile index 739730f..84970df 100644 --- a/justfile +++ b/justfile @@ -127,16 +127,6 @@ bench BENCH="": mv "{{ justfile_directory() }}/target" "{{ cargo_dir }}" -# Check Release! -@check: - # First let's build the Rust bit. - cargo check \ - --release \ - --target x86_64-unknown-linux-gnu \ - --all-features \ - --target-dir "{{ cargo_dir }}" - - # Clean Cargo crap. @clean: # Most things go here. @@ -210,6 +200,12 @@ bench BENCH="": # Unit tests! @test: clear + cargo test \ + --all-features \ + --workspace \ + --release \ + --target x86_64-unknown-linux-gnu \ + --target-dir "{{ cargo_dir }}" cargo test \ --all-features \ --workspace \ @@ -221,6 +217,12 @@ bench BENCH="": --workspace \ --target x86_64-unknown-linux-gnu \ --target-dir "{{ cargo_dir }}" + cargo test \ + --no-default-features \ + --workspace \ + --release \ + --target x86_64-unknown-linux-gnu \ + --target-dir "{{ cargo_dir }}" # Get/Set version. From 5c7fa1d89141cc1884b56cdca60c459012d8b3ba Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Mon, 8 May 2023 18:56:08 -0700 Subject: [PATCH 02/12] unit: add debug assertions around `unsafe` --- fyi_msg/src/msg/mod.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fyi_msg/src/msg/mod.rs b/fyi_msg/src/msg/mod.rs index c446dd8..f8ccb60 100644 --- a/fyi_msg/src/msg/mod.rs +++ b/fyi_msg/src/msg/mod.rs @@ -807,6 +807,7 @@ impl Msg { /// Return the entire message as a string slice. Alternatively, you could /// use [`Msg::as_ref`] or [`Msg::borrow`]. pub fn as_str(&self) -> &str { + debug_assert!(std::str::from_utf8(&self.0).is_ok(), "Bug: Message is not UTF8."); unsafe { std::str::from_utf8_unchecked(&self.0) } } @@ -824,6 +825,7 @@ impl Msg { /// /// Consume the message, returning an owned string. pub fn into_string(self) -> String { + debug_assert!(std::str::from_utf8(&self.0).is_ok(), "Bug: Message is not UTF8."); unsafe { String::from_utf8_unchecked(self.0.into_vec()) } } From d23b0e68f813c0752cfaf93b4d1d2b3aeb31d9c3 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Sat, 13 May 2023 20:09:00 -0700 Subject: [PATCH 03/12] misc: replace `unsafe` blocks with safe alternatives --- fyi_msg/src/msg/buffer.rs | 62 ++++--------------------------------- fyi_msg/src/msg/mod.rs | 4 +-- fyi_msg/src/progress/mod.rs | 44 +++++++++++++------------- 3 files changed, 30 insertions(+), 80 deletions(-) diff --git a/fyi_msg/src/msg/buffer.rs b/fyi_msg/src/msg/buffer.rs index d791c2c..d37b407 100644 --- a/fyi_msg/src/msg/buffer.rs +++ b/fyi_msg/src/msg/buffer.rs @@ -14,7 +14,6 @@ use std::{ Deref, Range, }, - ptr, }; @@ -163,31 +162,6 @@ impl MsgBuffer { /// Return as a byte slice. pub fn as_bytes(&self) -> &[u8] { &self.buf } - #[allow(unsafe_code)] - #[must_use] - #[inline] - /// # As Pointer. - /// - /// This method returns a read-only pointer to the underlying buffer. - pub(crate) unsafe fn as_ptr(&self, idx: u32) -> *const u8 { - self.buf.as_ptr().add(idx as usize) - } - - #[allow(unsafe_code)] - #[must_use] - #[inline] - /// # As Mut Pointer. - /// - /// This method returns a mutable pointer to the underlying buffer. - /// - /// ## Safety - /// - /// Any changes written to the pointer must not affect the table of - /// contents or undefined things will happen! - pub(crate) unsafe fn as_mut_ptr(&mut self, idx: u32) -> *mut u8 { - self.buf.as_mut_ptr().add(idx as usize) - } - #[must_use] #[inline] /// # As Str. @@ -285,7 +259,6 @@ impl MsgBuffer { } #[allow(clippy::cast_possible_truncation)] // We've previously asserted it fits. - #[allow(unsafe_code)] /// # Extend Part. /// /// ## Panics @@ -306,19 +279,13 @@ impl MsgBuffer { } else { self.resize_grow(idx, len); - unsafe { - std::ptr::copy_nonoverlapping( - buf.as_ptr(), - self.as_mut_ptr(end), - len as usize - ); - } + let end = end as usize; + self.buf[end..end + buf.len()].copy_from_slice(buf); } } } #[allow(clippy::comparison_chain)] // We're only matching 2/3. - #[allow(unsafe_code)] /// # Replace Part. /// /// ## Panics @@ -341,13 +308,8 @@ impl MsgBuffer { // Write it! if 0 != new_len { - unsafe { - std::ptr::copy_nonoverlapping( - buf.as_ptr(), - self.as_mut_ptr(self.start(idx)), - new_len as usize - ); - } + let from = self.start(idx) as usize; + self.buf[from..from + buf.len()].copy_from_slice(buf); } } @@ -362,7 +324,6 @@ impl MsgBuffer { /// ## Internal. impl MsgBuffer { - #[allow(unsafe_code)] /// # Grow. /// /// ## Panics @@ -384,22 +345,11 @@ impl MsgBuffer { let end: u32 = self.end(idx); let len: u32 = self.total_len(); - self.buf.reserve(adj as usize); + self.buf.resize((len + adj) as usize, b' '); // We need to shift things over. if end < len { - unsafe { - ptr::copy( - self.as_ptr(end), - self.as_mut_ptr(end + adj), - (len - end) as usize - ); - - self.buf.set_len((len + adj) as usize); - } - } - else { - unsafe { self.buf.set_len((len + adj) as usize); } + self.buf.copy_within(end as usize..len as usize, (end + adj) as usize); } self.raise_parts_from(idx, adj); diff --git a/fyi_msg/src/msg/mod.rs b/fyi_msg/src/msg/mod.rs index f8ccb60..e633b18 100644 --- a/fyi_msg/src/msg/mod.rs +++ b/fyi_msg/src/msg/mod.rs @@ -818,15 +818,13 @@ impl Msg { /// Consume the message, returning an owned `Vec`. pub fn into_vec(self) -> Vec { self.0.into_vec() } - #[allow(unsafe_code)] #[must_use] #[inline] /// # Into String. /// /// Consume the message, returning an owned string. pub fn into_string(self) -> String { - debug_assert!(std::str::from_utf8(&self.0).is_ok(), "Bug: Message is not UTF8."); - unsafe { String::from_utf8_unchecked(self.0.into_vec()) } + String::from_utf8(self.0.into_vec()).unwrap_or_else(|_| String::new()) } #[cfg(feature = "fitted")] diff --git a/fyi_msg/src/progress/mod.rs b/fyi_msg/src/progress/mod.rs index 3244790..d656281 100644 --- a/fyi_msg/src/progress/mod.rs +++ b/fyi_msg/src/progress/mod.rs @@ -54,10 +54,14 @@ use task::ProglessTask; /// /// This holds pre-asciified double-digit numbers up to sixty for use by the /// `write_time` method. It doesn't need to hold anything larger than that. -static DD: [u8; 120] = *b"\ - 000102030405060708091011121314151617181920212223242526272829\ - 303132333435363738394041424344454647484950515253545556575859\ -"; +static DD: [[u8; 2]; 60] = [ + [48, 48], [48, 49], [48, 50], [48, 51], [48, 52], [48, 53], [48, 54], [48, 55], [48, 56], [48, 57], + [49, 48], [49, 49], [49, 50], [49, 51], [49, 52], [49, 53], [49, 54], [49, 55], [49, 56], [49, 57], + [50, 48], [50, 49], [50, 50], [50, 51], [50, 52], [50, 53], [50, 54], [50, 55], [50, 56], [50, 57], + [51, 48], [51, 49], [51, 50], [51, 51], [51, 52], [51, 53], [51, 54], [51, 55], [51, 56], [51, 57], + [52, 48], [52, 49], [52, 50], [52, 51], [52, 52], [52, 53], [52, 54], [52, 55], [52, 56], [52, 57], + [53, 48], [53, 49], [53, 50], [53, 51], [53, 52], [53, 53], [53, 54], [53, 55], [53, 56], [53, 57], +]; /// # Helper: Mutex Unlock. /// @@ -702,7 +706,6 @@ impl ProglessInner { } } - #[allow(unsafe_code)] /// # Tick Elapsed Seconds. /// /// The precision of `Instant` is greater than we need for printing @@ -728,12 +731,7 @@ impl ProglessInner { if secs == before.wrapping_div(1000) { Some(false) } else { let [h, m, s] = NiceElapsed::hms(secs); - unsafe { - let mut buf = mutex!(self.buf); - let start = buf.start(PART_ELAPSED); - write_time(buf.as_mut_ptr(start), h, m, s); - } - + write_time(mutex!(self.buf).get_mut(PART_ELAPSED), h, m, s); Some(true) } } @@ -1257,7 +1255,6 @@ fn term_width() -> u8 { ) } -#[allow(unsafe_code)] /// # Write Time. /// /// This writes HH:MM:SS to the provided pointer. @@ -1270,14 +1267,19 @@ fn term_width() -> u8 { /// ## Safety /// /// The pointer must have 8 bytes free or undefined things will happen. -unsafe fn write_time(buf: *mut u8, h: u8, m: u8, s: u8) { - debug_assert!(h < 60 && m < 60 && s < 60, "BUG: Invalid progress time pieces."); - - let src = DD.as_ptr(); +fn write_time(buf: &mut [u8], h: u8, m: u8, s: u8) { + assert!( + h < 60 && + m < 60 && + s < 60 && + 8 <= buf.len(), + "BUG: Invalid progress time pieces." + ); - std::ptr::copy_nonoverlapping(src.add((h << 1) as usize), buf, 2); - std::ptr::write(buf.add(2), b':'); - std::ptr::copy_nonoverlapping(src.add((m << 1) as usize), buf.add(3), 2); - std::ptr::write(buf.add(5), b':'); - std::ptr::copy_nonoverlapping(src.add((s << 1) as usize), buf.add(6), 2); + // Write 'em. + buf[..2].copy_from_slice(DD[usize::from(h)].as_slice()); + buf[2] = b':'; + buf[3..5].copy_from_slice(DD[usize::from(m)].as_slice()); + buf[5] = b':'; + buf[6..8].copy_from_slice(DD[usize::from(s)].as_slice()); } From 3d5261e5d486538c62559a74f7da1ef941f38098 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 18 May 2023 20:07:55 -0700 Subject: [PATCH 04/12] ci: test MSRV --- .github/workflows/ci.yaml | 4 +-- .github/workflows/msrv.yaml | 54 +++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/msrv.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 85689e9..6c0148c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -2,9 +2,9 @@ name: Build on: push: - branches: [ master ] + branches: [] pull_request: - branches: [ master ] + branches: [] defaults: run: diff --git a/.github/workflows/msrv.yaml b/.github/workflows/msrv.yaml new file mode 100644 index 0000000..a785e86 --- /dev/null +++ b/.github/workflows/msrv.yaml @@ -0,0 +1,54 @@ +name: MSRV + +on: + push: + branches: [] + pull_request: + branches: [] + +defaults: + run: + shell: bash + +env: + CARGO_TERM_COLOR: always + +jobs: + all: + name: All + + strategy: + matrix: + target: + - x86_64-unknown-linux-gnu + - x86_64-apple-darwin + include: + - target: x86_64-unknown-linux-gnu + os: ubuntu-latest + - target: x86_64-apple-darwin + os: macos-latest + + runs-on: ${{matrix.os}} + + env: + RUSTFLAGS: "-D warnings" + + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + - uses: taiki-e/install-action@v2 + with: + tool: cargo-msrv + + - name: Info + run: | + rustup --version + cargo --version + cargo clippy --version + + - name: MSRV + run: | + cargo msrv --path fyi verify + cargo msrv --path fyi_msg verify -- cargo check --all-features From 6174c8e841b37d41a73ce1b8a5bc2b27a8578ad7 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 1 Jun 2023 13:29:17 -0700 Subject: [PATCH 05/12] bump: dactyl 0.5 --- fyi/Cargo.toml | 2 +- fyi_msg/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fyi/Cargo.toml b/fyi/Cargo.toml index edf8a69..0488a7a 100644 --- a/fyi/Cargo.toml +++ b/fyi/Cargo.toml @@ -169,7 +169,7 @@ subcommands = [ "confirm", "print", "crunched", "debug", "done", "error", "info" path = "../fyi_msg" [dependencies] -dactyl = "0.4.*" +dactyl = "0.5.*" [dependencies.argyle] version = "0.6.*" diff --git a/fyi_msg/Cargo.toml b/fyi_msg/Cargo.toml index 2f89ea5..20c5626 100644 --- a/fyi_msg/Cargo.toml +++ b/fyi_msg/Cargo.toml @@ -18,7 +18,7 @@ default-target = "x86_64-unknown-linux-gnu" targets = [ "x86_64-unknown-linux-gnu", "x86_64-apple-darwin" ] [dependencies] -dactyl = "0.4.*, >= 0.4.2" +dactyl = "0.5.*" [dependencies.ahash] version = "0.8.*" From 8f75637904dd9ac9265c2bc15347e4cf5f222b04 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 1 Jun 2023 13:29:37 -0700 Subject: [PATCH 06/12] bump: brunch 0.5 --- fyi_msg/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fyi_msg/Cargo.toml b/fyi_msg/Cargo.toml index 20c5626..fda6929 100644 --- a/fyi_msg/Cargo.toml +++ b/fyi_msg/Cargo.toml @@ -43,7 +43,7 @@ features = [ "local" ] optional = true [dev-dependencies] -brunch = "0.4.*" +brunch = "0.5.*" rayon = "1.7.*" [[bench]] From ec24c94f41196fde4e01c51b6c4b578bccdc7287 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 1 Jun 2023 13:29:47 -0700 Subject: [PATCH 07/12] bump: utc2k 0.6 --- fyi_msg/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fyi_msg/Cargo.toml b/fyi_msg/Cargo.toml index fda6929..5e9b42a 100644 --- a/fyi_msg/Cargo.toml +++ b/fyi_msg/Cargo.toml @@ -38,7 +38,7 @@ version = "0.1.*" optional = true [dependencies.utc2k] -version = "0.5.*" +version = "0.6.*" features = [ "local" ] optional = true From 9b483909610094bd3aad486aaab71297a13573ab Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 1 Jun 2023 13:29:58 -0700 Subject: [PATCH 08/12] bump: msrv 1.70 --- fyi/Cargo.toml | 2 +- fyi_msg/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fyi/Cargo.toml b/fyi/Cargo.toml index 0488a7a..4b255bb 100644 --- a/fyi/Cargo.toml +++ b/fyi/Cargo.toml @@ -4,7 +4,7 @@ version = "0.10.8" license = "WTFPL" authors = ["Blobfolio, LLC. "] edition = "2021" -rust-version = "1.63" +rust-version = "1.70" description = "A dead-simple CLI status message printer for use in BASH scripts, etc." repository = "https://github.com/Blobfolio/fyi" publish = false diff --git a/fyi_msg/Cargo.toml b/fyi_msg/Cargo.toml index 5e9b42a..87f5219 100644 --- a/fyi_msg/Cargo.toml +++ b/fyi_msg/Cargo.toml @@ -3,7 +3,7 @@ name = "fyi_msg" version = "0.10.8" authors = ["Blobfolio, LLC. "] edition = "2021" -rust-version = "1.63" +rust-version = "1.70" description = "Simple ANSI-formatted, prefixed messages for console printing." license = "WTFPL" repository = "https://github.com/Blobfolio/fyi" From 827e4a1c42c3998ebd96b57e59672e9c33ed5629 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 1 Jun 2023 13:36:03 -0700 Subject: [PATCH 09/12] cleanup: use new `is_some_and` --- fyi_msg/src/progress/mod.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/fyi_msg/src/progress/mod.rs b/fyi_msg/src/progress/mod.rs index d656281..9b0ff27 100644 --- a/fyi_msg/src/progress/mod.rs +++ b/fyi_msg/src/progress/mod.rs @@ -335,12 +335,11 @@ impl ProglessInner { /// example usage. fn add(&self, txt: S) where S: AsRef { - if self.running() { - if let Some(m) = ProglessTask::new(txt.as_ref()) { - if mutex!(self.doing).insert(m) { - self.flags.fetch_or(TICK_DOING, SeqCst); - } - } + if + self.running() && + ProglessTask::new(txt.as_ref()).is_some_and(|m| mutex!(self.doing).insert(m)) + { + self.flags.fetch_or(TICK_DOING, SeqCst); } } From 047739b879f6c932fcd964023774df9162efa32a Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 1 Jun 2023 13:36:07 -0700 Subject: [PATCH 10/12] lint --- fyi_msg/src/fitted.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/fyi_msg/src/fitted.rs b/fyi_msg/src/fitted.rs index 2f76dcf..40efe5f 100644 --- a/fyi_msg/src/fitted.rs +++ b/fyi_msg/src/fitted.rs @@ -149,10 +149,7 @@ fn length_width_unicode(bytes: &[u8], len: usize, width: usize, stop: usize) -> // Build a string from the bytes so we can get access to the inner chars. // This shouldn't fail, but if it does, it will return the length the call // was seeded with. - let strung = match std::str::from_utf8(bytes) { - Ok(s) => s, - Err(_) => { return len; }, - }; + let Ok(strung) = std::str::from_utf8(bytes) else { return len; }; let mut in_ansi: bool = false; match strung.chars() @@ -200,10 +197,7 @@ fn width_unicode(bytes: &[u8], width: usize) -> usize { // Build a string from the bytes so we can get access to the inner chars. // This shouldn't fail, but if it does, it will default to a byte count. - let strung = match std::str::from_utf8(bytes) { - Ok(s) => s, - Err(_) => { return width + bytes.len(); }, - }; + let Ok(strung) = std::str::from_utf8(bytes) else { return width + bytes.len(); }; let mut in_ansi: bool = false; strung.chars() From 75ec90f7d734ec83fdfd3d51aa3522d6a77b2601 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 1 Jun 2023 13:36:26 -0700 Subject: [PATCH 11/12] bump: 0.11.0 --- fyi/Cargo.toml | 2 +- fyi_msg/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fyi/Cargo.toml b/fyi/Cargo.toml index 4b255bb..4d6c34b 100644 --- a/fyi/Cargo.toml +++ b/fyi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fyi" -version = "0.10.8" +version = "0.11.0" license = "WTFPL" authors = ["Blobfolio, LLC. "] edition = "2021" diff --git a/fyi_msg/Cargo.toml b/fyi_msg/Cargo.toml index 87f5219..6f2b16e 100644 --- a/fyi_msg/Cargo.toml +++ b/fyi_msg/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fyi_msg" -version = "0.10.8" +version = "0.11.0" authors = ["Blobfolio, LLC. "] edition = "2021" rust-version = "1.70" From 796df5bb27f52d858514f9b77c5f4fa46b7c3744 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 1 Jun 2023 13:37:22 -0700 Subject: [PATCH 12/12] build: 0.11.0 --- CREDITS.md | 13 ++++++------- release/man/fyi-blank.1 | 4 ++-- release/man/fyi-confirm.1 | 4 ++-- release/man/fyi-crunched.1 | 4 ++-- release/man/fyi-debug.1 | 4 ++-- release/man/fyi-done.1 | 4 ++-- release/man/fyi-error.1 | 4 ++-- release/man/fyi-info.1 | 4 ++-- release/man/fyi-notice.1 | 4 ++-- release/man/fyi-print.1 | 4 ++-- release/man/fyi-review.1 | 4 ++-- release/man/fyi-success.1 | 4 ++-- release/man/fyi-task.1 | 4 ++-- release/man/fyi-warning.1 | 4 ++-- release/man/fyi.1 | 4 ++-- 15 files changed, 34 insertions(+), 35 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index 919459b..b7114f3 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,15 +1,14 @@ # Project Dependencies Package: fyi - Version: 0.10.8 - Generated: 2023-04-20 16:28:44 UTC + Version: 0.11.0 + Generated: 2023-06-01 20:36:30 UTC | Package | Version | Author(s) | License | | ---- | ---- | ---- | ---- | -| [argyle](https://github.com/Blobfolio/argyle) | 0.6.7 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [argyle](https://github.com/Blobfolio/argyle) | 0.6.8 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | | [const_fn](https://github.com/taiki-e/const_fn) | 0.4.9 | | Apache-2.0 or MIT | -| [dactyl](https://github.com/Blobfolio/dactyl) | 0.4.8 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | -| [fyi_msg](https://github.com/Blobfolio/fyi) | 0.10.8 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [dactyl](https://github.com/Blobfolio/dactyl) | 0.5.0 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [fyi_msg](https://github.com/Blobfolio/fyi) | 0.11.0 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | | [num-traits](https://github.com/rust-num/num-traits) | 0.2.15 | The Rust Project Developers | Apache-2.0 or MIT | -| [once_cell](https://github.com/matklad/once_cell) | 1.17.1 | [Aleksey Kladov](mailto:aleksey.kladov@gmail.com) | Apache-2.0 or MIT | | [tz-rs](https://github.com/x-hgg-x/tz-rs) | 0.6.14 | x-hgg-x | Apache-2.0 or MIT | -| [utc2k](https://github.com/Blobfolio/utc2k) | 0.5.15 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [utc2k](https://github.com/Blobfolio/utc2k) | 0.6.0 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | diff --git a/release/man/fyi-blank.1 b/release/man/fyi-blank.1 index d1e81b3..cb15c8f 100644 --- a/release/man/fyi-blank.1 +++ b/release/man/fyi-blank.1 @@ -1,6 +1,6 @@ -.TH "FYI BLANK" "1" "April 2023" "blank v0.10.8" "User Commands" +.TH "FYI BLANK" "1" "June 2023" "blank v0.11.0" "User Commands" .SH NAME -blank \- Manual page for blank v0.10.8. +blank \- Manual page for blank v0.11.0. .SH DESCRIPTION Print blank line(s). .SS USAGE: diff --git a/release/man/fyi-confirm.1 b/release/man/fyi-confirm.1 index 1acf6f7..845cb9b 100644 --- a/release/man/fyi-confirm.1 +++ b/release/man/fyi-confirm.1 @@ -1,6 +1,6 @@ -.TH "FYI CONFIRM" "1" "April 2023" "confirm v0.10.8" "User Commands" +.TH "FYI CONFIRM" "1" "June 2023" "confirm v0.11.0" "User Commands" .SH NAME -confirm \- Manual page for confirm v0.10.8. +confirm \- Manual page for confirm v0.11.0. .SH DESCRIPTION Ask a Yes/No question using the built\-in prefix "confirm". .SS USAGE: diff --git a/release/man/fyi-crunched.1 b/release/man/fyi-crunched.1 index 30daa0d..a35de8b 100644 --- a/release/man/fyi-crunched.1 +++ b/release/man/fyi-crunched.1 @@ -1,6 +1,6 @@ -.TH "FYI CRUNCHED" "1" "April 2023" "crunched v0.10.8" "User Commands" +.TH "FYI CRUNCHED" "1" "June 2023" "crunched v0.11.0" "User Commands" .SH NAME -crunched \- Manual page for crunched v0.10.8. +crunched \- Manual page for crunched v0.11.0. .SH DESCRIPTION Crunched: Hello World .SS USAGE: diff --git a/release/man/fyi-debug.1 b/release/man/fyi-debug.1 index 525c7a6..cc1a400 100644 --- a/release/man/fyi-debug.1 +++ b/release/man/fyi-debug.1 @@ -1,6 +1,6 @@ -.TH "FYI DEBUG" "1" "April 2023" "debug v0.10.8" "User Commands" +.TH "FYI DEBUG" "1" "June 2023" "debug v0.11.0" "User Commands" .SH NAME -debug \- Manual page for debug v0.10.8. +debug \- Manual page for debug v0.11.0. .SH DESCRIPTION Debug: Hello World .SS USAGE: diff --git a/release/man/fyi-done.1 b/release/man/fyi-done.1 index cbab379..ded0ac2 100644 --- a/release/man/fyi-done.1 +++ b/release/man/fyi-done.1 @@ -1,6 +1,6 @@ -.TH "FYI DONE" "1" "April 2023" "done v0.10.8" "User Commands" +.TH "FYI DONE" "1" "June 2023" "done v0.11.0" "User Commands" .SH NAME -done \- Manual page for done v0.10.8. +done \- Manual page for done v0.11.0. .SH DESCRIPTION Done: Hello World .SS USAGE: diff --git a/release/man/fyi-error.1 b/release/man/fyi-error.1 index 888c69f..bd4c8cd 100644 --- a/release/man/fyi-error.1 +++ b/release/man/fyi-error.1 @@ -1,6 +1,6 @@ -.TH "FYI ERROR" "1" "April 2023" "error v0.10.8" "User Commands" +.TH "FYI ERROR" "1" "June 2023" "error v0.11.0" "User Commands" .SH NAME -error \- Manual page for error v0.10.8. +error \- Manual page for error v0.11.0. .SH DESCRIPTION Error: Hello World .SS USAGE: diff --git a/release/man/fyi-info.1 b/release/man/fyi-info.1 index b3e74df..ab56a35 100644 --- a/release/man/fyi-info.1 +++ b/release/man/fyi-info.1 @@ -1,6 +1,6 @@ -.TH "FYI INFO" "1" "April 2023" "info v0.10.8" "User Commands" +.TH "FYI INFO" "1" "June 2023" "info v0.11.0" "User Commands" .SH NAME -info \- Manual page for info v0.10.8. +info \- Manual page for info v0.11.0. .SH DESCRIPTION Info: Hello World .SS USAGE: diff --git a/release/man/fyi-notice.1 b/release/man/fyi-notice.1 index f3a1bbb..9247971 100644 --- a/release/man/fyi-notice.1 +++ b/release/man/fyi-notice.1 @@ -1,6 +1,6 @@ -.TH "FYI NOTICE" "1" "April 2023" "notice v0.10.8" "User Commands" +.TH "FYI NOTICE" "1" "June 2023" "notice v0.11.0" "User Commands" .SH NAME -notice \- Manual page for notice v0.10.8. +notice \- Manual page for notice v0.11.0. .SH DESCRIPTION Notice: Hello World .SS USAGE: diff --git a/release/man/fyi-print.1 b/release/man/fyi-print.1 index 5cc6ef7..036f21e 100644 --- a/release/man/fyi-print.1 +++ b/release/man/fyi-print.1 @@ -1,6 +1,6 @@ -.TH "FYI PRINT" "1" "April 2023" "print v0.10.8" "User Commands" +.TH "FYI PRINT" "1" "June 2023" "print v0.11.0" "User Commands" .SH NAME -print \- Manual page for print v0.10.8. +print \- Manual page for print v0.11.0. .SH DESCRIPTION Print a message without a prefix (or with a custom one). .SS USAGE: diff --git a/release/man/fyi-review.1 b/release/man/fyi-review.1 index 52bc3bd..845312e 100644 --- a/release/man/fyi-review.1 +++ b/release/man/fyi-review.1 @@ -1,6 +1,6 @@ -.TH "FYI REVIEW" "1" "April 2023" "review v0.10.8" "User Commands" +.TH "FYI REVIEW" "1" "June 2023" "review v0.11.0" "User Commands" .SH NAME -review \- Manual page for review v0.10.8. +review \- Manual page for review v0.11.0. .SH DESCRIPTION Review: Hello World .SS USAGE: diff --git a/release/man/fyi-success.1 b/release/man/fyi-success.1 index 545e5b6..2457aaf 100644 --- a/release/man/fyi-success.1 +++ b/release/man/fyi-success.1 @@ -1,6 +1,6 @@ -.TH "FYI SUCCESS" "1" "April 2023" "success v0.10.8" "User Commands" +.TH "FYI SUCCESS" "1" "June 2023" "success v0.11.0" "User Commands" .SH NAME -success \- Manual page for success v0.10.8. +success \- Manual page for success v0.11.0. .SH DESCRIPTION Success: Hello World .SS USAGE: diff --git a/release/man/fyi-task.1 b/release/man/fyi-task.1 index ddb0ae9..d33a35f 100644 --- a/release/man/fyi-task.1 +++ b/release/man/fyi-task.1 @@ -1,6 +1,6 @@ -.TH "FYI TASK" "1" "April 2023" "task v0.10.8" "User Commands" +.TH "FYI TASK" "1" "June 2023" "task v0.11.0" "User Commands" .SH NAME -task \- Manual page for task v0.10.8. +task \- Manual page for task v0.11.0. .SH DESCRIPTION Task: Hello World .SS USAGE: diff --git a/release/man/fyi-warning.1 b/release/man/fyi-warning.1 index 71affdc..d04481f 100644 --- a/release/man/fyi-warning.1 +++ b/release/man/fyi-warning.1 @@ -1,6 +1,6 @@ -.TH "FYI WARNING" "1" "April 2023" "warning v0.10.8" "User Commands" +.TH "FYI WARNING" "1" "June 2023" "warning v0.11.0" "User Commands" .SH NAME -warning \- Manual page for warning v0.10.8. +warning \- Manual page for warning v0.11.0. .SH DESCRIPTION Warning: Hello World .SS USAGE: diff --git a/release/man/fyi.1 b/release/man/fyi.1 index 14c4120..2f225c4 100644 --- a/release/man/fyi.1 +++ b/release/man/fyi.1 @@ -1,6 +1,6 @@ -.TH "FYI" "1" "April 2023" "FYI v0.10.8" "User Commands" +.TH "FYI" "1" "June 2023" "FYI v0.11.0" "User Commands" .SH NAME -FYI \- Manual page for fyi v0.10.8. +FYI \- Manual page for fyi v0.11.0. .SH DESCRIPTION A dead\-simple CLI status message printer for use in BASH scripts, etc. .SS USAGE: