set(INPUT_FILE "${CMAKE_SOURCE_DIR}/version")
file(READ ${INPUT_FILE} AGVC_SDK_JS_VERSION)
execute_process(
    COMMAND git log -1 --format=%h
    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
    OUTPUT_VARIABLE agvc_sdk_COMMIT
    OUTPUT_STRIP_TRAILING_WHITESPACE
    )
set(AGVC_SDK_JS_COMMIT ${agvc_sdk_COMMIT})
set (CMAKE_CXX_STANDARD 17)

set(AGVC_SDK_JS_DIR ${CMAKE_CURRENT_LIST_DIR}/agvc_sdk_js)

include_directories(
    ${CMAKE_CURRENT_LIST_DIR}/../../
    ${CMAKE_CURRENT_LIST_DIR}
)

add_executable(js_generator js_generator.cpp)
#target_link_libraries(js_generator common_interface)

configure_file(${CMAKE_CURRENT_LIST_DIR}/package.json.in ${AGVC_SDK_JS_DIR}/package.json @ONLY)

file(MAKE_DIRECTORY ${AGVC_SDK_JS_DIR})
file(MAKE_DIRECTORY ${AGVC_SDK_JS_DIR}/src)

file(GLOB JS_FILE
    "${CMAKE_CURRENT_LIST_DIR}/README.md"
    "${CMAKE_CURRENT_LIST_DIR}/.npmignore"
    "${CMAKE_CURRENT_LIST_DIR}/index.d.ts"
    "${CMAKE_CURRENT_LIST_DIR}/index.js"
    "${CMAKE_CURRENT_LIST_DIR}/tsconfig.json")
file(GLOB JS_INTERFACE
    "${CMAKE_CURRENT_LIST_DIR}/src/*")
file(GLOB JS_SOURCE
    "${AGVC_SDK_JS_DIR}/../agvc_sdk/*")

add_custom_target(aubo_sdk_js ALL
    COMMENT "Copy JS files to ${AGVC_SDK_JS_DIR}"
)

function(add_copy_commands target src_files dest_dir)
    foreach(file IN LISTS src_files)
        add_custom_command(TARGET ${target} POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E copy ${file} ${dest_dir}
        )
    endforeach()
endfunction()

add_copy_commands(aubo_sdk_js "${JS_FILE}" "${AGVC_SDK_JS_DIR}/")
add_copy_commands(aubo_sdk_js "${JS_INTERFACE}" "${AGVC_SDK_JS_DIR}/src/")
add_copy_commands(aubo_sdk_js "${JS_SOURCE}" "${AGVC_SDK_JS_DIR}/src/")

add_dependencies(aubo_sdk_js js_generator)

add_custom_command(TARGET aubo_sdk_js POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E echo "Running generator js_generator in ${AGVC_SDK_JS_DIR}"
    COMMAND js_generator
    WORKING_DIRECTORY ${AGVC_SDK_JS_DIR}
    COMMENT "Run generator js_generator in ${AGVC_SDK_JS_DIR}"
)
