Skip to content

Commit

Permalink
arp: New completion, somewhat incomplete
Browse files Browse the repository at this point in the history
  • Loading branch information
scop committed Dec 3, 2018
1 parent eeb63ea commit a0d40e5
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 0 deletions.
1 change: 1 addition & 0 deletions completions/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ bashcomp_DATA = 2to3 \
apt-get \
aptitude \
arch \
arp \
arping \
arpspoof \
asciidoc \
Expand Down
59 changes: 59 additions & 0 deletions completions/arp
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# arp(8) completion -*- shell-script -*-

_arp()
{
local cur prev words cword
_init_completion || return

case $prev in
--device|-!(-*)i)
_available_interfaces -a
return
;;
--protocol|-!(-*)[Ap])
# TODO protocol/address family
return
;;
--file|-!(-*)f)
_filedir
return
;;
--hw-type|-!(-*)[Ht])
# TODO: parse from --help output?
COMPREPLY=( $( compgen -W 'ash ether ax25 netrom rose arcnet \
dlci fddi hippi irda x25 eui64' -- "$cur" ) )
return
;;
esac

if [[ $cur == -* ]]; then
COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
return
fi

local args
_count_args "" "@(--device|--protocol|--file|--hw-type|-!(-*)[iApfHt])"
case $args in
1)
local ips=$( "$1" -an | sed -ne \
's/.*(\([0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}\)).*/\1/p' )
COMPREPLY=( $( compgen -W '$ips' -- "$cur" ) )
;;
2)
# TODO if -d mode: "pub"; if not -f mode: hw_addr
# TODO hw_addr is a configured interface with --use-device/-*D*
;;
3)
# TODO netmask|pub|temp if -s mode
;;
4)
# TODO netmask value if previous was "netmask"
;;
5)
# TODO "pub" if 3rd was "netmask"
;;
esac
} &&
complete -F _arp arp

# ex: filetype=sh
1 change: 1 addition & 0 deletions test/t/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ EXTRA_DIST = \
test_aptitude.py \
test_arch.py \
test_arping.py \
test_arp.py \
test_arpspoof.py \
test_asciidoc.py \
test_aspell.py \
Expand Down
20 changes: 20 additions & 0 deletions test/t/test_arp.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import os

import pytest


class TestArp:

@pytest.mark.complete("arp ")
def test_1(self, completion):
assert completion.list

@pytest.mark.complete("arp -")
def test_2(self, completion):
assert completion.list

@pytest.mark.xfail(bool(os.environ.get("CI")),
reason="Probably fails in CI")
@pytest.mark.complete("arp -d ")
def test_3(self, completion):
assert completion.list

0 comments on commit a0d40e5

Please sign in to comment.