#!/bin/bash

ADB=/usr/bin/adb

. /usr/share/bmc/lib.sh

MAIN() {
    local usb node serial
    if [[ "$1" == "-s" ]]; then
        node="$2"
        if [[ "$node" == "sub"[0-9]* ]]; then
            shift 2
            usb="${NODE2USB["$node"]:-}"
            if [[ -n "$usb" ]]; then
                exec $ADB -s "$usb" "$@"
            fi
        fi
    elif [[ "$1" == "devices" ]] \
             || [[ "$1" == "forward" && "$2" == "--list" ]]; then
	      node_adb_refresh_serial2node
        declare -a dev
        while read line; do
            if [[ "$line" == "List"* ]]; then
                echo "$line"
            else
                dev=($line)
                serial="${dev[0]}"
                if [[ -n "$serial" ]]; then
                    node="${SERIAL2NODE["$serial"]:-}"
                    if [[ -n "$node" ]]; then
                        echo "${node}${line:${#serial}}"
                    fi
                fi
            fi
        done < <($ADB "$@")
        return
    elif [[ "$1" == "serials" ]]; then
	      node_adb_refresh_serial2node
        for serial in "${!SERIAL2NODE[@]}"; do
            node="${SERIAL2NODE[$serial]}"
            usb="${NODE2USB[$node]}"
	          echo "$node $serial $usb"
	      done | sort
        return
    fi

    # pass through
    exec $ADB "$@"
}

MAIN "$@"
