File: cpsv.bash-completion

package info (click to toggle)
runit 2.2.0-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,568 kB
  • sloc: ansic: 6,071; sh: 3,419; makefile: 399
file content (123 lines) | stat: -rw-r--r-- 3,595 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Tue, 11 Nov 2025 10:42:40 +0100
# bash-completion for cpsv

_cpsv_services()
{
    CPSVSRC=$(ls --color=no ${CPSV_SOURCE:-/usr/share/runit/sv.current})
    if [ "$(id -u)" != 0 ] && [ "$(id -u)" -ge '1000' ]; then
        #username="$(id -u -n)"
        for svd in $CPSVSRC ; do
            [ $svd = ${svd%@user} ] && continue
            [ $svd = runsvdir@user ] && continue
            CPSVLIST="$CPSVLIST $svd"
        done
    else
        for svd in $CPSVSRC ; do
            [ $svd = ${svd%@user} ] || continue
            CPSVLIST="$CPSVLIST $svd"
        done
    fi
    echo "$CPSVLIST"
}

_cpsv_names()
{
    CPSVSRC=$(ls --color=no ${CPSV_SOURCE:-/usr/share/runit/sv.current})
    if [ "$(id -u)" != 0 ] && [ "$(id -u)" -ge '1000' ]; then
        #username="$(id -u -n)"
        for svd in $CPSVSRC ; do
            [ $svd = ${svd%@user} ] && continue
            [ $svd = runsvdir@user ] && continue
            CPSVLIST="$CPSVLIST ${svd%@user}"
        done
    else
        for svd in $CPSVSRC ; do
            [ $svd = ${svd%@user} ] || continue
            #TODO multi instances with meta files
            #svd=${svd%default}
            CPSVLIST="$CPSVLIST ${svd%default}"
        done
    fi
    echo "$CPSVLIST"
}

_cpsv_diffs()
{
    if [ "$(id -u)" != 0 ] && [ "$(id -u)" -ge '1000' ]; then
        username="$(id -u -n)"
        CPSVDEST=$(ls --color=no ${CPSV_DEST:-/home/$username/.runit/sv})
        for svd in $CPSVDEST ; do
            CPSVLIST="$CPSVLIST $svd"
        done
    else
        CPSVDEST=$(ls --color=no ${CPSV_DEST:-/etc/sv})
        for svd in $CPSVDEST ; do
            [ $svd = ${svd%@user} ] || continue #?
            CPSVLIST="$CPSVLIST ${svd%default}"
        done
    fi
    echo "$CPSVLIST"
}

_cpsv_commands()
{
    if [ "$(id -u)" != 0 ] && [ "$(id -u)" -ge '1000' ]; then
        echo "d l p s"
    else
        echo "a d l p s"
    fi
}

_cpsv()
{
    cur=${COMP_WORDS[COMP_CWORD]}
    prev=${COMP_WORDS[COMP_CWORD-1]}
    cpsv_com=${COMP_WORDS[1]}
    if [ $COMP_CWORD -eq 1 ]; then
        COMPREPLY=( $( compgen -W "$(_cpsv_commands)" $cur ) )
    elif [ $COMP_CWORD -eq 2 ]; then
        case "$prev" in
            s|l)
                ;;
            a|d|p)
                    COMPREPLY=( $( compgen -W "$(_cpsv_services)" $cur ) )
                ;;
            *)
                ;;
        esac
    elif [ $COMP_CWORD -eq 3 ]; then
        case "$cpsv_com" in
            a) 
                COMPREPLY=( $( compgen -W "$(_cpsv_services)" $cur ) )
                ;;
            d)
                if [ "$(id -u)" != 0 ] && [ "$(id -u)" -ge '1000' ] ; then
                    #COMPREPLY=( $( compgen -W "$(_cpsv_diffs)" ${prev%@user} ) )
                    COMPREPLY=( $( compgen -W "$(_cpsv_diffs)" $cur ) )
                else
                    COMPREPLY=( $( compgen -W "$(_cpsv_diffs)" $cur ) )
                fi
                ;;
            p)
                if [ "$(id -u)" != 0 ] && [ "$(id -u)" -ge '1000' ] ; then
                    COMPREPLY=( $( compgen -W "$(_cpsv_names)" ${prev%@user} ) )
                else
                    #COMPREPLY=( $( compgen -W "$(_cpsv_names)" $cur ) )
                    COMPREPLY=( $( compgen -W "$(_cpsv_names)" ${prev%default} ) )
                fi
                ;;
            s|l|*)
                ;;
        esac
    elif [ $COMP_CWORD -ge 4 ]; then
        case "$cpsv_com" in
            a) 
                COMPREPLY=( $( compgen -W "$(_cpsv_services)" $cur ) )
                ;;
            *)
                ;;
        esac
    fi
}

complete -F _cpsv cpsv