guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Package file indexing


From: zimoun
Subject: Re: Package file indexing
Date: Thu, 9 Jan 2020 14:53:34 +0100

Hi Pierre,

On Thu, 9 Jan 2020 at 14:01, Pierre Neidhardt <address@hidden> wrote:
>
> zimoun <address@hidden> writes:

> >> To avoid confusion, I think this should be an option/subcommand of
> >> search. Something like -path and -name in find(1).
> >
> > I agree that explicit keywords, e.g., "file:" and "package:", avoid 
> > confusion.
>
> I disagree.  What about matching a path which contains "file:" or
> "package:"?  Then you end up with confusing commands.

About "file:", no issue:
    guix search file:file:


However, yes there is an ambiguous behaviour of:

  guix search package:


Currently, the command

  guix search

returns an error.


Does "guix search package:" return an error as "guix search"? Meaning
search about 'empty'.
Or does it return the packages matching the term "package:"? For
example the package "perl-package-stash-xs" containing "Package:" in
its description or the package "r-vctrs" containing "package:" in its
description too. Note it is the only two packages.


For backward compatibility, the ambiguity needs to be fixed by the latter.



> Using "/" as a filter makes sense because it's the only character that's
> not allowed in filenames (with \0) and it's safe to assume that it's not
> useful to match against "/" in description / synopsis.
>
> Simon, regarding your examples:
>
> >  - guix search bin/gmsh gimp
> >  - guix search file:ieee*.sty bin/gmsh latex
> >  - guix search file:bin/gmsh
>
> why mixing both the "file:" prefix and the "/"?

Yes, I am suggesting to mix both.

I would like to have all this syntax:

>  - guix search file:gmsh.h gimp
>  - guix search bin/gmsh gimp
>  - guix search file:ieee*.sty bin/gmsh latex
>  - guix search file:bin/gmsh
>  - guix search package:gimp



Now, if we speak about the "search" command-line syntax, today the way
is to write a regexp and then to filter with 'recsel'. It is UNIX
philosophy to compose via pipes but the drawback is: one *has to*
first (read the Guix manual [1] to) know the existence of 'recsel' and
second read the documentation of 'recutils' for complex filtering. So,
long time ago, I was thinking to add more syntax [2]. Today, the
syntax is:

   guix search "" | recsel -C -e 'name ~ "agda"  && !(name ~ "mode")'
-p synopsis

and I find more welcoming something avoiding the pipe, e.g.,

  guix search 'name ~ "agda" && !(name ~ "mode") -p synopsis'


Cheers,
simon

[1] 
http://guix.gnu.org/manual/devel/en/html_node/Invoking-guix-package.html#Invoking-guix-package
[2] https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00480.html



reply via email to

[Prev in Thread] Current Thread [Next in Thread]