From 6b3b1aeaf394301b177eba8831f03794afc61913 Mon Sep 17 00:00:00 2001 From: bionel Date: Thu, 13 Aug 2020 13:26:20 +0300 Subject: add alien filter, trigger updates --- src/frontend/cli/README.md | 71 ++++++++++++++++++++++------------------ src/frontend/cli/sisyphus-cli.py | 39 +++++++++++----------- 2 files changed, 58 insertions(+), 52 deletions(-) (limited to 'src/frontend') diff --git a/src/frontend/cli/README.md b/src/frontend/cli/README.md index 54fc628..0ef8b69 100644 --- a/src/frontend/cli/README.md +++ b/src/frontend/cli/README.md @@ -60,9 +60,13 @@ The remote can be selected by using the --remote option. * Examples: - branch master --remote=gitlab # pull the branch 'master' from gitlab.com - branch next --remote=pagure # pull the branch 'next' from pagure.io +` branch master --remote=gitlab # pull the branch 'master' from gitlab.com +` + +` branch next --remote=pagure # pull the branch 'next' from pagure.io +` + !!! WARNING !!! @@ -72,17 +76,22 @@ Branch 'master' must be paired with the stable binary repository (odd numbers in * Examples: - sisyphus mirror set 1 +` sisyphus mirror set 1 +` - sisyphus mirror set 5 +` sisyphus mirror set 5 +` Branch 'next' must be paired with the testing binary repository (even numbers in 'sisyphus mirror list'). * Examples: - sisyphus mirror set 2 +` sisyphus mirror set 2 +` + +` sisyphus mirror set 8 +` - sisyphus mirror set 8 **Usage**: @@ -103,11 +112,11 @@ Use the --ebuild option to install ebuild(source) packages. * Examples: - sisyphus install pidgin +` sisyphus install pidgin` will install pidgin binary package (if available); if there is none, but the ebuild(source) package for pidgin is found, it will stop and suggest the --ebuild option. - sisyphus install pidgin --ebuild +` sisyphus install pidgin --ebuild` will compile pidgin from source @@ -218,35 +227,37 @@ In addition, search can be performed by package description, using the -d (--des (use single or double quotes when the description contains spaces) -Use the -s (--state) filters to select only packages of interest. Possible values: +Use the -f (--filter) option to select only packages of interest. Possible values: - all (default) - search the entire database + any (default) - search the entire database - installed - search in all installed packages - - local - search for installed packages but not available + alien - search for installed packages but not available (this filter can match packages installed from e-builds or packages no longer maintained as binaries) + installed - search in all installed packages + remote - search for available packages but not installed upgrade - search for installed packages where installed version is different from available version -!!! NOTE !!! bash will expand a single * character as current folder listing. -To search for all '--state' packages escape it, or surround it with quotes, or use an empty string: +!!! NOTE !!!: + +bash will expand a single * character as current folder listing. +To search for all matching '--filter' packages escape it, or surround it with quotes, or use an empty string: - sisyphus search * -s installed # this is not valid! + sisyphus search * -f installed # this is not valid! - sisyphus search \* -s local # OK + sisyphus search \* -f alien # OK - sisyphus search '*' -s remote # OK + sisyphus search '*' -f remote # OK - sisyphus search '' -s upgrade # OK + sisyphus search '' -f upgrade # OK To search for all (including source) packages, use the --ebuild option. This is slower since will perform an emerge --search actually. With this option, more than one package can be provided as search term. -'-d', '-s' and '-q' (quiet) options are ignored in this mode. +'-d', '-f' and '-q' (quiet) options are ignored in this mode. **Usage**: @@ -257,7 +268,7 @@ $ sisyphus search [OPTIONS] PACKAGE... **Options**: * `-d, --description TEXT`: Match description. -* `-s, --state [all|installed|local|remote|upgrade]`: [default: all] +* `-f, --filter [any|alien|installed|remote|upgrade]`: [default: any] * `-q`: Short (one line) output. * `-e, --ebuild`: Search in ebuilds (slower). * `--help`: Show this message and exit. @@ -301,12 +312,10 @@ This will not allways be possible, as the reverse dependency chain may be way to * Examples: - sisyphus uninstall firefox - -will succeed, nothing depends on it - - sisyphus uninstall pulseaudio +` sisyphus uninstall firefox` +will succeed, nothing depends on it +` sisyphus uninstall pulseaudio` will fail, many packages depend on it With --force option, packages are uninstalled *UNSAFELY* by ignoring reverse dependencies. @@ -316,12 +325,10 @@ Upgrading the system may pull the packages back in, to fix the reverse dependenc * Examples : - sisyphus uninstall pulseaudio --force - +` sisyphus uninstall pulseaudio --force` will succeed, but you may no longer have audio - sisyphus uninstall openrc --force - +` sisyphus uninstall openrc --force` will succeed, but the system will be broken **Usage**: @@ -358,11 +365,11 @@ Use the --ebuild option to upgrade **EVERYTHING**, binary and/or ebuild(source) * Examples: - sisyphus upgrade +` sisyphus upgrade` will upgrade the system using binary packages; if any ebuild(source) package upgrade is detected, it will stop and suggest the --ebuild option - sisyphus upgrade --ebuild +` sisyphus upgrade --ebuild` will upgrade the system using both binary and/or ebuild(source) packages diff --git a/src/frontend/cli/sisyphus-cli.py b/src/frontend/cli/sisyphus-cli.py index e5eb999..c5c6f25 100755 --- a/src/frontend/cli/sisyphus-cli.py +++ b/src/frontend/cli/sisyphus-cli.py @@ -20,20 +20,17 @@ def app_callback(ctx: typer.Context): """ ctx.info_name = 'sisyphus' -class State(str, Enum): - all = 'all' +class Filter(str, Enum): + any = 'any' + alien = 'alien' installed = 'installed' - local = 'local' remote = 'remote' upgrade = 'upgrade' -def state_completion(): - return ["all", "installed", "local", "remote", "upgrade"] - @app.command("search") def search(package: List[str] = typer.Argument(...), desc: str = typer.Option('', '--description', '-d', help = 'Match description.'), - state: State = typer.Option(State.all, '--state', '-s', show_default=True, autocompletion=state_completion), + filter: Filter = typer.Option(Filter.any, '--filter', '-f', show_default=True), quiet: bool = typer.Option(False, '-q', help='Short (one line) output.'), ebuild: bool = typer.Option(False, "--ebuild", "-e", help = 'Search in ebuilds (slower).')): """Search for binary and/or ebuild (source) packages. @@ -63,42 +60,44 @@ def search(package: List[str] = typer.Argument(...), (use single or double quotes when the description contains spaces) - Use the -s (--state) filters to select only packages of interest. Possible values: - - all (default) - search the entire database + Use the -f (--filter) option to select only packages of interest. Possible values: - installed - search in all installed packages + any (default) - search the entire database - local - search for installed packages but not available + alien - search for installed packages but not available (this filter can match packages installed from e-builds or packages no longer maintained as binaries) + installed - search in all installed packages + remote - search for available packages but not installed upgrade - search for installed packages where installed version is different from available version - !!! NOTE !!! bash will expand a single * character as current folder listing. - To search for all '--state' packages escape it, or surround it with quotes, or use an empty string: + !!! NOTE !!!: + + bash will expand a single * character as current folder listing. + To search for all matching '--filter' packages escape it, or surround it with quotes, or use an empty string: - sisyphus search * -s installed # this is not valid! + sisyphus search * -f installed # this is not valid! - sisyphus search \* -s local # OK + sisyphus search \* -f alien # OK - sisyphus search '*' -s remote # OK + sisyphus search '*' -f remote # OK - sisyphus search '' -s upgrade # OK + sisyphus search '' -f upgrade # OK To search for all (including source) packages, use the --ebuild option. This is slower since will perform an emerge --search actually. With this option, more than one package can be provided as search term. - '-d', '-s' and '-q' (quiet) options are ignored in this mode. + '-d', '-f' and '-q' (quiet) options are ignored in this mode. """ if not ebuild: if '/' in package[0]: cat, pn = package[0].split('/') else: cat, pn = '', package[0] - sisyphus.dbsearch.showSearch(state.value, cat, pn, desc, quiet) + sisyphus.dbsearch.showSearch(filter.value, cat, pn, desc, quiet) else: if not package: raise typer.Exit('No search term provided, try: sisyphus search --help') -- cgit v1.2.3