zsh-completions/src/_gio

295 lines
11 KiB
Bash

#compdef gio
# ------------------------------------------------------------------------------
# Copyright (c) 2025 Github zsh-users - https://github.com/zsh-users
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the zsh-users nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ------------------------------------------------------------------------------
# Description
# -----------
#
# Completion script for gio 2.86.3 (https://docs.gtk.org/gio/).
#
# Status: Basic (subcommands and common options).
# Origin: Original script.
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
# * Magniquick (https://github.com/Magniquick)
#
# ------------------------------------------------------------------------------
_gio() {
local context state line
typeset -A opt_args
local ret=1
_arguments -C \
'(- : *)'{-h,--help}'[show help information]' \
'(- : *)'--version'[display version information]' \
'1:command:->command' \
'*::arg:->args' \
&& ret=0
case $state in
(command)
_gio_commands
;;
(args)
case $words[1] in
(help)
_arguments \
'1:command:_gio_commands' \
&& ret=0
;;
(version)
_arguments && ret=0
;;
(cat)
_arguments \
'*:location:_gio_location' \
&& ret=0
;;
(copy)
_arguments \
'(-T --no-target-directory)'{-T,--no-target-directory}'[no target directory]' \
'(-p --progress)'{-p,--progress}'[show progress]' \
'(-i --interactive)'{-i,--interactive}'[prompt before overwrite]' \
'--preserve[preserve all attributes]' \
'(-b --backup)'{-b,--backup}'[backup existing destination files]' \
'(-P --no-dereference)'{-P,--no-dereference}'[never follow symbolic links]' \
'--default-permissions[use default permissions for the destination]' \
'--default-modified-time[use default file modification timestamps for the destination]' \
'*:location:_gio_location' \
&& ret=0
;;
(info)
_arguments \
'(-w --query-writable)'{-w,--query-writable}'[list writable attributes]' \
'(-f --filesystem)'{-f,--filesystem}'[get file system info]' \
'(-a --attributes)'{-a,--attributes}'[attributes to get]:attributes' \
'(-n --nofollow-symlinks)'{-n,--nofollow-symlinks}'[do not follow symbolic links]' \
'*:location:_gio_location' \
&& ret=0
;;
(launch)
_arguments \
'1:desktop file:_gio_desktop_files' \
'*::file argument:_gio_location' \
&& ret=0
;;
(list)
_arguments \
'(-a --attributes)'{-a,--attributes}'[attributes to get]:attributes' \
'(-h --hidden)'{-h,--hidden}'[show hidden files]' \
'(-l --long)'{-l,--long}'[use a long listing format]' \
'(-n --nofollow-symlinks)'{-n,--nofollow-symlinks}'[do not follow symbolic links]' \
'(-d --print-display-names)'{-d,--print-display-names}'[print display names]' \
'(-u --print-uris)'{-u,--print-uris}'[print full URIs]' \
'*:location:_gio_location' \
&& ret=0
;;
(mime)
_arguments \
'1:mimetype:_gio_mime_types' \
'2:handler' \
&& ret=0
;;
(mkdir)
_arguments \
'(-p --parent)'{-p,--parent}'[create parent directories]' \
'*:location:_gio_location' \
&& ret=0
;;
(monitor)
_arguments \
'(-d --dir)'{-d,--dir}'[monitor a directory]:location:_gio_location' \
'(-f --file)'{-f,--file}'[monitor a file]:location:_gio_location' \
'(-D --direct)'{-D,--direct}'[monitor a file directly]:location:_gio_location' \
'(-s --silent)'{-s,--silent}'[monitor a file directly without reporting changes]:location:_gio_location' \
'(-n --no-moves)'{-n,--no-moves}'[report moves and renames as simple deleted/created events]' \
'(-m --mounts)'{-m,--mounts}'[watch for mount events]' \
'*:location:_gio_location' \
&& ret=0
;;
(mount)
_arguments \
'(-m --mountable)'{-m,--mountable}'[mount as mountable]' \
'(-d --device)'{-d,--device}'[mount volume with device file or identifier]:device' \
'(-u --unmount)'{-u,--unmount}'[unmount]' \
'(-e --eject)'{-e,--eject}'[eject]' \
'(-t --stop)'{-t,--stop}'[stop drive with device file]:device' \
'(-s --unmount-scheme)'{-s,--unmount-scheme}'[unmount all mounts with scheme]:scheme' \
'(-f --force)'{-f,--force}'[ignore outstanding file operations when unmounting or ejecting]' \
'(-a --anonymous)'{-a,--anonymous}'[use an anonymous user when authenticating]' \
'(-l --list)'{-l,--list}'[list volumes, drives and mounts]' \
'(-o --monitor)'{-o,--monitor}'[monitor volume, drive and mount events]' \
'(-i --detail)'{-i,--detail}'[show extra information]' \
'--tcrypt-pim[unlock VeraCrypt volume with PIM]:pim' \
'--tcrypt-hidden[mount a TCRYPT hidden volume]' \
'--tcrypt-system[mount a TCRYPT system volume]' \
'*:location:_gio_location' \
&& ret=0
;;
(move)
_arguments \
'(-T --no-target-directory)'{-T,--no-target-directory}'[no target directory]' \
'(-p --progress)'{-p,--progress}'[show progress]' \
'(-i --interactive)'{-i,--interactive}'[prompt before overwrite]' \
'(-b --backup)'{-b,--backup}'[backup existing destination files]' \
'(-C --no-copy-fallback)'{-C,--no-copy-fallback}'[do not use copy and delete fallback]' \
'*:location:_gio_location' \
&& ret=0
;;
(open)
_arguments \
'*:location:_gio_location' \
&& ret=0
;;
(rename)
_arguments \
'1:location:_gio_location' \
'2:new name' \
&& ret=0
;;
(remove)
_arguments \
'(-f --force)'{-f,--force}'[ignore nonexistent files, never prompt]' \
'*:location:_gio_location' \
&& ret=0
;;
(save)
_arguments \
'(-b --backup)'{-b,--backup}'[backup existing destination files]' \
'(-c --create)'{-c,--create}'[only create if not existing]' \
'(-a --append)'{-a,--append}'[append to end of file]' \
'(-p --private)'{-p,--private}'[restrict access to current user]' \
'(-u --unlink)'{-u,--unlink}'[replace as if the destination did not exist]' \
'(-v --print-etag)'{-v,--print-etag}'[print new etag at end]' \
'(-e --etag)'{-e,--etag}'[etag of the file being overwritten]:etag' \
'1:destination:_gio_location' \
&& ret=0
;;
(set)
_arguments \
'(-t --type)'{-t,--type}'[type of the attribute]:type' \
'(-n --nofollow-symlinks)'{-n,--nofollow-symlinks}'[do not follow symbolic links]' \
'(-d --delete)'{-d,--delete}'[unset given attribute]' \
'1:location:_gio_location' \
'2:attribute' \
'*::value' \
&& ret=0
;;
(trash)
_arguments \
'(-f --force)'{-f,--force}'[ignore nonexistent files, never prompt]' \
'--empty[empty the trash]' \
'--list[list files in the trash with their original locations]' \
'--restore[restore a file from trash to its original location]' \
'*:location:_gio_location' \
&& ret=0
;;
(tree)
_arguments \
'(-h --hidden)'{-h,--hidden}'[show hidden files]' \
'(-l --follow-symlinks)'{-l,--follow-symlinks}'[follow symbolic links, mounts and shortcuts]' \
'*:location:_gio_location' \
&& ret=0
;;
esac
;;
esac
return ret
}
(( $+functions[_gio_commands] )) ||
_gio_commands() {
local -a commands=(
'help:print help'
'version:print version'
'cat:concatenate files to standard output'
'copy:copy one or more files'
'info:show information about locations'
'launch:launch an application from a desktop file'
'list:list the contents of locations'
'mime:get or set the handler for a mimetype'
'mkdir:create directories'
'monitor:monitor files and directories for changes'
'mount:mount or unmount the locations'
'move:move one or more files'
'open:open files with the default application'
'rename:rename a file'
'remove:delete one or more files'
'save:read from standard input and save'
'set:set a file attribute'
'trash:move or restore files to the trash'
'tree:list the contents of locations in a tree'
)
_describe -t commands 'gio commands' commands
}
(( $+functions[_gio_location] )) ||
_gio_location() {
if (( $+functions[_urls] )); then
_alternative \
'files:files:_files' \
'urls:URL:_urls'
else
_files
fi
}
(( $+functions[_gio_desktop_files] )) ||
_gio_desktop_files() {
local -a desktop_files
desktop_files=(
/usr/share/applications/*.desktop(N:t)
~/.local/share/applications/*.desktop(N:t)
)
_describe -t desktop-files 'desktop files' desktop_files
}
(( $+functions[_gio_mime_types] )) ||
_gio_mime_types() {
if (( $+functions[_mime_types] )); then
_mime_types
else
_message 'mime type'
fi
}
_gio "$@"
# Local Variables:
# mode: Shell-Script
# sh-indentation: 2
# indent-tabs-mode: nil
# sh-basic-offset: 2
# End:
# vim: ft=zsh sw=2 ts=2 et