2021-05-25 07:10:16 +00:00
#compdef innernet
autoload -U is-at-least
_innernet( ) {
typeset -A opt_args
typeset -a _arguments_options
local ret = 1
if is-at-least 5.2; then
_arguments_options = ( -s -S -C)
else
_arguments_options = ( -s -C)
fi
local context curcontext = " $curcontext " state line
_arguments " ${ _arguments_options [@] } " \
2021-12-05 17:35:18 +00:00
'-c+[]' \
'--config-dir=[]' \
'-d+[]' \
'--data-dir=[]' \
2021-09-15 17:00:03 +00:00
'--backend=[Specify a WireGuard backend to use. If not set, innernet will auto-select based on availability]: :(kernel userspace)' \
2021-06-14 14:53:02 +00:00
'--mtu=[Specify the desired MTU for your interface (default: 1420 for IPv4 and 1400 for IPv6)]' \
2021-05-31 15:23:14 +00:00
'*-v[Verbose output, use -vv for even higher verbositude]' \
'*--verbose[Verbose output, use -vv for even higher verbositude]' \
2021-05-25 07:10:16 +00:00
'--no-routing[Whether the routing should be done by innernet or is done by an external tool like e.g. babeld]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_innernet_commands" \
"*::: :->innernet" \
&& ret = 0
case $state in
( innernet)
words = ( $line [ 1] " ${ words [@] } " )
( ( CURRENT += 1 ) )
curcontext = " ${ curcontext % : * : * } :innernet-command- $line [1]: "
case $line [ 1] in
( redeem)
_arguments " ${ _arguments_options [@] } " \
'--hosts-path=[The path to write hosts to]' \
'(--default-name)--name=[Set a specific interface name]' \
2021-12-05 17:35:18 +00:00
'*--exclude-nat-candidates=[Exclude one or more CIDRs from NAT candidate reporting. ex. --exclude-nat-candidates ' \' '0.0.0.0/0' \' ' would report no candidates]' \
2021-05-25 07:10:16 +00:00
'(--hosts-path)--no-write-hosts[Don' \' 't write to any hosts files]' \
'--default-name[Use the network name inside the invitation as the interface name]' \
'-d[Delete the invitation after a successful install]' \
'--delete-invite[Delete the invitation after a successful install]' \
2021-12-05 17:35:18 +00:00
'--no-nat-traversal[Don' \' 't attempt NAT traversal. Note that this still will report candidates unless you also specify to exclude all NAT candidates]' \
'(--exclude-nat-candidates)--no-nat-candidates[Don' \' 't report any candidates to coordinating server. Shorthand for --exclude-nat-candidates ' \' '0.0.0.0/0' \' ']' \
2021-05-25 07:10:16 +00:00
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':invite -- Path to the invitation file:_files' \
&& ret = 0
; ;
( install)
_arguments " ${ _arguments_options [@] } " \
'--hosts-path=[The path to write hosts to]' \
'(--default-name)--name=[Set a specific interface name]' \
2021-12-05 17:35:18 +00:00
'*--exclude-nat-candidates=[Exclude one or more CIDRs from NAT candidate reporting. ex. --exclude-nat-candidates ' \' '0.0.0.0/0' \' ' would report no candidates]' \
2021-05-25 07:10:16 +00:00
'(--hosts-path)--no-write-hosts[Don' \' 't write to any hosts files]' \
'--default-name[Use the network name inside the invitation as the interface name]' \
'-d[Delete the invitation after a successful install]' \
'--delete-invite[Delete the invitation after a successful install]' \
2021-12-05 17:35:18 +00:00
'--no-nat-traversal[Don' \' 't attempt NAT traversal. Note that this still will report candidates unless you also specify to exclude all NAT candidates]' \
'(--exclude-nat-candidates)--no-nat-candidates[Don' \' 't report any candidates to coordinating server. Shorthand for --exclude-nat-candidates ' \' '0.0.0.0/0' \' ']' \
2021-05-25 07:10:16 +00:00
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':invite -- Path to the invitation file:_files' \
&& ret = 0
; ;
( list)
_arguments " ${ _arguments_options [@] } " \
'-s[One-line peer list]' \
'--short[One-line peer list]' \
'-t[Display peers in a tree based on the CIDRs]' \
'--tree[Display peers in a tree based on the CIDRs]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::interface:_files' \
&& ret = 0
; ;
( show)
_arguments " ${ _arguments_options [@] } " \
'-s[One-line peer list]' \
'--short[One-line peer list]' \
'-t[Display peers in a tree based on the CIDRs]' \
'--tree[Display peers in a tree based on the CIDRs]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
'::interface:_files' \
&& ret = 0
; ;
( up)
_arguments " ${ _arguments_options [@] } " \
'--interval=[Keep fetching the latest peer list at the specified interval in seconds. Valid only in daemon mode]' \
'--hosts-path=[The path to write hosts to]' \
2021-12-05 17:35:18 +00:00
'*--exclude-nat-candidates=[Exclude one or more CIDRs from NAT candidate reporting. ex. --exclude-nat-candidates ' \' '0.0.0.0/0' \' ' would report no candidates]' \
2021-05-25 07:10:16 +00:00
'-d[Enable daemon mode i.e. keep the process running, while fetching the latest peer list periodically]' \
'--daemon[Enable daemon mode i.e. keep the process running, while fetching the latest peer list periodically]' \
'(--hosts-path)--no-write-hosts[Don' \' 't write to any hosts files]' \
2021-12-05 17:35:18 +00:00
'--no-nat-traversal[Don' \' 't attempt NAT traversal. Note that this still will report candidates unless you also specify to exclude all NAT candidates]' \
'(--exclude-nat-candidates)--no-nat-candidates[Don' \' 't report any candidates to coordinating server. Shorthand for --exclude-nat-candidates ' \' '0.0.0.0/0' \' ']' \
2021-05-25 07:10:16 +00:00
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
2021-12-05 17:35:18 +00:00
'::interface:_files' \
2021-05-25 07:10:16 +00:00
&& ret = 0
; ;
( fetch)
_arguments " ${ _arguments_options [@] } " \
'--hosts-path=[The path to write hosts to]' \
2021-12-05 17:35:18 +00:00
'*--exclude-nat-candidates=[Exclude one or more CIDRs from NAT candidate reporting. ex. --exclude-nat-candidates ' \' '0.0.0.0/0' \' ' would report no candidates]' \
2021-05-25 07:10:16 +00:00
'(--hosts-path)--no-write-hosts[Don' \' 't write to any hosts files]' \
2021-12-05 17:35:18 +00:00
'--no-nat-traversal[Don' \' 't attempt NAT traversal. Note that this still will report candidates unless you also specify to exclude all NAT candidates]' \
'(--exclude-nat-candidates)--no-nat-candidates[Don' \' 't report any candidates to coordinating server. Shorthand for --exclude-nat-candidates ' \' '0.0.0.0/0' \' ']' \
2021-05-25 07:10:16 +00:00
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( uninstall)
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( down)
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( add-peer)
_arguments " ${ _arguments_options [@] } " \
'--name=[Name of new peer]' \
'(--auto-ip)--ip=[Specify desired IP of new peer (within parent CIDR)]' \
'--cidr=[Name of CIDR to add new peer under]' \
'--admin=[Make new peer an admin?]' \
'--save-config=[Save the config to the given location]' \
2021-11-11 09:42:21 +00:00
'--invite-expires=[Invite expiration period (eg. ' \' '30d' \' ', ' \' '7w' \' ', ' \' '2h' \' ', ' \' '60m' \' ', ' \' '1000s' \' ')]' \
2021-05-25 07:10:16 +00:00
'--auto-ip[Auto-assign the peer the first available IP within the CIDR]' \
'--yes[Bypass confirmation]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
2021-05-31 15:23:14 +00:00
( rename-peer)
_arguments " ${ _arguments_options [@] } " \
'--name=[Name of peer to rename]' \
'--new-name=[The new name of the peer]' \
'--yes[Bypass confirmation]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
2021-05-25 07:10:16 +00:00
( add-cidr)
_arguments " ${ _arguments_options [@] } " \
2021-11-11 09:42:21 +00:00
'--name=[The CIDR name (eg. ' \' 'engineers' \' ')]' \
'--cidr=[The CIDR network (eg. ' \' '10.42.5.0/24' \' ')]' \
2021-05-25 07:10:16 +00:00
'--parent=[The CIDR parent name]' \
'--yes[Bypass confirmation]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( delete-cidr)
_arguments " ${ _arguments_options [@] } " \
2021-11-11 09:42:21 +00:00
'--name=[The CIDR name (eg. ' \' 'engineers' \' ')]' \
2021-05-25 07:10:16 +00:00
'--yes[Bypass confirmation]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
2021-06-14 14:53:02 +00:00
( list-cidrs)
_arguments " ${ _arguments_options [@] } " \
'-t[Display CIDRs in tree format]' \
'--tree[Display CIDRs in tree format]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
2021-05-25 07:10:16 +00:00
( disable-peer)
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( enable-peer)
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( add-association)
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
'::cidr1 -- The first cidr to associate:_files' \
'::cidr2 -- The second cidr to associate:_files' \
&& ret = 0
; ;
( delete-association)
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( list-associations)
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( set-listen-port)
_arguments " ${ _arguments_options [@] } " \
2021-12-05 17:35:18 +00:00
'-l+[The listen port you' \' 'd like to set for the interface]' \
'--listen-port=[The listen port you' \' 'd like to set for the interface]' \
'(-l --listen-port)-u[Unset the local listen port to use a randomized port]' \
'(-l --listen-port)--unset[Unset the local listen port to use a randomized port]' \
'--yes[Bypass confirmation]' \
2021-05-25 07:10:16 +00:00
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( override-endpoint)
_arguments " ${ _arguments_options [@] } " \
2021-12-05 17:35:18 +00:00
'-e+[The listen port you' \' 'd like to set for the interface]' \
'--endpoint=[The listen port you' \' 'd like to set for the interface]' \
'(-e --endpoint)-u[Unset an existing override to use the automatic endpoint discovery]' \
'(-e --endpoint)--unset[Unset an existing override to use the automatic endpoint discovery]' \
'--yes[Bypass confirmation]' \
2021-05-25 07:10:16 +00:00
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':interface:_files' \
&& ret = 0
; ;
( completions)
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':shell:(zsh bash fish powershell elvish)' \
&& ret = 0
; ;
( help )
_arguments " ${ _arguments_options [@] } " \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret = 0
; ;
esac
; ;
esac
}
( ( $+functions[ _innernet_commands] ) ) ||
_innernet_commands( ) {
local commands; commands = (
"install:Install a new innernet config" \
"show:Enumerate all innernet connections" \
"up:Bring up your local interface, and update it with latest peer list" \
"fetch:Fetch and update your local interface with the latest peer list" \
"uninstall:Uninstall an innernet network" \
2021-11-11 09:42:21 +00:00
"down:Bring down the interface (equivalent to 'wg-quick down <interface>')" \
2021-05-25 07:10:16 +00:00
"add-peer:Add a new peer" \
2021-05-31 15:23:14 +00:00
"rename-peer:Rename a peer" \
2021-05-25 07:10:16 +00:00
"add-cidr:Add a new CIDR" \
"delete-cidr:Delete a CIDR" \
2021-06-14 14:53:02 +00:00
"list-cidrs:List CIDRs" \
2021-05-25 07:10:16 +00:00
"disable-peer:Disable an enabled peer" \
"enable-peer:Enable a disabled peer" \
"add-association:Add an association between CIDRs" \
"delete-association:Delete an association between CIDRs" \
"list-associations:List existing assocations between CIDRs" \
"set-listen-port:Set the local listen port" \
"override-endpoint:Override your external endpoint that the server sends to other peers" \
"completions:Generate shell completion scripts" \
"help:Prints this message or the help of the given subcommand(s)" \
)
_describe -t commands 'innernet commands' commands " $@ "
}
( ( $+functions[ _innernet__add-association_commands] ) ) ||
_innernet__add-association_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet add-association commands' commands " $@ "
}
( ( $+functions[ _innernet__add-cidr_commands] ) ) ||
_innernet__add-cidr_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet add-cidr commands' commands " $@ "
}
( ( $+functions[ _innernet__add-peer_commands] ) ) ||
_innernet__add-peer_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet add-peer commands' commands " $@ "
}
( ( $+functions[ _innernet__completions_commands] ) ) ||
_innernet__completions_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet completions commands' commands " $@ "
}
( ( $+functions[ _innernet__delete-association_commands] ) ) ||
_innernet__delete-association_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet delete-association commands' commands " $@ "
}
( ( $+functions[ _innernet__delete-cidr_commands] ) ) ||
_innernet__delete-cidr_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet delete-cidr commands' commands " $@ "
}
( ( $+functions[ _innernet__disable-peer_commands] ) ) ||
_innernet__disable-peer_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet disable-peer commands' commands " $@ "
}
( ( $+functions[ _innernet__down_commands] ) ) ||
_innernet__down_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet down commands' commands " $@ "
}
( ( $+functions[ _innernet__enable-peer_commands] ) ) ||
_innernet__enable-peer_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet enable-peer commands' commands " $@ "
}
( ( $+functions[ _innernet__fetch_commands] ) ) ||
_innernet__fetch_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet fetch commands' commands " $@ "
}
( ( $+functions[ _innernet__help_commands] ) ) ||
_innernet__help_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet help commands' commands " $@ "
}
( ( $+functions[ _innernet__install_commands] ) ) ||
_innernet__install_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet install commands' commands " $@ "
}
( ( $+functions[ _innernet__list_commands] ) ) ||
_innernet__list_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet list commands' commands " $@ "
}
( ( $+functions[ _list_commands] ) ) ||
_list_commands( ) {
local commands; commands = (
)
_describe -t commands 'list commands' commands " $@ "
}
( ( $+functions[ _innernet__list-associations_commands] ) ) ||
_innernet__list-associations_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet list-associations commands' commands " $@ "
}
2021-06-14 14:53:02 +00:00
( ( $+functions[ _innernet__list-cidrs_commands] ) ) ||
_innernet__list-cidrs_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet list-cidrs commands' commands " $@ "
}
2021-05-25 07:10:16 +00:00
( ( $+functions[ _innernet__override-endpoint_commands] ) ) ||
_innernet__override-endpoint_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet override-endpoint commands' commands " $@ "
}
( ( $+functions[ _innernet__redeem_commands] ) ) ||
_innernet__redeem_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet redeem commands' commands " $@ "
}
( ( $+functions[ _redeem_commands] ) ) ||
_redeem_commands( ) {
local commands; commands = (
)
_describe -t commands 'redeem commands' commands " $@ "
}
2021-05-31 15:23:14 +00:00
( ( $+functions[ _innernet__rename-peer_commands] ) ) ||
_innernet__rename-peer_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet rename-peer commands' commands " $@ "
}
2021-05-25 07:10:16 +00:00
( ( $+functions[ _innernet__set-listen-port_commands] ) ) ||
_innernet__set-listen-port_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet set-listen-port commands' commands " $@ "
}
( ( $+functions[ _innernet__show_commands] ) ) ||
_innernet__show_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet show commands' commands " $@ "
}
( ( $+functions[ _innernet__uninstall_commands] ) ) ||
_innernet__uninstall_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet uninstall commands' commands " $@ "
}
( ( $+functions[ _innernet__up_commands] ) ) ||
_innernet__up_commands( ) {
local commands; commands = (
)
_describe -t commands 'innernet up commands' commands " $@ "
}
_innernet " $@ "