#!/bin/sh

use_pure_hg ()
{
    # WORKAROUND for test-qrecord.t:help (bad mq)
    #  Since cHg executes Mercurial as --daemon, error messages are shown twice.
    [ "$*" = 'help qrecord' ] && grep 'mq=nonexist[ae]nt' -q "$HGRCPATH" && return 0

    args=
    for e in "$@"; do
        case "$e" in
            archive|serve)
                args="$e ${args# }"
                ;;
            -d|--daemon)
                args="${args% } -d"
                ;;
            'extensions.progress=')
                return 0
                ;;
            extensions.*=!)
                return 0  # cHg cannot disable extensions once loaded
                ;;
            --)
                break
                ;;
        esac
    done
    args="${args# }"
    args="${args% }"

    # progress is incompatible with cmdserver
    [ "$args" = 'archive' ] && grep -q 'progress' "$HGRCPATH" && return 0

    # cmdserver cannot handle 'serve -d' (--daemon) because it uses sys.argv
    [ "$args" = 'serve -d' ] && return 0

    return 1
}

if use_pure_hg "$@"; then
    exec "$CHGHG" "$@"
fi

envsum="$({ \
    printenv | grep "$CHGENVSUMINCLUDEPAT"; \
    umask; \
    cat "$HGRCPATH" 2>/dev/null; \
    } | $CHGENVSUMCMD | head -c8)"
echo "$envsum" >> "$CHGHIST"
CHGSOCKNAME="$CHGTMP/$envsum"
export CHGSOCKNAME
CHGCMDSERVEROPTS="--cwd $CHGTMP"
export CHGCMDSERVEROPTS

exec "$(dirname "$0")/../src/chg" "$@"
