aboutsummaryrefslogtreecommitdiff
path: root/src/cpt-search
blob: f943aca414d7508b929d2e54c67173b392c830df (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
#!/bin/sh -ef
# Search for a package

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

parser_definition() {
    setup REST help:usage -- "usage: ${0##*/} [pkg...]"
    msg -- '' 'Options:'
    flag all    -s --single init:=1 on:'' -- "Only show the first instance of a package"
    flag others -o --others               -- "Use the current directory as the package" \
                                             "and show other instances"
    global_options
}

eval "$(getoptions parser_definition parse "$0")"

parse "$@"
eval set -- "$REST"

# The 'all' variable is set by the option parser.
# shellcheck disable=2154
case $others in
    '') for pkg; do pkg_find "$pkg" "${all:+all}"; done ;;
    *) pkg_find "${PWD##*/}" all |
       while read -r pkg_dir; do case $pkg_dir in
               "$PWD") ;;
               *) printf '%s\n' "$pkg_dir"
                  [ "$all" ] || exit 0
           esac
       done
esac