diff --git a/.profile.roku b/.profile.roku index 4f564c5..68c3f14 100644 --- a/.profile.roku +++ b/.profile.roku @@ -22,22 +22,42 @@ target: EOF } +completion_contains() +{ + # Platforms + for WORD in "$@"; do + if [[ "${COMP_WORDS[*]}" =~ "$WORD" ]]; then + return 1 + fi + done + return 0 +} + +completion_add_if() +{ + completion_contains "$@" + if [[ $? == 0 ]]; then + CANDIDATES+=" $@" + fi +} + complete -F build_completion build build_completion() { - local CANDIDATES="help clobber tests addon-checksums icecc docker make" + local CANDIDATES="help clobber tests addon-checksums" + + # Docker + completion_add_if docker make + + # Build hosts + completion_add_if icecc local # Platforms - local PLATFORMS="native marlin bailey loggan" - if ! [[ "${COMP_WORDS[*]}" =~ "marlin" || - "${COMP_WORDS[*]}" =~ "bailey" || - "${COMP_WORDS[*]}" =~ "loggan" || - "${COMP_WORDS[*]}" =~ "native" ]]; then - CANDIDATES+=" $PLATFORMS" - fi + completion_add_if native marlin bailey loggan COMPREPLY=($(compgen -W "$CANDIDATES" "${COMP_WORDS[${COMP_CWORD}]}")) } + build() { local BUILD_PLATFORM=marlin