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

parser_definition() {
    setup REST help:usage -- "usage: ${0##*/} [pkg...]"
    msg -- '' 'Options:'
    flag SEARCH_PATH -d "on:$CPT_PATH"    -- "Do not search the installed package database"
    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
}

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

# 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