aboutsummaryrefslogtreecommitdiff
path: root/src/cpt-list
blob: 2aad15ec275dc01b72cd5fe0dfc15d4167c6732a (plain)
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
#!/bin/sh -ef
# List installed packages

parser_definition() {
    setup REST help:usage -- \
        "usage: ${0##*/} [-cq] pkg..." \
        "or:    ${0##*/} -C pkg [true-statement [false-statement]]" \
        "or:    ${0##*/} -V pkg version [release]"
    msg -- '' 'Options:'
    flag CURRENT -c --current -- "Use the current directory as a package"
    flag quiet   -q --quiet   -- "Make the operation quiet"
    param PKG    -C --check label:"-C, --check PKG TRUE FALSE" -- \
          "Check if PKG exists and return the string of TRUE if" \
          "it exists, and the string of FALSE if it doesn't." \
          "Useful for optional packaging."
    flag VERSIONCHECK -V --version-check label:"-V, --version-check PKG VER REL" -- \
        "Check if given package exists in the given version" \
        "and release numbers. Returns success or failure depending" \
        "on the outcome."
    global_options
}

if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi

# There is no proper way I can think of doing this directly in the option
# parser, so let's make sure that only one operation is selected.
[ "$PKG" ] && [ "$VERSIONCHECK" ] &&
    die "Only one operation between '-C' and '-V' can be selected."


if [ "$PKG" ]; then
    if pkg_list "$PKG" >/dev/null 2>&1; then
        printf %s "$1"
    else
        printf %s "$2"
    fi
elif [ "$VERSIONCHECK" ]; then
    [ "$#" -ge 2 ] || die "Minimum of 2 arguments required, got: $#"
    pkg_list "$1" | grep -Fq "$1 $2 $3"
else
    [ "$CURRENT" ] && set -- "${PWD##*/}"
    [ "$quiet" ]   && exec >/dev/null 2>&1
    pkg_list "$@"
fi