Index | Thread | Search

From:
Thomas Kupper <mailing.list@kupper.li>
Subject:
Re: UPDATE: sysutils/exfetch -> 1.5.2.1 (hotfix applied)
To:
izzy Meyer <izder456@disroot.org>, ports@openbsd.org
Date:
Thu, 19 Feb 2026 07:24:53 +0000

Download raw body.

Thread

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 <izder456@disroot.org> 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.
>>
>