Skip to content

Consolidate search-file command into search - #788

Open
otherJL0 wants to merge 8 commits into
aerynOS:mainfrom
otherJL0:moss-search-filepath
Open

Consolidate search-file command into search#788
otherJL0 wants to merge 8 commits into
aerynOS:mainfrom
otherJL0:moss-search-filepath

Conversation

@otherJL0

Copy link
Copy Markdown
Contributor

#729

This PR fixes some small issues with moss search and adds the search-file functionality to the search command. I've added a deprecation warning to search-file to steer users towards the consolidated search command.

@otherJL0

This comment was marked as resolved.

@otherJL0
otherJL0 force-pushed the moss-search-filepath branch from 54dbac2 to 80c8bdd Compare May 26, 2026 11:24
@otherJL0
otherJL0 marked this pull request as ready for review May 26, 2026 11:26
@otherJL0
otherJL0 requested review from ermo, jplatte and tarkah as code owners May 26, 2026 11:26
@otherJL0
otherJL0 force-pushed the moss-search-filepath branch from 80c8bdd to 68d0471 Compare June 1, 2026 11:11
@ermo

ermo commented Jun 5, 2026

Copy link
Copy Markdown
Member

@otherJL0 Needs a rebase.

@otherJL0
otherJL0 force-pushed the moss-search-filepath branch from 68d0471 to c8e4912 Compare June 6, 2026 00:26
@otherJL0
otherJL0 force-pushed the moss-search-filepath branch from c8e4912 to 0b4ebef Compare June 18, 2026 17:22
@ermo

ermo commented Jun 18, 2026

Copy link
Copy Markdown
Member

Please be aware that this may need another rebase soon. I'll poke you as soon as we're ready for it to be reviewed and landed.

@ermo

ermo commented Jun 19, 2026

Copy link
Copy Markdown
Member

Ready to be rebased onto main now I believe.

@otherJL0
otherJL0 force-pushed the moss-search-filepath branch from 0b4ebef to 988806d Compare June 20, 2026 22:23
@otherJL0
otherJL0 force-pushed the moss-search-filepath branch from 988806d to dda1208 Compare July 3, 2026 18:32

@tarkah tarkah left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey sorry for the late review! This makes sense, but isn't this a regression in that the search string now must contain a path separator?

I have no way to search for the file "hx".. it'll default now to doing a package search.

Should we add a "--file" flag that explicitly enables file search? At that point, how much better is this than the original "search-file" command?

@otherJL0

otherJL0 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Hey sorry for the late review! This makes sense, but isn't this a regression in that the search string now must contain a path separator?

I have no way to search for the file "hx".. it'll default now to doing a package search.

Should we add a "--file" flag that explicitly enables file search? At that point, how much better is this than the original "search-file" command?

Hey thanks for the review! The flag idea makes sense because the logic "treat this as a filepath if contains '/'" is a little flimsy.

As for the direction we want to go, that might be a misunderstanding on my part. This PR is an attempt to address #739 (comment) and potentially close out #729. Based on the exchange with @ermo here. I think the --file flag makes the intention clearer but I also just want to clarify the final intended behavior. Below is the current behavior and trajectory:

# default: search for substring in package name or description
moss search hx

# default: '/' found in substring, search for files
moss search /usr/bin/hx

# default: search string matches provider syntax, search by provider
# currently requires exact match
moss search 'binary(hx)'


## Potential future work: fuzzy search with provider syntax
## NOT IMPLEMENTED YET, this will return nothing
moss search 'library(yaml)'

# file flag: search for file 
moss search --file hx

# provides flag: search for binary file
moss search --provides hx

# provides flag with type: search for a specified provider
moss search --provides=lib hx # soname(hx)
moss search --provides=pkg hx # pkg(hx)

Does this seem right so far?

@ermo

ermo commented Jul 6, 2026

Copy link
Copy Markdown
Member

@otherJL0 That's almost what I had in mind, except:

# default: search for substring in package name, description, provider, files etc.
# This implies "no filtering/narrowing of seach domain"
moss search hx

# default: '/' found in substring, search for files only
# The intent is to make the `--file` argument implicit if a path is given as a search argument
# and is an intuitive way of searching for a file for most people.
# Basically, act *as if* 'search_file' had been invoked instead of just 'search'.
moss search /usr/bin/hx

# default: search string matches provider syntax, search by provider.
# Currently requires exact match (this should continue to be the case).
moss search 'binary(hx)'
moss search 'soname(some.so)'

## Potential future work: fuzzy search with provider syntax.
## NOT IMPLEMENTED YET, this will return nothing.
moss search 'library(yaml)'

# provides flag: search all providers for fuzzy hits.
# This would explicitly filter out filenames and descriptions (since neither are providers).
moss search --provides hx

# provides flag with type: search for a specified provider "kind"
# Here, providers are expected to have discoverable aliases, which will then
# be coerced into the actual correct provider syntax and shown to the user
# this ties into the 'library(yaml)' example above, and is a stricter filter.
moss search --provides=lib hx # soname(hx)
moss search --provides=pkg hx # name(hx)

@ermo

ermo commented Jul 8, 2026

Copy link
Copy Markdown
Member

@otherJL0 I have clarified the UX I was aiming for. Hope it makes sense?

The idea is basically that normal users will never need to use anything but moss search foo or moss search /foo/bar.

Packagers (who are required to understand the provider concept), can then use provider syntax and the --provides flag as filters to narrow down searches.

@otherJL0

otherJL0 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

@ermo this kinda makes sense. I just want to clarify how the general search will work. So naively, all three searches can get lumped into something like

> moss search ssh
Fuzzy Search Results:
  cryptsetup-ssh-token                          Cryptsetup LUKS2 SSH token
  ksshaskpass                                   Front-end for ssh-add which stores the password of the ssh key in KWallet
  ksshaskpass-dbginfo                           Debugging symbols for ksshaskpass
  libssh                                        C library for SSHv2 protocol support
  libssh-dbginfo                                Debugging symbols for libssh
  libssh-devel                                  Development files for libssh
  libssh2                                       libssh2 is a client-side C library implementing the SSH2 protocol
  libssh2-dbginfo                               Debugging symbols for libssh2
  libssh2-devel                                 Development files for libssh2
  openssh                                       OpenSSH (OpenBSD Secure Shell)
  openssh-dbginfo                               Debugging symbols for openssh
  openssh-server                                OpenSSH - Server daemon
  openssh-server-systemd-preset-vendor-enable   OpenSSH - Server daemon vendor-enabled systemd preset
  qemu-block-ssh                                QEMU SSH block driver
  sshfs                                         A network filesystem client to connect to SSH servers
  sshfs-dbginfo                                 Debugging symbols for sshfs
Provider=binary Search:
  openssh   OpenSSH (OpenBSD Secure Shell)
File Search:
  /usr/share/icons/Adwaita/cursors/crosshair from adwaita-icon-theme
  /usr/share/bash-completion/completions/_ssh-inscribe from bash-completion
  /usr/share/bash-completion/completions/_sshi from bash-completion
  /usr/share/bash-completion/completions/autossh from bash-completion
  /usr/share/bash-completion/completions/mussh from bash-completion
  /usr/share/bash-completion/completions/ssh-add from bash-completion
  # .. over 400 results
  /usr/share/man/man1/ssh-keygen.1 from openssh
  /usr/share/man/man1/ssh-keyscan.1 from openssh
  /usr/share/man/man1/ssh.1 from openssh
  /usr/share/man/man5/ssh_config.5 from openssh
  /usr/share/man/man8/ssh-keysign.8 from openssh
  /usr/share/man/man8/ssh-pkcs11-helper.8 from openssh
  /usr/share/man/man8/ssh-sk-helper.8 from openssh
  /usr/share/openssh/README.ssh from openssh
  /usr/include/qt6/QtCore/qtclasshelpermacros.h from qt6-base-devel

which seems noisy. So for a simple search instead of showing every single file path that matches from a package, it could be something like show every package name and summary that has a file which contains the search term, something like

> moss search ssh
Fuzzy Search Results:
  cryptsetup-ssh-token                          Cryptsetup LUKS2 SSH token
  ksshaskpass                                   Front-end for ssh-add which stores the password of the ssh key in KWallet
  ksshaskpass-dbginfo                           Debugging symbols for ksshaskpass
  libssh                                        C library for SSHv2 protocol support
  libssh-dbginfo                                Debugging symbols for libssh
  libssh-devel                                  Development files for libssh
  libssh2                                       libssh2 is a client-side C library implementing the SSH2 protocol
  libssh2-dbginfo                               Debugging symbols for libssh2
  libssh2-devel                                 Development files for libssh2
  openssh                                       OpenSSH (OpenBSD Secure Shell)
  openssh-dbginfo                               Debugging symbols for openssh
  openssh-server                                OpenSSH - Server daemon
  openssh-server-systemd-preset-vendor-enable   OpenSSH - Server daemon vendor-enabled systemd preset
  qemu-block-ssh                                QEMU SSH block driver
  sshfs                                         A network filesystem client to connect to SSH servers
  sshfs-dbginfo                                 Debugging symbols for sshfs
Provider=binary Search:
  openssh   OpenSSH (OpenBSD Secure Shell)
File Search: # Contains at least one filepath where the substring `ssh` appears
  adwaita-icon-theme   The Adwaita Icon Theme package contains an assortment of non-scalable icons of different sizes and themes.
  autoconf-archive     A collection of macros for Autoconf
  avahi                Avahi - Service Discovery for Linux using mDNS/DNS-SD
  bash-completion      Programmable completion functions for bash
  botan-devel          Development files for botan
  botan-docs           A C++ cryptography library
  boulder              Modern package building tool
  breeze-cursor-theme  Artwork, styles and assets for the Breeze visual style for the Plasma Desktop
  breeze-icons         Breeze icon theme
  gcr                  GCR is a library for displaying certificates and crypto UI, accessing key stores
  gcr-3                Older ABI for GCR library
  github-cli           GitHub CLI brings GitHub to your terminal
  gnome-keyring        gnome-keyring is a program that keep password and other secrets for users
  helix                A post-modern modal text editor.
  kitty                Cross-platform, fast, feature-rich, GPU based terminal
  konsole-part         konsole kpart plugin
  ksshaskpass          Front-end for ssh-add which stores the password of the ssh key in KWallet
  libssh               C library for SSHv2 protocol support
  libssh2              libssh2 is a client-side C library implementing the SSH2 protocol
  libssh2-devel        Development files for libssh2
  libvirt              Libvirt native C API and daemons
  linux-stable         The Linux Kernel - Stable
  nss-devel            Network Security Services
  openssh              OpenSSH (OpenBSD Secure Shell)
  plasma-nm            Plasma applet for managing network connections
  podman               A tool for managing OCI containers and pods
  pop-os-icon-theme    Pop Icons by System76
  python-cryptography  A package designed to expose cryptographic recipes and primitives to Python developers
  qemu-block-ssh       QEMU SSH block driver
  qt6-base-devel       Cross platform application and UI framework
  qt6-svg-devel        Development files for qt6-svg
  qt6-tools-devel      Qt6 QtTools Module
  sshfs                A network filesystem client to connect to SSH servers
  systemd              A System and Service Manager
  systemd-tmpfiles     Creates, deletes, and cleans up files and directories
  virt-manager         Manage virtual machines with virt-manager
  zig                  General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software
  zsh                  Extensible shell designed for interactive use

This could be the simple path and then the search output with all the explicit file paths is shown when the --file flag is passed:

> moss search --file ssh
  /usr/share/icons/Adwaita/cursors/crosshair from adwaita-icon-theme
  /usr/share/bash-completion/completions/_ssh-inscribe from bash-completion
  /usr/share/bash-completion/completions/_sshi from bash-completion
  /usr/share/bash-completion/completions/autossh from bash-completion
  /usr/share/bash-completion/completions/mussh from bash-completion
  /usr/share/bash-completion/completions/ssh-add from bash-completion
  # .. over 400 results
  /usr/share/man/man1/ssh-keygen.1 from openssh
  /usr/share/man/man1/ssh-keyscan.1 from openssh
  /usr/share/man/man1/ssh.1 from openssh
  /usr/share/man/man5/ssh_config.5 from openssh
  /usr/share/man/man8/ssh-keysign.8 from openssh
  /usr/share/man/man8/ssh-pkcs11-helper.8 from openssh
  /usr/share/man/man8/ssh-sk-helper.8 from openssh
  /usr/share/openssh/README.ssh from openssh
  /usr/include/qt6/QtCore/qtclasshelpermacros.h from qt6-base-devel

@ermo

ermo commented Jul 9, 2026

Copy link
Copy Markdown
Member

This could be the simple path and then the search output with all the explicit file paths is shown when the --file flag is passed:

Maybe make it --files?

Otherwise, it looks fine. 👍

EDIT: I wonder if we can make it use a more tree-like indent:

adwaita-icon-theme:
├ (....)
├ (....)
└ (....)
openssh:
├ (....)
├ (....)
└ (....)

Then we can sort on first the package name, then display the paths alphabetically beneath each?

@otherJL0

otherJL0 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

I like the tree layout idea for the --files flag. My only concern with that is then the output is more difficult to grep through:

# original format shows source package at end of line
> moss search --files ssh | grep 'config'
/usr/lib/helix/runtime/grammars/sshclientconfig.so from helix
/usr/lib/helix/runtime/queries/sshclientconfig/highlights.scm from helix
/usr/lib/pkgconfig/libssh2.pc from libssh2-devel
/usr/share/man/man3/libssh2_keepalive_config.3 from libssh2-devel
/usr/share/defaults/ssh/ssh_config.d/20-systemd-ssh-proxy.conf from systemd
/usr/share/defaults/ssh/ssh_config from openssh
/usr/share/defaults/ssh/ssh_config.d/ssh_config_aerynos.conf from openssh
/usr/share/man/man5/ssh_config.5 from openssh


# tree format organizes package name a few lines above, hard to grep
> moss search --files ssh | grep 'config'
├ /usr/lib/helix/runtime/grammars/sshclientconfig.so
├ /usr/lib/helix/runtime/queries/sshclientconfig/highlights.scm
├ /usr/lib/pkgconfig/libssh2.pc
├ /usr/share/man/man3/libssh2_keepalive_config.3
├ /usr/share/defaults/ssh/ssh_config.d/20-systemd-ssh-proxy.conf
├ /usr/share/defaults/ssh/ssh_config
├ /usr/share/defaults/ssh/ssh_config.d/ssh_config_aerynos.conf
├ /usr/share/man/man5/ssh_config.5

I was thinking there could be another flag like --files --tree to format the output. I've also been thinking about different ways to display the output like --json, --csv, etc.

I'm fighting my instinct to immediately start implementing these features and instead take a breath and plan out what should and shouldn't get added.

@ermo

ermo commented Jul 9, 2026

Copy link
Copy Markdown
Member

I think JSON is the better deal for structured output here FWIW.

@ermo

ermo commented Jul 9, 2026

Copy link
Copy Markdown
Member

For users, the output should be "nice". For machine parsing, we should be using JSON for everything.

@otherJL0
otherJL0 force-pushed the moss-search-filepath branch from dda1208 to dbd9563 Compare July 15, 2026 02:02
@ermo

ermo commented Jul 15, 2026

Copy link
Copy Markdown
Member

@otherJL0 I'm not seeing --files supported here...? (note the git ref and the git ref of HEAD of your branch)

image

P.S. if you want to experiment with making --files --tree be the nice output, with --files being the grep-able one like your gut suggested, go for it.

@otherJL0

Copy link
Copy Markdown
Contributor Author

@ermo sorry I've been working on this feature locally and working on some bigger changes. I just pushed a current version and the code is a mess right now but just wanted to show off the current iteration. The --file flag should work now too.

I've made the search work based on matching the substring based on package name, package summary, and package files with providers coming after. Each section has a header with format TBD. Here's an example output:

cargo run -- search virt
   Compiling tools_buildinfo v0.26.6 (/home/jlopez/vcs/git/gh/aerynos/os-tools/crates/tools_buildinfo)
   Compiling moss v0.26.6 (/home/jlopez/vcs/git/gh/aerynos/os-tools/moss)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.96s
     Running `target/debug/moss search virt`
NAME SEARCH:
  libvirt                             Libvirt native C API and daemons
  libvirt-dbginfo                     Debugging symbols for libvirt
  libvirt-devel                       Development files for libvirt
  libvirt-docs                        Libvirt native C API and daemons
  libvirt-glib                        GObject binding for libvirt native C API and XML schemas
  libvirt-glib-dbginfo                Debugging symbols for libvirt-glib
  libvirt-glib-devel                  Development files for libvirt-glib
  libvirt-python                      Python language binding for libvirt native C API
  libvirt-python-dbginfo              Debugging symbols for libvirt-python
  pkgset-aeryn-virtual                Useful packages for integrating with virtualized environments
  python-virtualenv                   Tool to create isolated 'virtual' python environments
  qemu-hw-display-virtio-gpu          QEMU virtio-gpu display device
  qemu-hw-display-virtio-gpu-gl       QEMU virtio-gpu-gl display device
  qemu-hw-display-virtio-gpu-pci      QEMU virtio-gpu-gl-pci display device
  qemu-hw-display-virtio-gpu-pci-gl   QEMU virtio-gpu-gl-pci-gl display device
  qemu-hw-display-virtio-vga          QEMU virtio-vga display device
  qemu-hw-display-virtio-vga-gl       QEMU virtio-vga-gl display device
  qemu-hw-s390x-virtio-gpu-ccw        QEMU s390x-virtio-gpu-ccw display device
  qt6-virtualkeyboard                 Qt Virtual Keyboard
  qt6-virtualkeyboard-dbginfo         Debugging symbols for qt6-virtualkeyboard
  qt6-virtualkeyboard-demos           Example files for qt6-virtualkeyboard
  qt6-virtualkeyboard-devel           Development files for qt6-virtualkeyboard
  virt-manager                        Manage virtual machines with virt-manager
  virtiofsd                           Vhost-user virtio-fs device backend
  virtiofsd-dbginfo                   Debugging symbols for virtiofsd
SUMMARY SEARCH:
  boost              Virtual package that depends on all Boost libs
  edk2-aarch64       Firmware for Virtual Machines (Aarch64)
  edk2-ovmf          Firmware for Virtual Machines (x86_64)
  edk2-riscv64       Firmware for Virtual Machines (riscv64)
  gvfs               Virtual filesystem implementation for GIO
  kmscon             KMS/DRM based virtual Console Emulator
  libslirp           TCP-IP emulator for virtual machines
  llvm               Low Level Virtual Machine
  llvm-20            Low Level Virtual Machine
  llvm-20-devel      Low Level Virtual Machine
  llvm-21            Low Level Virtual Machine
  llvm-21-devel      Low Level Virtual Machine
  llvm-32bit-devel   Low Level Virtual Machine
  llvm-devel         Low Level Virtual Machine
  openxr             An open standard for virtual reality and augmented reality platforms and devices
  passt              User-mode networking daemons for virtual machines and namespaces
  plasma-keyboard    Virtual keyboard for Plasma
  qemu               A generic and open source machine emulator and virtualizer
  qemu-common        A generic and open source machine emulator and virtualizer
  qemu-docs          A generic and open source machine emulator and virtualizer
  qemu-guest-agent   A generic and open source machine emulator and virtualizer
  virglrenderer      Virtual OpenGL Renderer
  vte                GNOME Virtual Terminal Embedding library
  vte-common         GNOME Virtual Terminal Embedding library
  vte-devel          GNOME Virtual Terminal Embedding library
  vte-gtk3           GNOME Virtual Terminal Embedding library
  vte-gtk3-devel     GNOME Virtual Terminal Embedding library
  vte-gtk4           GNOME Virtual Terminal Embedding library
  vte-gtk4-devel     GNOME Virtual Terminal Embedding library
FILE SEARCH:
  alsa-ucm-conf                       ALSA UCM configuration files
  bash-completion                     Programmable completion functions for bash
  breeze-icons                        Breeze icon theme
  gnutls-devel                        The GnuTLS package contains libraries and userspace tools which provide a secure layer over a reliable transport layer
  kdeconnect-libs                     KDE Connect adds communication between KDE and your smartphone.
  kdeplasma-addons                    A plugin based system monitoring daemon
  kwin                                KDE window manager
  libcxx-devel                        Development files for libcxx
  libdrm-devel                        Development files for libdrm
  libvirt                             Libvirt native C API and daemons
  libvirt-glib                        GObject binding for libvirt native C API and XML schemas
  libvirt-python                      Python language binding for libvirt native C API
  linux-headers                       Linux kernel libc headers
  linux-stable                        The Linux Kernel - Stable
  llvm-devel                          Low Level Virtual Machine
  mesa-32bit                          Mesa 3D graphics library
  mesa-dri-drivers                    Mesa-based DRI drivers (includes VAAPI/VDPAU support)
  mesa-vulkan-drivers                 Mesa Vulkan drivers
  pipewire                            Linux audio + video multiplexing
  pkgset-aeryn-virtual                Useful packages for integrating with virtualized environments
  plasma-workspace                    KDE Plasma workspace
  python-pip                          The PyPA recommended tool for installing Python packages
  python-setuptools                   Easily download, build, install, upgrade, and uninstall Python packages
  qemu-common                         A generic and open source machine emulator and virtualizer
  qemu-docs                           A generic and open source machine emulator and virtualizer
  qemu-hw-display-virtio-gpu          QEMU virtio-gpu display device
  qemu-hw-display-virtio-gpu-gl       QEMU virtio-gpu-gl display device
  qemu-hw-display-virtio-gpu-pci      QEMU virtio-gpu-gl-pci display device
  qemu-hw-display-virtio-gpu-pci-gl   QEMU virtio-gpu-gl-pci-gl display device
  qemu-hw-display-virtio-vga          QEMU virtio-vga display device
  qemu-hw-display-virtio-vga-gl       QEMU virtio-vga-gl display device
  qemu-hw-s390x-virtio-gpu-ccw        QEMU s390x-virtio-gpu-ccw display device
  qt6-base-devel                      Cross platform application and UI framework
  qt6-virtualkeyboard                 Qt Virtual Keyboard
  systemd                             A System and Service Manager
  virt-manager                        Manage virtual machines with virt-manager
  virtiofsd                           Vhost-user virtio-fs device backend
  zig                                 General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software
  zsh                                 Extensible shell designed for interactive use

I also added a --json flag for the output but still thinking through the JSON structure to use, I'm open to ideas and suggestions:

# results truncated for brevity
cargo run -- search virt --json
   Compiling tools_buildinfo v0.26.6 (/home/jlopez/vcs/git/gh/aerynos/os-tools/crates/tools_buildinfo)
   Compiling moss v0.26.6 (/home/jlopez/vcs/git/gh/aerynos/os-tools/moss)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.91s
     Running `target/debug/moss search virt --json`
[
  {
    "search_field": "name",
    "description": "package name contains search string",
    "packages": [
      {
        "name": "qemu-hw-display-virtio-gpu-pci-gl",
        "summary": "QEMU virtio-gpu-gl-pci-gl display device"
      },
      ...
    ]
  },
  {
    "search_field": "summary",
    "description": "package summary contains search string",
    "packages": [
      {
        "name": "llvm-devel",
        "summary": "Low Level Virtual Machine"
      },
      ...
    ]
  },
  {
    "search_field": "file",
    "description": "at least one package file path contains search string",
    "packages": [
      {
        "name": "bash-completion",
        "summary": "Programmable completion functions for bash"
      },
      ...
    ]
  }
]

Which means we can now use something like jq to filter through results though it's a little clunky:

# show all package names that match by package name
 cargo run -- search virt --json | jq 'map(select(.search_field == "name")) | first | .packages[] | .name'
   Compiling tools_buildinfo v0.26.6 (/home/jlopez/vcs/git/gh/aerynos/os-tools/crates/tools_buildinfo)
   Compiling moss v0.26.6 (/home/jlopez/vcs/git/gh/aerynos/os-tools/moss)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.95s
     Running `target/debug/moss search virt --json`
"qemu-hw-display-virtio-gpu-pci-gl"
"qemu-hw-display-virtio-vga-gl"
"qemu-hw-display-virtio-gpu-gl"
"qemu-hw-display-virtio-gpu"
"qemu-hw-display-virtio-gpu-pci"
"qemu-hw-display-virtio-vga"
"qemu-hw-s390x-virtio-gpu-ccw"
"pkgset-aeryn-virtual"
"libvirt-dbginfo"
"libvirt"
"libvirt-devel"
"libvirt-docs"
"virt-manager"
"qt6-virtualkeyboard"
"qt6-virtualkeyboard-demos"
"qt6-virtualkeyboard-devel"
"qt6-virtualkeyboard-dbginfo"
"libvirt-python"
"libvirt-python-dbginfo"
"python-virtualenv"
"virtiofsd-dbginfo"
"virtiofsd"
"libvirt-glib"
"libvirt-glib-dbginfo"
"libvirt-glib-devel"

Still to do include:

  • Add provider search outputs by default
  • Add pretty tree output to the --file flag by default
  • Add json output option to --file search which might be enough to not need a greppable output but still deciding

This should probably be a new PR with all the new changes. The code is very ugly too and I'm nowhere near done but let me know if this seems like it's moving in the right direction so far.

@ermo

ermo commented Jul 16, 2026

Copy link
Copy Markdown
Member

Maybe consider adding a --no-headers option and a --no-tree option? That way, they act as "option filters" while the default looks "nice"?

@ermo

ermo commented Jul 16, 2026

Copy link
Copy Markdown
Member

In terms of PR, this work is IMO still congruent with the PR title.

We could potentially skip the json part and do that later, now that the output can potentially be controlled via the --files option?

In reality, I am thinking that (in the future), we could add a "file" kind of provider that we capture at build time.

That would make conflicts easier to hook up, because all conflicts are then provider conflicts...? 🧐

@otherJL0
otherJL0 force-pushed the moss-search-filepath branch from 93851c9 to 0a1045f Compare July 16, 2026 16:06
@ermo

ermo commented Aug 5, 2026

Copy link
Copy Markdown
Member

@otherJL0 Do you need me to test anything? If you do, could you try rebasing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants