Hi Pierre, On Thu, 9 Jan 2020 at 14:01, Pierre Neidhardt <m...@ambrevar.xyz> wrote: > > zimoun <zimon.touto...@gmail.com> 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