From 03fc78bd40e254c7d3d96cbd4cdf46dcf1150fd3 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 3 Oct 2024 12:22:27 -0700 Subject: [PATCH 1/4] bump: oxford_join 0.4 --- refract/Cargo.toml | 3 ++- refract/build.rs | 14 ++++++++++---- refract/src/window.rs | 4 ++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/refract/Cargo.toml b/refract/Cargo.toml index fa164a3..8f5d7d8 100644 --- a/refract/Cargo.toml +++ b/refract/Cargo.toml @@ -89,6 +89,7 @@ description = "Image and/or directory paths to re-encode. Directories will be cr [build-dependencies] dowser = "0.9.*" +oxford_join = "0.4.*" toml = "0.8.14" version-compare = "0.2.*" @@ -98,7 +99,7 @@ crossbeam-channel = "0.5.*" dactyl = "0.7.*" dowser = "0.9.*" gtk = "=0.18.1" -oxford_join = "0.2.*" +oxford_join = "0.4.*" write_atomic = "0.5.*" [dependencies.refract_core] diff --git a/refract/build.rs b/refract/build.rs index fe545f0..bf05046 100644 --- a/refract/build.rs +++ b/refract/build.rs @@ -6,11 +6,15 @@ be pulled into GTK. */ use dowser::Extension; +use oxford_join::JoinFmt; use std::{ collections::HashMap, ffi::OsStr, fs::File, - io::Write, + io::{ + BufWriter, + Write, + }, path::PathBuf, process::{ Command, @@ -88,11 +92,13 @@ fn build_credits() { list.dedup(); // Save them as a slice value! - let mut file = _out_path("about-credits.txt") + let mut file = BufWriter::new( + _out_path("about-credits.txt") .and_then(|p| File::create(p).ok()) - .expect("Missing OUT_DIR."); + .expect("Missing OUT_DIR.") + ); - file.write_fmt(format_args!("&[{}]", list.join(","))) + write!(&mut file, "&[{}]", JoinFmt::new(list.iter(), ",")) .and_then(|_| file.flush()) .expect("Unable to save credits."); } diff --git a/refract/src/window.rs b/refract/src/window.rs index 9c4e351..7fc23c3 100644 --- a/refract/src/window.rs +++ b/refract/src/window.rs @@ -39,6 +39,7 @@ use gtk::{ prelude::*, ResponseType, }; +use oxford_join::OxfordJoinFmt; use refract_core::{ EncodeIter, FLAG_NO_AVIF_YCBCR, @@ -1109,7 +1110,6 @@ impl Window { /// /// This triggers when an encoding session starts. fn log_start(&self, count: usize, encoders: &[ImageKind]) { - use oxford_join::OxfordJoin; use std::fmt::Write; if encoders.is_empty() || count == 0 { return; } @@ -1124,7 +1124,7 @@ impl Window { ), count.nice_inflect("image", "images"), encoders.len().nice_inflect("encoder", "encoders"), - encoders.oxford_and(), + OxfordJoinFmt::and(encoders), ); self.add_flag(FLAG_TICK_STATUS); } From 522ed01d421c525c529a78eb8f9208c636eaa8ab Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Tue, 15 Oct 2024 20:43:21 -0700 Subject: [PATCH 2/4] bump: argyle 0.10 refactor: cli parsing --- refract/Cargo.toml | 3 +- refract/build.rs | 19 ++++++ refract/src/main.rs | 118 +++++++++++++------------------------- refract_core/Cargo.toml | 6 +- refract_core/src/error.rs | 76 +++++++++++++++++++----- 5 files changed, 126 insertions(+), 96 deletions(-) diff --git a/refract/Cargo.toml b/refract/Cargo.toml index 8f5d7d8..8bdcf1a 100644 --- a/refract/Cargo.toml +++ b/refract/Cargo.toml @@ -88,13 +88,14 @@ label = "" description = "Image and/or directory paths to re-encode. Directories will be crawled recursively." [build-dependencies] +argyle = "0.10.*" dowser = "0.9.*" oxford_join = "0.4.*" toml = "0.8.14" version-compare = "0.2.*" [dependencies] -argyle = "0.8.*" +argyle = "0.10.*" crossbeam-channel = "0.5.*" dactyl = "0.7.*" dowser = "0.9.*" diff --git a/refract/build.rs b/refract/build.rs index bf05046..44db613 100644 --- a/refract/build.rs +++ b/refract/build.rs @@ -5,6 +5,7 @@ This is used to compile a resource bundle of the various assets that need to be pulled into GTK. */ +use argyle::KeyWordsBuilder; use dowser::Extension; use oxford_join::JoinFmt; use std::{ @@ -35,11 +36,29 @@ pub fn main() { println!("cargo:rerun-if-changed=Cargo.toml"); println!("cargo:rerun-if-changed=skel"); + build_cli(); build_credits(); build_exts(); build_resources(); } +/// # Build CLI Keys. +fn build_cli() { + let mut builder = KeyWordsBuilder::default(); + builder.push_keys([ + "-h", "--help", + "--no-avif", + "--no-jxl", + "--no-webp", + "--no-lossless", + "--no-lossy", + "--no-ycbcr", + "-V", "--version", + ]); + builder.push_keys_with_values(["-l", "--list"]); + builder.save(_out_path("argyle.rs").expect("Missing OUT_DIR.")); +} + /// # Build Credits. /// /// This compiles a list of crates used as direct dependencies (to both GTK and diff --git a/refract/src/main.rs b/refract/src/main.rs index b1b8471..63f5904 100644 --- a/refract/src/main.rs +++ b/refract/src/main.rs @@ -70,12 +70,7 @@ use share::{ }; use window::Window; -use argyle::{ - Argue, - ArgyleError, - FLAG_HELP, - FLAG_VERSION, -}; +use argyle::Argument; use dowser::Dowser; use gtk::{ glib::Bytes, @@ -121,11 +116,8 @@ pub(crate) const CLI_NO_YCBCR: u8 = 0b0010_0000; fn main() { match _main() { Ok(()) => {}, - Err(RefractError::Argue(ArgyleError::WantsVersion)) => { - println!(concat!("Refract v", env!("CARGO_PKG_VERSION"))); - }, - Err(RefractError::Argue(ArgyleError::WantsHelp)) => { - helper(); + Err(e @ (RefractError::PrintHelp | RefractError::PrintVersion)) => { + println!("{e}"); }, Err(e) => { eprintln!("Error: {e}"); @@ -155,23 +147,46 @@ fn _main() -> Result<(), RefractError> { ); // Load CLI arguments, if any. - let args = Argue::new(FLAG_HELP | FLAG_VERSION)?.with_list(); + let args = argyle::args() + .with_keywords(include!(concat!(env!("OUT_DIR"), "/argyle.rs"))); + + let mut paths = Dowser::default(); + let mut flags = 0_u8; + for arg in args { + match arg { + Argument::Key("-h" | "--help") => return Err(RefractError::PrintHelp), + Argument::Key("--no-avif") => { flags |= CLI_NO_AVIF; }, + Argument::Key("--no-jxl") => { flags |= CLI_NO_JXL; }, + Argument::Key("--no-webp") => { flags |= CLI_NO_WEBP; }, + Argument::Key("--no-lossless") => { flags |= CLI_NO_LOSSLESS; }, + Argument::Key("--no-lossy") => { flags |= CLI_NO_LOSSY; }, + Argument::Key("--no-ycbcr") => { flags |= CLI_NO_YCBCR; }, + Argument::Key("-V" | "--version") => return Err(RefractError::PrintVersion), + + Argument::KeyWithValue("-l" | "--list", s) => if let Ok(s) = std::fs::read_to_string(s) { + paths = paths.with_paths(s.lines().filter_map(|line| { + let line = line.trim(); + if line.is_empty() { None } + else { Some(line) } + })); + }, + + // Assume paths. + Argument::Other(s) => { paths = paths.with_path(s); }, + Argument::InvalidUtf8(s) => { paths = paths.with_path(s); }, + + // Nothing else is relevant. + _ => {}, + } + } application.connect_activate(move |app| { - // Parse CLI setting overrides. - let flags = args.bitflags([ - (&b"--no-avif"[..], CLI_NO_AVIF), - (&b"--no-jxl"[..], CLI_NO_JXL), - (&b"--no-webp"[..], CLI_NO_WEBP), - (&b"--no-lossless"[..], CLI_NO_LOSSLESS), - (&b"--no-lossy"[..], CLI_NO_LOSSY), - (&b"--no-ycbcr"[..], CLI_NO_YCBCR), - ]); - - let window = Rc::new(Window::new(app, flags).expect("Unable to build GTK window.")); - let paths = Dowser::default() - .with_paths(args.args_os()) - .into_vec_filtered(window::is_jpeg_png); + let window = Rc::new(Window::new(app, flags) + .expect("Unable to build GTK window.")); + + // We have to clone this because GTK doesn't do Rust properly. Haha. + let paths = paths.clone().into_vec_filtered(window::is_jpeg_png); + setup_ui(&window, paths); window.paint(); }); @@ -347,54 +362,3 @@ fn setup_ui_window(window: &Rc) { preview_cb!(connect_hide, hide, 0.0); } } - -#[cold] -/// # Print Help. -fn helper() { - println!(concat!( - r" - ..oFaa7l;' - =>r??\O@@@@QNk; - :|Fjjug@@@@@@@@N}}: - ^/aPePN@@@@peWQ@Qez; - =iKBDB@@@O^:.::\kQO=~ - =iKQ@QWOP: ~gBQw'|Qgz, - =i6RwEQ#s' N@RQQl i@D: ", "\x1b[38;5;199mRefract\x1b[0;38;5;69m v", env!("CARGO_PKG_VERSION"), "\x1b[0m", r#" - =?|>a@@Nv'^Q@@@Qe ,aW| Guided image conversion from - ==;.\QQ@6,|Q@@@@p.;;+\, JPEG/PNG to AVIF/JPEG-XL/WebP. - '\tlFw9Wgs~W@@@@S ,;' - .^|QQp6D6t^iDRo; - ~b@BEwDEu|::: - rR@Q6t7|==' - 'i6Ko\=; - `''''` - -USAGE: - refract [FLAGS] [OPTIONS] ... - -FORMAT FLAGS: - --no-avif Skip AVIF encoding. - --no-jxl Skip JPEG-XL encoding. - --no-webp Skip WebP encoding. - -MODE FLAGS: - --no-lossless Skip lossless encoding passes. - --no-lossy Skip lossy encoding passes. - --no-ycbcr Skip AVIF YCbCr encoding passes. - -MISC FLAGS: - -h, --help Print help information and exit. - -V, --version Print version information and exit. - -OPTIONS: - -l, --list Read (absolute) image and/or directory paths from this - text file — or STDIN if "-" — one path per line, instead - of or in addition to those specified inline via - . - -TRAILING ARGS: - ... Image and/or directory paths to re-encode. Directories - will be crawled recursively. -"# - )); -} diff --git a/refract_core/Cargo.toml b/refract_core/Cargo.toml index ce4b6da..6edc158 100644 --- a/refract_core/Cargo.toml +++ b/refract_core/Cargo.toml @@ -19,10 +19,6 @@ version = "=3.10.7" default-features = false features = [ "rust_backend" ] -[dependencies.argyle] -version = "0.8.*" -optional = true - [dependencies.jpegxl-sys] version = "=0.11.1" default-features = false @@ -47,7 +43,7 @@ default = [] # This feature adds a few generic RefractError types for the binary. It is not # something external crates implementing this library would really need to use. -bin = [ "argyle" ] +bin = [] # This feature enables decoding support for the next-gen image formats, i.e. # WebP, AVIF, and JPEG XL. diff --git a/refract_core/src/error.rs b/refract_core/src/error.rs index a45f67b..17e340b 100644 --- a/refract_core/src/error.rs +++ b/refract_core/src/error.rs @@ -10,6 +10,55 @@ use std::{ +#[cfg(feature = "bin")] +/// # Help Text. +const HELP: &str = concat!(r" + ..oFaa7l;' + =>r??\O@@@@QNk; + :|Fjjug@@@@@@@@N}}: + ^/aPePN@@@@peWQ@Qez; + =iKBDB@@@O^:.::\kQO=~ + =iKQ@QWOP: ~gBQw'|Qgz, + =i6RwEQ#s' N@RQQl i@D: ", "\x1b[38;5;199mRefract\x1b[0;38;5;69m v", env!("CARGO_PKG_VERSION"), "\x1b[0m", r#" + =?|>a@@Nv'^Q@@@Qe ,aW| Guided image conversion from + ==;.\QQ@6,|Q@@@@p.;;+\, JPEG/PNG to AVIF/JPEG-XL/WebP. + '\tlFw9Wgs~W@@@@S ,;' + .^|QQp6D6t^iDRo; + ~b@BEwDEu|::: + rR@Q6t7|==' + 'i6Ko\=; + `''''` + +USAGE: + refract [FLAGS] [OPTIONS] ... + +FORMAT FLAGS: + --no-avif Skip AVIF encoding. + --no-jxl Skip JPEG-XL encoding. + --no-webp Skip WebP encoding. + +MODE FLAGS: + --no-lossless Skip lossless encoding passes. + --no-lossy Skip lossy encoding passes. + --no-ycbcr Skip AVIF YCbCr encoding passes. + +MISC FLAGS: + -h, --help Print help information and exit. + -V, --version Print version information and exit. + +OPTIONS: + -l, --list Read (absolute) image and/or directory paths from this + text file — or STDIN if "-" — one path per line, instead + of or in addition to those specified inline via + . + +TRAILING ARGS: + ... Image and/or directory paths to re-encode. Directories + will be crawled recursively. +"#); + + + #[derive(Debug, Copy, Clone, Eq, PartialEq)] /// # Errors. pub enum RefractError { @@ -43,10 +92,6 @@ pub enum RefractError { /// # Image is too big. TooBig, - #[cfg(feature = "bin")] - /// # CLI passthrough error. - Argue(argyle::ArgyleError), - #[cfg(feature = "bin")] /// # GTK failed. GtkInit, @@ -70,6 +115,14 @@ pub enum RefractError { #[cfg(feature = "bin")] /// # I/O write error. Write, + + #[cfg(feature = "bin")] + /// # Print Help (Not an Error). + PrintHelp, + + #[cfg(feature = "bin")] + /// # Print Version (Not an Error). + PrintVersion, } impl Error for RefractError {} @@ -79,12 +132,6 @@ impl AsRef for RefractError { fn as_ref(&self) -> &str { self.as_str() } } -#[cfg(feature = "bin")] -impl From for RefractError { - #[inline] - fn from(err: argyle::ArgyleError) -> Self { Self::Argue(err) } -} - impl fmt::Display for RefractError { #[inline] fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { @@ -124,9 +171,6 @@ impl RefractError { Self::Overflow => "The image dimensions are out of range.", Self::TooBig => "The encoded image was too big.", - #[cfg(feature = "bin")] - Self::Argue(a) => a.as_str(), - #[cfg(feature = "bin")] Self::GtkInit => "Failed to initialize GTK.", @@ -144,6 +188,12 @@ impl RefractError { #[cfg(feature = "bin")] Self::Write => "Unable to save the file.", + + #[cfg(feature = "bin")] + Self::PrintHelp => HELP, + + #[cfg(feature = "bin")] + Self::PrintVersion => concat!("Refract v", env!("CARGO_PKG_VERSION")), } } } From 9407393fdb8035487a25bce8fc0b3e5b85723f19 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 17 Oct 2024 19:20:11 -0700 Subject: [PATCH 3/4] bump: 0.11.11 --- refract/Cargo.toml | 2 +- refract_core/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/refract/Cargo.toml b/refract/Cargo.toml index 8bdcf1a..ed1ec32 100644 --- a/refract/Cargo.toml +++ b/refract/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "refract" -version = "0.11.10" +version = "0.11.11" license = "WTFPL" authors = ["Josh Stoik "] edition = "2021" diff --git a/refract_core/Cargo.toml b/refract_core/Cargo.toml index 6edc158..ed5037f 100644 --- a/refract_core/Cargo.toml +++ b/refract_core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "refract_core" -version = "0.11.10" +version = "0.11.11" license = "WTFPL" authors = ["Josh Stoik "] edition = "2021" From 6c4d75e4122620f49648439dacf16c8043a4d7e6 Mon Sep 17 00:00:00 2001 From: Josh Stoik Date: Thu, 17 Oct 2024 19:24:27 -0700 Subject: [PATCH 4/4] build: 0.11.11 --- CREDITS.md | 33 ++++++++++++++++---------------- release/completions/refract.bash | 2 +- release/man/refract.1 | 4 ++-- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index 793444e..4949ebe 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,17 +1,17 @@ # Project Dependencies Package: refract - Version: 0.11.10 - Generated: 2024-10-02 02:23:31 UTC + Version: 0.11.11 + Generated: 2024-10-18 02:20:14 UTC | Package | Version | Author(s) | License | | ---- | ---- | ---- | ---- | | [adler2](https://github.com/oyvindln/adler2) | 2.0.0 | [Jonas Schievink](mailto:jonasschievink@gmail.com) and [oyvindln](mailto:oyvindln@users.noreply.github.com) | 0BSD, Apache-2.0, or MIT | | [ahash](https://github.com/tkaitchuck/ahash) | 0.8.11 | [Tom Kaitchuck](mailto:tom.kaitchuck@gmail.com) | Apache-2.0 or MIT | -| [argyle](https://github.com/Blobfolio/argyle) | 0.8.1 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [argyle](https://github.com/Blobfolio/argyle) | 0.10.0 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | | [atk](https://github.com/gtk-rs/gtk3-rs) | 0.18.0 | The gtk-rs Project Developers | MIT | | [atk-sys](https://github.com/gtk-rs/gtk3-rs) | 0.18.0 | The gtk-rs Project Developers | MIT | | [bitflags](https://github.com/bitflags/bitflags) | 2.6.0 | The Rust Project Developers | Apache-2.0 or MIT | -| [bytemuck](https://github.com/Lokathor/bytemuck) | 1.18.0 | [Lokathor](mailto:zefria@gmail.com) | Apache-2.0, MIT, or Zlib | +| [bytemuck](https://github.com/Lokathor/bytemuck) | 1.19.0 | [Lokathor](mailto:zefria@gmail.com) | Apache-2.0, MIT, or Zlib | | [cairo-rs](https://github.com/gtk-rs/gtk-rs-core) | 0.18.5 | The gtk-rs Project Developers | MIT | | [cairo-sys-rs](https://github.com/gtk-rs/gtk-rs-core) | 0.18.2 | The gtk-rs Project Developers | MIT | | [cfg-if](https://github.com/alexcrichton/cfg-if) | 1.0.0 | [Alex Crichton](mailto:alex@alexcrichton.com) | Apache-2.0 or MIT | @@ -27,13 +27,13 @@ | [fastrand](https://github.com/smol-rs/fastrand) | 2.1.1 | [Stjepan Glavina](mailto:stjepang@gmail.com) | Apache-2.0 or MIT | | [field-offset](https://github.com/Diggsey/rust-field-offset) | 0.3.6 | [Diggory Blake](mailto:diggsey@googlemail.com) | Apache-2.0 or MIT | | [flate2](https://github.com/rust-lang/flate2-rs) | 1.0.34 | [Alex Crichton](mailto:alex@alexcrichton.com) and [Josh Triplett](mailto:josh@joshtriplett.org) | Apache-2.0 or MIT | -| [futures-channel](https://github.com/rust-lang/futures-rs) | 0.3.30 | | Apache-2.0 or MIT | -| [futures-core](https://github.com/rust-lang/futures-rs) | 0.3.30 | | Apache-2.0 or MIT | -| [futures-executor](https://github.com/rust-lang/futures-rs) | 0.3.30 | | Apache-2.0 or MIT | -| [futures-io](https://github.com/rust-lang/futures-rs) | 0.3.30 | | Apache-2.0 or MIT | -| [futures-macro](https://github.com/rust-lang/futures-rs) | 0.3.30 | | Apache-2.0 or MIT | -| [futures-task](https://github.com/rust-lang/futures-rs) | 0.3.30 | | Apache-2.0 or MIT | -| [futures-util](https://github.com/rust-lang/futures-rs) | 0.3.30 | | Apache-2.0 or MIT | +| [futures-channel](https://github.com/rust-lang/futures-rs) | 0.3.31 | | Apache-2.0 or MIT | +| [futures-core](https://github.com/rust-lang/futures-rs) | 0.3.31 | | Apache-2.0 or MIT | +| [futures-executor](https://github.com/rust-lang/futures-rs) | 0.3.31 | | Apache-2.0 or MIT | +| [futures-io](https://github.com/rust-lang/futures-rs) | 0.3.31 | | Apache-2.0 or MIT | +| [futures-macro](https://github.com/rust-lang/futures-rs) | 0.3.31 | | Apache-2.0 or MIT | +| [futures-task](https://github.com/rust-lang/futures-rs) | 0.3.31 | | Apache-2.0 or MIT | +| [futures-util](https://github.com/rust-lang/futures-rs) | 0.3.31 | | Apache-2.0 or MIT | | [gdk](https://github.com/gtk-rs/gtk3-rs) | 0.18.0 | The gtk-rs Project Developers | MIT | | [gdk-pixbuf](https://github.com/gtk-rs/gtk-rs-core) | 0.18.5 | The gtk-rs Project Developers | MIT | | [gdk-pixbuf-sys](https://github.com/gtk-rs/gtk-rs-core) | 0.18.0 | The gtk-rs Project Developers | MIT | @@ -54,29 +54,28 @@ | [jpegxl-sys](https://github.com/inflation/jpegxl-rs) | 0.11.1+libjxl-0.11.0 | [Inflation](mailto:me@shimotsuki.ink) | GPL-3.0-or-later | | [libaom-sys](https://github.com/njaard/libavif-rs) | 0.17.0+libaom.3.9.1 | [Charles Samuels](mailto:ks@ks.ax), [Paolo Barbolini](mailto:paolo@paolo565.org), and [Kornel](mailto:kornel@geekhood.net) | BSD-2-Clause | | [libavif-sys](https://github.com/njaard/libavif-rs) | 0.17.0+libavif.1.0.4 | [Charles Samuels](mailto:ks@ks.ax) and [Paolo Barbolini](mailto:paolo@paolo565.org) | BSD-2-Clause | -| [libc](https://github.com/rust-lang/libc) | 0.2.159 | The Rust Project Developers | Apache-2.0 or MIT | +| [libc](https://github.com/rust-lang/libc) | 0.2.161 | The Rust Project Developers | Apache-2.0 or MIT | | [libwebp-sys2](https://github.com/qnighy/libwebp-sys2-rs) | 0.1.9 | [Masaki Hara](mailto:ackie.h.gmai@gmail.com) | BSD-3-Clause | | [link-cplusplus](https://github.com/dtolnay/link-cplusplus) | 1.0.9 | [David Tolnay](mailto:dtolnay@gmail.com) | Apache-2.0 or MIT | | [lodepng](https://github.com/kornelski/lodepng-rust.git) | 3.10.7 | [Kornel](mailto:kornel@geekhood.net) and [Lode Vandevenne](mailto:lvandeve@gmail.com) | Zlib | | [memchr](https://github.com/BurntSushi/memchr) | 2.7.4 | [Andrew Gallant](mailto:jamslam@gmail.com) and bluss | MIT or Unlicense | | [memoffset](https://github.com/Gilnaa/memoffset) | 0.9.1 | [Gilad Naaman](mailto:gilad.naaman@gmail.com) | MIT | | [miniz_oxide](https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide) | 0.8.0 | [Frommi](mailto:daniil.liferenko@gmail.com) and [oyvindln](mailto:oyvindln@users.noreply.github.com) | Apache-2.0, MIT, or Zlib | -| [once_cell](https://github.com/matklad/once_cell) | 1.20.1 | [Aleksey Kladov](mailto:aleksey.kladov@gmail.com) | Apache-2.0 or MIT | -| [oxford_join](https://github.com/Blobfolio/oxford_join) | 0.2.10 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | +| [once_cell](https://github.com/matklad/once_cell) | 1.20.2 | [Aleksey Kladov](mailto:aleksey.kladov@gmail.com) | Apache-2.0 or MIT | +| [oxford_join](https://github.com/Blobfolio/oxford_join) | 0.4.0 | [Blobfolio, LLC.](mailto:hello@blobfolio.com) | WTFPL | | [pango](https://github.com/gtk-rs/gtk-rs-core) | 0.18.3 | The gtk-rs Project Developers | MIT | | [pango-sys](https://github.com/gtk-rs/gtk-rs-core) | 0.18.0 | The gtk-rs Project Developers | MIT | | [pin-project-lite](https://github.com/taiki-e/pin-project-lite) | 0.2.14 | | Apache-2.0 or MIT | | [pin-utils](https://github.com/rust-lang-nursery/pin-utils) | 0.1.0 | [Josef Brandl](mailto:mail@josefbrandl.de) | Apache-2.0 or MIT | -| [portable-atomic](https://github.com/taiki-e/portable-atomic) | 1.9.0 | | Apache-2.0 or MIT | | [proc-macro-crate](https://github.com/bkchr/proc-macro-crate) | 1.3.1 | [Bastian Köcher](mailto:git@kchr.de) | Apache-2.0 or MIT | | [proc-macro-crate](https://github.com/bkchr/proc-macro-crate) | 2.0.0 | [Bastian Köcher](mailto:git@kchr.de) | Apache-2.0 or MIT | | [proc-macro-error](https://gitlab.com/CreepySkeleton/proc-macro-error) | 1.0.4 | [CreepySkeleton](mailto:creepy-skeleton@yandex.ru) | Apache-2.0 or MIT | | [proc-macro-error-attr](https://gitlab.com/CreepySkeleton/proc-macro-error) | 1.0.4 | [CreepySkeleton](mailto:creepy-skeleton@yandex.ru) | Apache-2.0 or MIT | -| [proc-macro2](https://github.com/dtolnay/proc-macro2) | 1.0.86 | [David Tolnay](mailto:dtolnay@gmail.com) and [Alex Crichton](mailto:alex@alexcrichton.com) | Apache-2.0 or MIT | +| [proc-macro2](https://github.com/dtolnay/proc-macro2) | 1.0.88 | [David Tolnay](mailto:dtolnay@gmail.com) and [Alex Crichton](mailto:alex@alexcrichton.com) | Apache-2.0 or MIT | | [quote](https://github.com/dtolnay/quote) | 1.0.37 | [David Tolnay](mailto:dtolnay@gmail.com) | Apache-2.0 or MIT | | [rayon](https://github.com/rayon-rs/rayon) | 1.10.0 | [Niko Matsakis](mailto:niko@alum.mit.edu) and [Josh Stone](mailto:cuviper@gmail.com) | Apache-2.0 or MIT | | [rayon-core](https://github.com/rayon-rs/rayon) | 1.12.1 | [Niko Matsakis](mailto:niko@alum.mit.edu) and [Josh Stone](mailto:cuviper@gmail.com) | Apache-2.0 or MIT | -| [refract_core](https://github.com/Blobfolio/refract) | 0.11.10 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | +| [refract_core](https://github.com/Blobfolio/refract) | 0.11.11 | [Josh Stoik](mailto:josh@blobfolio.com) | WTFPL | | [rgb](https://github.com/kornelski/rust-rgb) | 0.8.50 | [Kornel Lesiński](mailto:kornel@geekhood.net) and [James Forster](mailto:james.forsterer@gmail.com) | MIT | | [serde](https://github.com/serde-rs/serde) | 1.0.210 | [Erick Tryzelaar](mailto:erick.tryzelaar@gmail.com) and [David Tolnay](mailto:dtolnay@gmail.com) | Apache-2.0 or MIT | | [slab](https://github.com/tokio-rs/slab) | 0.4.9 | [Carl Lerche](mailto:me@carllerche.com) | MIT | diff --git a/release/completions/refract.bash b/release/completions/refract.bash index 75d67ca..08031dc 100644 --- a/release/completions/refract.bash +++ b/release/completions/refract.bash @@ -28,7 +28,7 @@ _basher___refract() { return 0 fi case "${prev}" in - -l|--list) + --list|-l) if [ -z "$( declare -f _filedir )" ]; then COMPREPLY=( $( compgen -f "${cur}" ) ) else diff --git a/release/man/refract.1 b/release/man/refract.1 index 17a831a..5ecdb1c 100644 --- a/release/man/refract.1 +++ b/release/man/refract.1 @@ -1,6 +1,6 @@ -.TH "REFRACT" "1" "October 2024" "Refract v0.11.10" "User Commands" +.TH "REFRACT" "1" "October 2024" "refract v0.11.11" "User Commands" .SH NAME -Refract \- Manual page for refract v0.11.10. +REFRACT \- Manual page for refract v0.11.11. .SH DESCRIPTION Guided AVIF/JPEG XL/WebP conversion for JPEG and PNG sources. .SS USAGE: