cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(zeek-client)

set(ZEEK_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin)

# Define the default config file location.
set(ZEEK_CLIENT_CONFIG_FILE "${ZEEK_ETC_INSTALL_DIR}/zeek-client.cfg")

if ( NOT PY_MOD_INSTALL_DIR )
    # This is not a Zeek-bundled install. Default to "home"-style install.
    set(PY_MOD_INSTALL_DIR lib/python)
endif ()

# Install zeek-client with updated content:
configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/zeek-client
    ${CMAKE_CURRENT_BINARY_DIR}/zeek-client @ONLY)
install(DIRECTORY DESTINATION bin)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/zeek-client DESTINATION bin)

# Install the Python module tree. Use a pattern match to avoid installing any
# .pyc or __pycache__ files that might reside in the directory due to local
# unit-testing.
install(DIRECTORY DESTINATION ${PY_MOD_INSTALL_DIR})
install(DIRECTORY zeekclient DESTINATION ${PY_MOD_INSTALL_DIR}
    FILES_MATCHING PATTERN "zeekclient/*.py"
    PATTERN "__pycache__" EXCLUDE)

# Install the constants file with updated content:
configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/zeekclient/consts.py
    ${CMAKE_CURRENT_BINARY_DIR}/zeekclient/consts.py @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/zeekclient/consts.py
    DESTINATION ${PY_MOD_INSTALL_DIR}/zeekclient)

# This mirrors what we do in zkg:
if ( NOT ZEEK_MAN_INSTALL_PATH )
    set(ZEEK_MAN_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/share/man)
endif ()

install(FILES man/zeek-client.1 DESTINATION ${ZEEK_MAN_INSTALL_PATH}/man1)

message(
    "\n==================|  zeek-client Build Summary  |==============="
    "\n"
    "\nInstall prefix:      ${CMAKE_INSTALL_PREFIX}"
    "\nPython module path:  ${PY_MOD_INSTALL_DIR}"
    "\n"
    "\n================================================================\n"
)
