1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-04 10:41:11 +02:00

new forms of completion for btrfs

This commit is contained in:
Eric Cook 2014-02-18 12:57:01 -05:00 committed by Peter Stephenson
parent b9f10722ac
commit be47852679
2 changed files with 145 additions and 8 deletions

View file

@ -1,11 +1,14 @@
2014-02-18 Peter Stephenson <p.w.stephenson@ntlworld.com>
* Eric Cook: Completion/Linux/Command/_btrfs: updated completion
for subcommands.
* Eric Cook: 32408: Completion/Linux/Command/_btrfs: additional
completions
* Eric Cook: Completion/Linux/Command/_btrfs: minor typo.
* Eric Cook: 32409: Completion/Linux/Command/_btrfs: updated
completion for subcommands.
* Eric Cook: Completion/Linux/Command/_btrfs: remove hard tabs.
* Eric Cook: 32411: Completion/Linux/Command/_btrfs: minor typo.
* Eric Cook: 32410: Completion/Linux/Command/_btrfs: remove hard tabs.
* m0viefreak: Util/helpfiles: 32402: prefer col -bx to colcrt.

View file

@ -1,4 +1,5 @@
#compdef btrfs
# based on Btrfs v3.12+20131125
local curcontext="$curcontext" curstate state line expl grp cmd ret=1
local -a cmds_1 cmds_2 cmds_3 cmds_4 cmds_5 cmds_6 cmds_7 cmds_8 cmds_9 cmds_10
@ -38,9 +39,65 @@ while (( $#state )); do
: $words
local grp=${groups[(i)$words[2]*]}
: $grp
(( grp && grp < 7 )) || return 1
(( grp && grp <= 14 )) || return 1
curcontext="${curcontext%:*:*}:$service-${groups[grp]}:"
_wanted commands expl command compadd -a cmds_$grp && ret=0
case $grp in
11)
# btrfs check
args+=(
{-s,--support}'[specify superblock]:superblock: _message "superblock"'
'--repair[try to repair the filesystem]'
'--init-csum-tree[create a new CRC tree]'
'--init-extent-tree[create a new extent tree]'
'1:path:_files -/'
)
;|
12)
# btrfs replace
args+=(
'-s[get snapshots]'
'-x[get extended attributes]'
'-v[verbose]'
'-i[ignore errors]'
'-o[overwrite]'
'-t[tree location]:tree:_message "tree location"'
'-f[filesystem location]:filesystem:_message "filesystem location"'
'-u[super mirror]:mirror:_message "super mirror"'
'-r[root objectid]:objectid:_message "root objectid"'
'-d[find dir]'
'-l[list tree roots]'
'--path-regex[restore matching filenames]:regex:_message "regex"'
'1:device:_files -/'
'2:path:_files -/'
)
;|
13)
# btrfs send
args+=(
'*-v[verbose mode]'
'-p[send incremental stream]:parent:_files -/'
'*-c[use snapshot as clone source]:clone:_files -/'
'-f[output file]:file:_files'
'1:subvol:_files -/'
)
;|
14)
# btrfs receive
args+=(
'*-v[verbose mode]'
'-f[input file]:file: _files'
'-e[terminate after <end cmd>]'
'1:mount:->mounts'
)
;|
<11-14>)
(( CURRENT-- )); shift words; curcontext="${curcontext%:*:*}:$service-${group[grp]}:"
_arguments -C "$args[@]" && ret=0
;;
<0-10>)
_wanted commands expl command compadd -a cmds_$grp && ret=0
;;
esac
;;
args)
: $words
@ -64,8 +121,31 @@ while (( $#state )); do
;;
subvolume:create) args+=( '1:destination:->mounts' );;
subvolume:delete) args+=( '1:subvolume:_files -/' );;
subvolume:snapshot) args+=( '-r[readonly snapshot]' '1:snapshot:_files -/' );;
subvolume:list) args+=( '-p[include parent ID in output]' '1:path:->mounts' );;
subvolume:snapshot)
args+=(
'-r[readonly snapshot]'
'*-i[assign to qgroup]:qgroup: _message "qgroup"'
'1:snapshot:_files -/'
)
;;
subvolume:list)
args+=(
'-p[include parent ID in output]'
'-a[include all subvolumes]'
'-c[include ogeneration of the subvolume]'
'-g[include generation of the subvolume]'
'-o[include only subvolumes below the path]'
'-u[include UUID of subvolume]'
'-q[include parent UUID of subvolume]'
'-t[print results as a table]'
'-s[list only snapshot subvolumes]'
'-r[list only readonly subvolumes]'
'-G[subvolume generation is more or less than]:gen: _guard "(|+|-)[0-9]#"'
'-C[subvolume ogeneration is more or less than]:ogen: _guard "(|+|-)[0-9]#"'
'--sort=-[list in order]:sort:_values -s "," sort rootid gen ogen path'
'1:path:->mounts'
)
;;
subvolume:set-default) args+=( '1:id:_guard "[0-9]#" id' '2:path:->mounts' );;
subvolume:get-default) args+=( '1:path:_files -/' );;
subvolume:find-new) args+=( '1:subvol:_files -/' '2:lastgen: _message "last gen"' );;
@ -131,7 +211,53 @@ while (( $#state )); do
;;
balance:status) args+=( '-v[verbose mode]' '2:path:_files -/' );;
balance:(pause|cancel|resume)) args+=( '2:path:_files -/' );;
quota:(enable|disable)) args+=( '1:path:_files -/' );;
quota:rescan)
args+=(
'-s[show status of currently running rescan]'
'-w[wait for rescan to finish]'
'1:path:_files -/'
)
;;
qgroup:(assign|remove)) args+=( '1:source path:_files -/'
'2:destination path:_files -/' '3:path:_files -/' );;
qgroup:(create|destroy)) args+=( '1:qgroupid:' '2:path:_files -/' );;
qgroup:show)
args+=(
'-p[print parent qgroup id]'
'-c[print child qgroup id]'
'-r[print max referenced size of qgroup]'
'-e[print max exclusive size of qgroup]'
'-F[list impacted qgroups\(include ancestral qgroups\)]'
'-f[list impacted qgroups\(exclude ancestral qgroups\)]'
'--sort=-[sort qgroups]:sort:_values -s , sort \
qgroupid rfer excl max_rfer max_excl'
'1:path:_files -/'
)
;;
qgroup:limit)
args+=(
'-c[limit amount of data after compression]'
'-e[limit space exclusively to qgroup]'
':size or none: _message "size or none"'
':qgroup id or path:_files -/'
':path:_files -/'
)
;;
replace:start)
args+=(
'-r[read from <srcdev> only]:srcdev:_files'
'-f[force overwriting of target]'
'-B[do not background]'
':srcdev or devid:_files'
':target:_files'
':path:->mounts'
)
;;
replace:status) args+=( '-1[print once]' ':path:->mounts' );;
replace:cancel) args+=( ':path:->mounts' );;
inspect*:inode*) args+=( '-v[verbose mode]' '1:inode:_files' '2:path:_files -/' );;
inspect*:subvol*) args+=( '-v[verbose mode]' '1:subvolid:_guard "[0-9]#" subvolume id' '2:path:_files -/' );;
inspect*:logical*)
args+=(
'-v[verbose mode]'
@ -141,6 +267,14 @@ while (( $#state )); do
'2:filesystem path:_files -/'
)
;;
inspect*:rootid) args+=( '1:path:_files -/' );;
rescue:(chunk|super)-recover)
args+=(
'-y[assume yes to every question]'
'-v[verbose mode]'
)
[[ ${${(P)group}[cmd]} == chunk-recover ]] && args+=('-h[display help]')
;;
subvolume:get-default) ;&
*:sync) ;&
*:df) args+=( '1:path:->mounts' );;