/ misc / be-btrfs.fish
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'