From: Thomas Kupper Subject: Re: UPDATE: sysutils/exfetch -> 1.5.2.1 (hotfix applied) To: izzy Meyer , ports@openbsd.org Date: Thu, 19 Feb 2026 07:24:53 +0000 On 19.02.2026 07:16, Thomas Kupper wrote: > > > On 19.02.2026 00:26, izzy Meyer wrote: >> On Wed, 18 Feb 2026 16:53:39 -0600 >> izzy Meyer wrote: >> >>> Hello ports@ >>> >>> I've been feeling really motivated lately with exfetch and added some >>> new features to it (see changelog below). I want to get this out into >>> the wild as soon as possible, so people can play around and test it on >>> their machines. >>> >>> Here's a simple update to sysutils/exfetch to a tag with these new >>> features. >>> >>> Tested on amd64, works good. >>> >>> I'd like someone to test these new changes before they commit if >>> that's ok. > > - Offset works for me: > > grumpy$ exfetch -f 7 -a OpenBSD > >                 USER   -> oops@grumpy.somewhere.oops >                 OS     -> OpenBSD >                 VER    -> 7.8 >                 UPTIME -> 37 days, 11:17 >                 DE/WM  -> unknown >                 TERM   -> screen >                 SHELL  -> ksh >       _____     CPU    -> Intel Xeon CPU E5-2630 0 @ 2.30GHz >     \-     -/   GPU    -> unknown >  \_/ .`  ,   \  PKGS   -> 175 >  | ,    , 0 0 | LOAD   -> 1m: 0.33, 5m: 0.26, 15m: 0.43 >  |_  <   }  3 | SWAP   -> 11.43 / 1264.00 MiB >  / \`   . `  /  MEM    -> 52.32 / 1007.99 MiB >     /-_____-\ > > > I understand providing a negative value will raise an ArgumentError as > you mentioned in the man page. > > Is there a more elegant way than to show the whole call stack? Handle it > similar like the color (-c|--color) argument? > > grumpy$ exfetch -f -7 -a OpenBSD > Unhandled exception: ASCII offset cannot be negative. ILLEGAL > (ArgumentError) >   from exfetch in '__register_frame_info' >   from exfetch in '__register_frame_info' >   from exfetch in 'main' >   from exfetch in 'main' >   from exfetch in '__start' > > - Text-Only works as expected: > > grumpy$ exfetch -c 1 -f 1 -a OpenBSD | tee output.with.escape > grumpy$ exfetch -c 1 -T -f 1 -a OpenBSD | tee output.without.escape > > grumpy $ grep -c '\[' output.with.escape > 13 > grumpy $ grep -c '\[' output.without.escape > 0 One additional note, not related to the update: sorting the arguments in alphabetical order in the man page would be helpful, I think. >>> >>> /usr/ports/sysutils/exfetch git:(master+) $ make test >>> ===>  Regression tests for exfetch-1.5.2 >>> crystal spec --no-color -v -s -t -p --release >>> Parse:                             00:00:00.000283360 (   0.90MB) >>> Semantic (top level):              00:00:01.564889146 ( 124.76MB) >>> Semantic (new):                    00:00:00.004672048 ( 124.76MB) >>> Semantic (type declarations):      00:00:00.084020180 ( 124.76MB) >>> Semantic (abstract def check):     00:00:00.045015596 ( 124.76MB) >>> Semantic (restrictions augmenter): 00:00:00.016167933 ( 124.76MB) >>> Semantic (ivars initializers):     00:00:00.933157956 ( 196.82MB) >>> Semantic (cvars initializers):     00:00:00.023979597 ( 196.82MB) >>> Semantic (main):                   00:00:00.734872077 ( 228.95MB) >>> Semantic (cleanup):                00:00:00.001088280 ( 228.95MB) >>> Semantic (recursive struct check): 00:00:00.002413409 ( 228.95MB) >>> Codegen (crystal):                 00:00:00.943954401 ( 260.95MB) >>> Codegen (bc+obj):                  00:00:24.314646013 ( 260.95MB) >>> Codegen (linking):                 00:00:00.853759568 ( 260.95MB) >>> Macro runs: >>>   - >>> /usr/ports/pobj/exfetch-1.5.2/exfetch/lib/baked_file_system/src/ >>> loader.cr: >>> reused previous compilation (00:00:00.023271315) >>> >>> Codegen (bc+obj): >>>   - no previous .o files were reused >>> Exfetch::CLI >>>    .colorize >>>      wraps text in ansi codes >>>      handles bright colors >>>    .render >>>      renders output string >>> Exfetch::Manip >>>    .bytes_to_mebibytes >>>      converts bytes to mebibytes string >>>    .sanitize >>>      removes newlines and strips whitespace >>>    .has_command? >>>      returns true for existing commands >>>      returns false for non-existing commands >>>    .run_command >>>      runs a command and returns output >>>      returns empty string on failure >>>    .dir_size >>>      returns 0 for non-existent dir >>> Exfetch::Options >>>    .parse >>>      parses default options >>>      parses flags >>>      parses color argument >>>      parses padding >>> Exfetch::Resource >>>    .get_short_info >>>      returns basic info >>>    .get_uptime >>>      parses uptime correctly when mocked >>>    .get_shell >>>      returns shell basename >>>    .get_cpu >>>      returns cpu info >>> >>> Finished in 13.04 milliseconds >>> 18 examples, 0 failures, 0 errors, 0 pending >>> Execute: 00:00:00.059692262 >>> >>> Changelog: >>> * Since(1.5.1) >>> >>> Misc Changes: >>> >>> Optimizations: >>> >>> Bugfixes: >>> >>> New features: >>> - Added -T and --text-only options to disable ansi escape seqences >>> - Added -f LINES and --ascii-offset=LINES options to offset ASCII by >>> LINES >>> >> >> Whoops, caused a bug in the offset code where ascii art would cut off >> if there wasn't a corresponding label on that line. here's a new diff. >> git tag bumped to 1.5.2.1, future versions will return to the X.Y.Z >> format. >> >