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:16:49 +0000

Download raw body.

Thread

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

>>
>> /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.
>