diff --git a/completions/README.md b/completions/README.md new file mode 100644 index 00000000..37112a43 --- /dev/null +++ b/completions/README.md @@ -0,0 +1,11 @@ +# Shell completion scripts + +By default, rmw completions are copied to the rmw documentation dir when rmw +is installed. If they aren't present on your system, you can install a shell +completion manually by getting the completion from the source package or git +repository. See the links below for specific installation instructions for +each completion. + +## Fish + +[Where to put completions](https://fishshell.com/docs/current/completions.html#where-to-put-completions) diff --git a/completions/fish/rmw.fish b/completions/fish/rmw.fish new file mode 100644 index 00000000..46d322ef --- /dev/null +++ b/completions/fish/rmw.fish @@ -0,0 +1,31 @@ +# This file contains the fish completion for rmw +# +# rmw is a trashcan/recycle bin utility for the command line +# +# More information about this tool on https://github.com/theimpossibleastronaut/rmw +# +# This file is intended to be released with rmw with various packaging managers + +complete rmw -s h -l help -d 'show help for command line options' -f +complete rmw -s c -l config -d 'use an alternate configuration' -r +complete rmw -s l -l list -d 'list waste directories' -f +complete rmw -s g -l purge -d 'purge expired files' +complete rmw -s o -l orphaned -d 'check for orphaned files (maintenance)' -f +complete rmw -s f -l force -d 'allow purging of expired files' -f +complete rmw -l empty -d 'completely empty (purge) all waste directories' -f +complete rmw -l top-level-bypass -d 'bypass protection of top-level files' + +complete rmw -s v -l verbose -d 'increase output messages' -f +complete rmw -l warranty -d 'display warranty' -f +complete rmw -l version -d 'display version and license information' -f + +complete rmw -s z -l restore -d 'restore FILE(s) (see man page example)' +complete rmw -s s -l select -d 'select files from list to restore' -f +complete rmw -s u -l undo-last -d 'undo last move' -f +complete rmw -s m -l most-recent-list -d "list most recently rmw'ed files" -f + +# Options kept for compatibility purpose that do not need to be completed +# they are listed here to avoid people wondering why they are missing +# complete rmw -s R -s r -l recursive -d 'kept for compatibility purpose with rm (recursive operation is enabled by default)' +# complete rmw -s i -l interactive -d 'Prompt for removal (not implemented)' + diff --git a/meson.build b/meson.build index 0589f832..f540b413 100644 --- a/meson.build +++ b/meson.build @@ -87,3 +87,10 @@ install_data( ), install_dir : get_option('docdir') ) + +# Copy completions to docdir +install_subdir( + 'completions', + install_dir : join_paths(get_option('docdir')), + strip_directory : false + ) diff --git a/meson_options.txt b/meson_options.txt index 9458507c..9f976eea 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -9,3 +9,7 @@ option('docdir', type : 'string', value : 'share/doc/rmw', option('without-curses', type : 'boolean', value : 'false', description : 'build without curses/menu support') + +option('install_shell_completions', type: 'boolean', value: true, + description: 'Install shell completions') +