#!/bin/zsh

if ! /usr/bin/pgrep -q GoToFile; then
    /usr/bin/open -b com.soma-zone.GoToFile
    /bin/sleep 1
fi

vproject=""
query=""
project=""
for arg in "$@"; do
    if [[ "${arg:0:7}" = "--path=" ]]; then
        vproject=${arg#*=}
    elif [[ "${arg:0:8}" = "--query=" ]]; then
        query=${arg#*=}
    elif [[ "${arg:0:10}" = "--project=" ]]; then
        project=${arg#*=}
    elif [[ "${arg}" = "--project" ]]; then
        project="."
    elif [[ "$arg" = "--help" ]]; then
        echo "$0: [[--path=]STRING|--project[=STRING]] [--query=STRING]"
        exit 0;
    else
        vproject=$arg
    fi
done

if [[ -n "$project" && -n "$vproject" ]]; then
    echo Command line option '--path' is not compatible with '--project'.
    exit 1
fi

if [[ -z "$project" && -z "$vproject" ]]; then
    vproject="."
fi

if [[ -n "$vproject" ]]; then
    vproject="$(cd "$(/usr/bin/dirname -- "$vproject")" >/dev/null || exit; pwd -P)/$(/usr/bin/basename -- "$vproject")"
    path_enc=$(/usr/bin/perl -e "use URI; print URI->new(\"$vproject\");")
    url="com.soma-zone.GoToFile://search?path=$path_enc"
else
    if [[ "$project" = "." ]]; then
        url="com.soma-zone.GoToFile://search?project="
    else
        project_enc=$(/usr/bin/perl -e "use URI; print URI->new(\"$project\");")
        url="com.soma-zone.GoToFile://search?project=$project_enc"
    fi
fi

if [[ -n "$query" ]]; then
    query_enc=$(/usr/bin/perl -e "use URI; print URI->new(\"$query\");")
    url="$url&query=$query_enc"
fi

/usr/bin/open -u "$url"
