be-btrfs.fish
1 # be-btrfs — fish tab-completion 2 # Completes commands, flags, BE names, snapshot names, and directories. 3 # 4 # Install (per-user): 5 # cp be-btrfs.fish ~/.config/fish/completions/be-btrfs.fish 6 # Install (system-wide): 7 # cp be-btrfs.fish /etc/fish/completions/be-btrfs.fish 8 9 function __be_btrfs_bes 10 be-btrfs list -H 2>/dev/null | string split ';' -f1 11 end 12 13 function __be_btrfs_snaps 14 be-btrfs list -sH 2>/dev/null | string match -r '^@.*' | string split ';' -f1 15 end 16 17 function __be_btrfs_needs_command 18 set -l cmd (commandline -opc) 19 test (count $cmd) -eq 1 20 end 21 22 function __be_btrfs_using_command 23 set -l cmd (commandline -opc) 24 test (count $cmd) -gt 1; and test $cmd[2] = $argv[1] 25 end 26 27 # Commands 28 complete -c be-btrfs -n __be_btrfs_needs_command -f -a create -d 'Create BE' 29 complete -c be-btrfs -n __be_btrfs_needs_command -f -a destroy -d 'Delete BE or snapshot' 30 complete -c be-btrfs -n __be_btrfs_needs_command -f -a list -d 'List BEs' 31 complete -c be-btrfs -n __be_btrfs_needs_command -f -a mount -d 'Mount a BE' 32 complete -c be-btrfs -n __be_btrfs_needs_command -f -a unmount -d 'Unmount a BE' 33 complete -c be-btrfs -n __be_btrfs_needs_command -f -a rename -d 'Rename a BE' 34 complete -c be-btrfs -n __be_btrfs_needs_command -f -a activate -d 'Activate BE' 35 complete -c be-btrfs -n __be_btrfs_needs_command -f -a snapshot -d 'Snapshot current system' 36 complete -c be-btrfs -n __be_btrfs_needs_command -f -a clone -d 'Clone from snapshot' 37 complete -c be-btrfs -n __be_btrfs_needs_command -f -a shell -d 'Chroot into BE' 38 complete -c be-btrfs -n __be_btrfs_needs_command -f -a upgrade -d 'Clone + upgrade + activate' 39 complete -c be-btrfs -n __be_btrfs_needs_command -f -a prune -d 'Cleanup by rules' 40 complete -c be-btrfs -n __be_btrfs_needs_command -f -a rescue -d 'Activate from rescue' 41 complete -c be-btrfs -n __be_btrfs_needs_command -f -a check -d 'Check compatibility' 42 complete -c be-btrfs -n __be_btrfs_needs_command -f -a status -d 'Current state' 43 complete -c be-btrfs -n __be_btrfs_needs_command -f -a apt-hook-install -d 'Install APT hook' 44 45 # create flags 46 complete -c be-btrfs -n '__be_btrfs_using_command create' -s a -d 'Activate immediately' 47 complete -c be-btrfs -n '__be_btrfs_using_command create' -s d -r -d 'Description' 48 complete -c be-btrfs -n '__be_btrfs_using_command create' -s e -r -f -a '(__be_btrfs_bes) (__be_btrfs_snaps)' -d 'Source' 49 50 # destroy flags + BE names 51 complete -c be-btrfs -n '__be_btrfs_using_command destroy' -s f -d 'Force unmount' 52 complete -c be-btrfs -n '__be_btrfs_using_command destroy' -s F -d 'No confirmation' 53 complete -c be-btrfs -n '__be_btrfs_using_command destroy' -f -a '(__be_btrfs_bes)' -d 'BE' 54 55 # list flags 56 complete -c be-btrfs -n '__be_btrfs_using_command list' -s a -d 'Show all' 57 complete -c be-btrfs -n '__be_btrfs_using_command list' -s d -d 'Show nested subvolumes' 58 complete -c be-btrfs -n '__be_btrfs_using_command list' -s s -d 'Show snapshots' 59 complete -c be-btrfs -n '__be_btrfs_using_command list' -s H -d 'Machine-parseable' 60 61 # Commands that take BE name 62 complete -c be-btrfs -n '__be_btrfs_using_command activate' -f -a '(__be_btrfs_bes)' -d 'BE' 63 complete -c be-btrfs -n '__be_btrfs_using_command shell' -f -a '(__be_btrfs_bes)' -d 'BE' 64 complete -c be-btrfs -n '__be_btrfs_using_command mount' -f -a '(__be_btrfs_bes)' -d 'BE' 65 complete -c be-btrfs -n '__be_btrfs_using_command rename' -f -a '(__be_btrfs_bes)' -d 'BE' 66 67 # unmount flags + BE names 68 complete -c be-btrfs -n '__be_btrfs_using_command unmount' -s f -d 'Force unmount' 69 complete -c be-btrfs -n '__be_btrfs_using_command unmount' -f -a '(__be_btrfs_bes)' -d 'BE' 70 71 # clone: source names 72 complete -c be-btrfs -n '__be_btrfs_using_command clone' -f -a '(__be_btrfs_bes) (__be_btrfs_snaps)' -d 'Source' 73 74 # upgrade flags 75 complete -c be-btrfs -n '__be_btrfs_using_command upgrade' -s d -r -d 'Description' 76 77 # rescue: directory 78 complete -c be-btrfs -n '__be_btrfs_using_command rescue' -F -d 'Mountpoint'