#!/bin/sh

binpac_root=/usr/local
broker_root=/usr/local
btest_tools_dir=/usr/local/share/btest
build_type=relwithdebinfo
caf_root=
cmake_dir=/usr/local/share/zeek/cmake
config_dir=/etc/zeek
include_dir=/usr/local/include
lib_dir=/usr/local/lib
plugin_dir=/usr/local/lib/zeek/plugins
prefix=/usr/local
python_dir=/usr/local/lib/zeek/python
script_dir=/usr/local/share/zeek
site_dir=/usr/local/share/zeek/site
version=5.0.8
zeek_dist=
zeekpath=.:/usr/local/share/zeek:/usr/local/share/zeek/policy:/usr/local/share/zeek/site:/usr/local/share/zeek/builtin-plugins

add_path() {
    # $1: existing path
    # $2: path to add
    if test -z "$2" || test "$1" = "$2" ||
        echo "$1" | grep -q "^$2:" 2>/dev/null ||
        echo "$1" | grep -q ":$2:" 2>/dev/null ||
        echo "$1" | grep -q ":$2$" 2>/dev/null; then
        echo "$1"
        return
    fi

    echo "$1:$2"
}

include_dir=$(add_path "$include_dir" "/usr/include")
include_dir=$(add_path "$include_dir" "/usr/include")
include_dir=$(add_path "$include_dir" "/usr/local/include/eopenssl11")
include_dir=$(add_path "$include_dir" "")
include_dir=$(add_path "$include_dir" "")

usage() {
    echo "Usage: zeek-config [OPTIONS]

Basic options:

  --build_type          Zeek build type as per cmake, lower case (e.g. 'relwithdebinfo')
  --prefix              Toplevel Zeek distribution installation directory
  --version             Zeek version number
  --zeek_dist           Toplevel directory of source tree the distribution built from
  --zeekpath            ZEEKPATH environment variable paths for this distribution

Specific directories in the Zeek distribution:

  --btest_tools_dir     Zeek-related BTest tooling
  --cmake_dir           Zeek's cmake modules
  --config_dir          Configuration files for cluster topology, zkg, etc
  --include_dir         C/C++ header folders for Zeek and related components, colon-separated
  --lib_dir             Toplevel folder for shared libraries, Python packages, etc
  --plugin_dir          Native-code Zeek plugins
  --python_dir          Python packages (Broker, ZeekControl, zkg, etc)
  --script_dir          Toplevel folder for Zeek scripts
  --site_dir            Site-specific Zeek scripts

Toplevel installation directories for third-party components:

  --binpac_root         BinPAC compiler
  --broker_root         Broker communication framework
  --caf_root            C++ Actor Framework (deprecated, will be removed in 5.1)
"
}

if [ $# -eq 0 ]; then
    usage 1>&2
    exit 1
fi

while [ $# -ne 0 ]; do
    case "$1" in
        -*=*) optarg=$(echo "$1" | sed 's/[-_a-zA-Z0-9]*=//') ;;
        *) optarg= ;;
    esac

    case $1 in
        --binpac_root)
            echo $binpac_root
            ;;
        --bro_dist) # For compatibility with legacy Bro plugins.
            echo $zeek_dist
            ;;
        --broker_root)
            echo $broker_root
            ;;
        --bropath) # For compatibility with legacy Bro plugins.
            echo $zeekpath
            ;;
        --btest_tools_dir)
            echo $btest_tools_dir
            ;;
        --build_type)
            echo $build_type
            ;;
        --caf_root)
            echo "The caf_root option is deprecated and will be removed in 5.1. The Broker API has been updated to no longer require access to CAF to build against Broker."
            ;;
        --cmake_dir)
            echo $cmake_dir
            ;;
        --config_dir)
            echo $config_dir
            ;;
        --include_dir)
            echo $include_dir
            ;;
        --lib_dir)
            echo $lib_dir
            ;;
        --plugin_dir)
            echo $plugin_dir
            ;;
        --prefix)
            echo $prefix
            ;;
        --python_dir)
            echo $python_dir
            ;;
        --script_dir)
            echo $script_dir
            ;;
        --site_dir)
            echo $site_dir
            ;;
        --version)
            echo $version
            ;;
        --zeek_dist)
            echo $zeek_dist
            ;;
        --zeekpath)
            echo $zeekpath
            ;;
        *)
            usage 1>&2
            exit 1
            ;;
    esac
    shift
done

exit 0
