aboutsummaryrefslogtreecommitdiff
path: root/src/cpt
blob: ce4c70ff521b3fdc742e1f14daa9a5cf7f398d8a (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
45
46
47
48
49
50
51
52
53
54
55
#!/bin/sh -ef

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

# If none of the tools below are specified, we will reenable glob
unset glob

[ "$1" ] && { arg=$1; shift; }
case "$arg" in
    --help|-h|'')
        log "Carbs Packaging Tool"
        set --
        for path in $(SEARCH_PATH=$PATH pkg_find cpt-* all -x); do
            set -- "${path#*/cpt-}" "$@"
            max=$((${#1} > max ? ${#1} : max))
        done

        for path; do
            # These are the files to be ignored.
            contains "lib readlink stat" "$path" && continue

            printf "%b->%b %-${max}s  " "$colorb" "$colre" "${path#*/cpt-}"
            sed -n 's/^# *//;2p' "$(command -v "cpt-$path")"
        done | sort -uk1 >&2
        exit
        ;;

    --version|-v|version) version ;;

    # Reserve these arguments for the following tools.
    a|alternatives) arg=alternatives ;;
    b|build)        arg=build ;;
    c|checksum)     arg=checksum ;;
    d|download)     arg=download ;;
    i|install)      arg=install ;;
    l|list)         arg=list ;;
    r|remove)       arg=remove ;;
    s|search)       arg=search ;;
    u|update)       arg=update ;;
    bi)
        # Build and install function for cpt.
        cpt-build "$@"

        # When building multiple packages, cpt will already ask to install
        # the packages, so no need for this here.
        [ "$2" ] || cpt-install "$@"
        exit
        ;;
    *) glob=1 ;;
esac

util=$(SEARCH_PATH=$PATH pkg_find "cpt-$arg${glob:+*}" "" -x 2>/dev/null) ||
    die "'cpt $arg' is not a valid command"

"$util" "$@"