aboutsummaryrefslogtreecommitdiff
path: root/src/cpt
blob: 4ddb4df1f0f2877a01bb261806d34c2b06cffb4f (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
56
57
58
59
#!/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
            printf "%b->%b %-${max}s  " "$colorb" "$colre" "${path#*/cpt-}"
            awk 'NR==2{if(/^# /){sub(/^# */,"");print}else print "";exit}' \
                "$(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
        ;;
    cbi)
        # Checksum, build and install.
        cpt-checksum "$@"; cpt-build "$@"
        [ "$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" "$@"