| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | #!/bin/bash
#shellcheck disable=SC2034
# mkit - simple install helper
# See LICENSE file for copyright and license details.
usage() {
    print_help >&2
    test $# -gt 0 && {
        printf >&2 '%s\n' "" "$@"
    }
    exit 2
}
print_help() {
    local self=${0##*/}
    local lines=(
        "usage:"
        "  $self TARGET"
        "  $self -i|--ini-1value PATH"
        "  $self -I|--ini-values PATH"
        "  $self --list-plugins"
        "  $self --list-targets"
        "  $self -V|--version-semver"
        "  $self --version"
        ""
        "commands:"
        "   TARGET          build target TARGET"
        "   -i PATH         print single-line value at INI path PATH"
        "                   (ignore all but last instance of this"
        "                   value in the INI)"
        "   -I PATH         like -i, but list all instances, one per line"
        "                   (multi-line values)"
        "   --list-plugins  print list of found plugins and exit"
        "   --list-targets  print list of valid targets and exit"
        "   -V|--version    print version (in SemVer format) and exit"
        "   --help          print this help text and exit"
        ""
    )
    printf '%s\n' "${lines[@]}"
    echo "valid targets (built-in):"
    target__ls | sed 's/^/    /'
    echo
    echo "valid targets (from plugins):"
    plugin__ls | sed 's/^/    /'
}
init_core() {
    #
    # Load core module (or die)
    #
    #shellcheck disable=SC1090,SC1091
    . "$MKIT_DIR/include/mkit.sh" \
     && . "$MKIT_DIR/include/vars.sh" \
     && return 0
    echo "failed to load core; check if MKIT_DIR is set properly: $MKIT_DIR" >&2
    exit 9
}
#
# Path to MKit dir (where 'include' is)
#
MKIT_DIR=${MKIT_DIR:-$(dirname "$0")}
just_ini() {
    #
    # Just do one mkit.ini operation $1
    #
    local op=$1
    local key=$2
    mkit_init || return $?
    ini "$op" "$key"
}
main () {
    init_core
    case "$1" in
        -V|--version)           echo "$MKIT_VERSION"; exit 0 ;;
        -i|--ini-1value)        just_ini 1value "$2"; exit $? ;;
        -I|--ini-values)        just_ini values "$2"; exit $? ;;
        --ini-lskeys)           just_ini lskeys "$2"; exit $? ;;
        --ini-lssect)           just_ini lssect "$2"; exit $? ;;
        --ini-sec)              just_ini sec    "$2"; exit $? ;;
        --list-targets)         mkit_init; target__ls; plugin__ls; exit 0 ;;
        --list-plugins)         mkit_init; plugin__ls; exit 0 ;;
        --help)                 print_help; exit 0 ;;
        -*)                     usage "unknown argument: $1" ;;
    esac
    test "$#" -gt 0 || usage
    mkit_init
    target__route "$@"
}
main "$@"
 |