Repository: celix Updated Branches: refs/heads/develop c4de9077d -> 8109f6ca7
CELIX-451: Add celix_bundle_add_files CMake command - Also rename celix_bundle_dir to celix_bundle_add_dir - Refactors location of some the CMake generated files, so that everything is generated in celix/gen/ Project: http://git-wip-us.apache.org/repos/asf/celix/repo Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/8109f6ca Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/8109f6ca Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/8109f6ca Branch: refs/heads/develop Commit: 8109f6ca76b569aaaba2fe4f16a5e10eb05523da Parents: c4de907 Author: Pepijn Noltes <[email protected]> Authored: Tue Jul 10 13:58:30 2018 +0200 Committer: Pepijn Noltes <[email protected]> Committed: Tue Jul 10 13:58:30 2018 +0200 ---------------------------------------------------------------------- CMakeLists.txt | 4 +- cmake/cmake_celix/BundlePackaging.cmake | 81 ++++++++++++++++---- cmake/cmake_celix/ContainerPackaging.cmake | 14 ++-- cmake/cmake_celix/DockerPackaging.cmake | 8 +- documents/cmake_commands/readme.md | 5 +- examples/celix-examples/civetweb/CMakeLists.txt | 4 +- .../civetweb/resources/index.html | 3 +- .../celix-examples/civetweb/resources/script.js | 1 + 8 files changed, 87 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/celix/blob/8109f6ca/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 06c4000..36656e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,9 +79,9 @@ install(DIRECTORY ${CMAKE_SOURCE_DIR}/cmake/cmake_celix/ DESTINATION share/celix #configure and install CelixConfig and CelixConfigVersion files configure_file(cmake/CelixConfigVersion.cmake.in - "${PROJECT_BINARY_DIR}/celix/gen/CelixConfigVersion.cmake" @ONLY) + "${PROJECT_BINARY_DIR}/celix/gen/cmake/CelixConfigVersion.cmake" @ONLY) install(FILES "cmake/CelixConfig.cmake" - "${PROJECT_BINARY_DIR}/celix/gen/CelixConfigVersion.cmake" + "${PROJECT_BINARY_DIR}/celix/gen/cmake/CelixConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Celix" COMPONENT cmake) http://git-wip-us.apache.org/repos/asf/celix/blob/8109f6ca/cmake/cmake_celix/BundlePackaging.cmake ---------------------------------------------------------------------- diff --git a/cmake/cmake_celix/BundlePackaging.cmake b/cmake/cmake_celix/BundlePackaging.cmake index 35f5c0a..8236bcc 100644 --- a/cmake/cmake_celix/BundlePackaging.cmake +++ b/cmake/cmake_celix/BundlePackaging.cmake @@ -134,8 +134,10 @@ function(add_celix_bundle) endif () set(BUNDLE_FILE "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_FILENAME}") - set(BUNDLE_CONTENT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_TARGET_NAME}_content") - set(BUNDLE_GEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_TARGET_NAME}_gen") + #set(BUNDLE_CONTENT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_TARGET_NAME}_content") + #set(BUNDLE_GEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_TARGET_NAME}_gen") + set(BUNDLE_CONTENT_DIR "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE_TARGET_NAME}/content") + set(BUNDLE_GEN_DIR "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE_TARGET_NAME}") ###### Setting up dependency for bundles target @@ -217,7 +219,7 @@ function(add_celix_bundle) ############################# ### BUNDLE TARGET PROPERTIES ############################# - #alreadyer set + #already set # BUNDLE_TARGET_IS_LIB -> true (can be use to test if target is bundle target # BUNDLE_TARGET -> refers to the _bundle target which is responsible for building the zip file #internal use @@ -225,7 +227,7 @@ function(add_celix_bundle) set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_DEPEND_TARGETS" "") #bundle target dependencies. Note can be extended after the add_bundle call set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_GEN_DIR" ${BUNDLE_GEN_DIR}) #location for generated output. set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_CREATE_BUNDLE_TARGET" ${BUNDLE_TARGET_NAME}_bundle) #target which creat the bundle zip - set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_IMPORTED" FALSE) #whethet target is a imported (bundle) target + set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_IMPORTED" FALSE) #whether targer is a imported (bundle) target #bundle specific set_target_properties(${BUNDLE_TARGET_NAME} PROPERTIES "BUNDLE_CONTENT_DIR" ${BUNDLE_CONTENT_DIR}) #location where the content to be jar/zipped. @@ -438,8 +440,8 @@ function(celix_bundle_files) file(COPY ${FILES_UNPARSED_ARGUMENTS} DESTINATION ${DESTINATION}) endfunction() -#Note celix_bundle_dir copies the dir and can track changes. -function(celix_bundle_dir) +#Note celix_bundle_add_dir copies the dir and can track changes. +function(celix_bundle_add_dir) #0 is bundle TARGET list(GET ARGN 0 BUNDLE) list(REMOVE_AT ARGN 0) @@ -459,16 +461,23 @@ function(celix_bundle_dir) get_target_property(BUNDLE_DIR ${BUNDLE} "BUNDLE_CONTENT_DIR") if (NOT COPY_DESTINATION) - set(DESTINATION "${BUNDLE_DIR}/${FILES_DESTINATION}") - else() set(DESTINATION "${BUNDLE_DIR}") + else() + set(DESTINATION "${BUNDLE_DIR}/${COPY_DESTINATION}") endif() - set(COPY_CMAKE_SCRIPT "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE}/copy-${INPUT_DIR}.cmake") - file(WRITE ${COPY_CMAKE_SCRIPT} - "file(COPY ${CMAKE_CURRENT_LIST_DIR}/${INPUT_DIR} DESTINATION ${DESTINATION})") + string(UUID COPY_ID NAMESPACE "661ee07c-842d-11e8-adfc-80fa5b02e11b" NAME "${INPUT_DIR}" TYPE MD5) - set(TIMESTAMP "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE}/copy-${INPUT_DIR}.timestamp") + set(COPY_CMAKE_SCRIPT "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE}/copy-dir-${COPY_ID}.cmake") + if (IS_ABSOLUTE ${INPUT_DIR}) + file(WRITE ${COPY_CMAKE_SCRIPT} + "file(COPY ${INPUT_DIR} DESTINATION ${DESTINATION})") + else() + file(WRITE ${COPY_CMAKE_SCRIPT} + "file(COPY ${CMAKE_CURRENT_LIST_DIR}/${INPUT_DIR} DESTINATION ${DESTINATION})") + endif() + + set(TIMESTAMP "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE}/copy-dir-${COPY_ID}.timestamp") file(GLOB DIR_FILES ${INPUT_DIR}) add_custom_command(OUTPUT ${TIMESTAMP} COMMAND ${CMAKE_COMMAND} -E touch ${TIMESTAMP} @@ -482,6 +491,50 @@ function(celix_bundle_dir) set_target_properties(${BUNDLE} PROPERTIES "BUNDLE_DEPEND_TARGETS" "${DEPS}") endfunction() +function(celix_bundle_add_files) + #0 is bundle TARGET + list(GET ARGN 0 BUNDLE) + list(REMOVE_AT ARGN 0) + + set(OPTIONS ) + set(ONE_VAL_ARGS DESTINATION) + set(MULTI_VAL_ARGS FILES) + cmake_parse_arguments(COPY "${OPTIONS}" "${ONE_VAL_ARGS}" "${MULTI_VAL_ARGS}" ${ARGN}) + + get_target_property(BUNDLE_DIR ${BUNDLE} "BUNDLE_CONTENT_DIR") + if (NOT COPY_DESTINATION) + set(DESTINATION "${BUNDLE_DIR}") + else() + set(DESTINATION "${BUNDLE_DIR}/${COPY_DESTINATION}") + endif() + + string(UUID COPY_ID NAMESPACE "661ee07c-842d-11e8-adfc-80fa5b02e11b" NAME "${COPY_FILES}" TYPE MD5) + + set(TIMESTAMP "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE}/copy-files-${COPY_ID}.timestamp") + set(COPY_CMAKE_SCRIPT "${CMAKE_BINARY_DIR}/celix/gen/bundles/${BUNDLE}/copy-files-${COPY_ID}.cmake") + file(WRITE ${COPY_CMAKE_SCRIPT} + "#Copy script, copies the file on a file per file base\n") + foreach(FILE IN ITEMS ${COPY_FILES}) + if (IS_ABSOLUTE ${FILE}) + file(APPEND ${COPY_CMAKE_SCRIPT} + "file(COPY ${FILE} DESTINATION ${DESTINATION})\n") + else() + file(APPEND ${COPY_CMAKE_SCRIPT} + "file(COPY ${CMAKE_CURRENT_LIST_DIR}/${FILE} DESTINATION ${DESTINATION})\n") + endif() + endforeach() + add_custom_command(OUTPUT ${TIMESTAMP} + COMMAND ${CMAKE_COMMAND} -E touch ${TIMESTAMP} + COMMAND ${CMAKE_COMMAND} -P ${COPY_CMAKE_SCRIPT} + DEPENDS ${COPY_FILES} + COMMENT "Copying files to ${DESTINATION}" + ) + + get_target_property(DEPS ${BUNDLE} "BUNDLE_DEPEND_TARGETS") + list(APPEND DEPS "${TIMESTAMP}") + set_target_properties(${BUNDLE} PROPERTIES "BUNDLE_DEPEND_TARGETS" "${DEPS}") +endfunction() + function(bundle_headers) message(DEPRECATION "bundle_headers is deprecated, use celix_bundle_headers instead.") celix_bundle_headers(${ARGN}) @@ -615,8 +668,8 @@ function(install_celix_bundle_targets) string(REGEX MATCHALL "/" SLASH_MATCHES ${DEST_PATH}) list(LENGTH SLASH_MATCHES NR_OF_SUB_DIRS) - set(CONF_IN_FILE "${CMAKE_BINARY_DIR}/celix/gen/${EXPORT_NAME}-ImportedBundleTargets.cmake.in") - set(CONF_FILE "${CMAKE_BINARY_DIR}/celix/gen/${EXPORT_NAME}-ImportedBundleTargets.cmake") + set(CONF_IN_FILE "${CMAKE_BINARY_DIR}/celix/gen/cmake/${EXPORT_NAME}-ImportedBundleTargets.cmake.in") + set(CONF_FILE "${CMAKE_BINARY_DIR}/celix/gen/cmake/${EXPORT_NAME}-ImportedBundleTargets.cmake") file(REMOVE "${CONF_IN_FILE}") http://git-wip-us.apache.org/repos/asf/celix/blob/8109f6ca/cmake/cmake_celix/ContainerPackaging.cmake ---------------------------------------------------------------------- diff --git a/cmake/cmake_celix/ContainerPackaging.cmake b/cmake/cmake_celix/ContainerPackaging.cmake index 9379d39..b39cdae 100644 --- a/cmake/cmake_celix/ContainerPackaging.cmake +++ b/cmake/cmake_celix/ContainerPackaging.cmake @@ -81,16 +81,16 @@ function(add_celix_container) endif() elseif (CONTAINER_LAUNCHER_SRC) get_filename_component(SRC_FILENAME ${CONTAINER_LAUNCHER_SRC} NAME) - set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/${CONTAINER_TARGET}/${SRC_FILENAME}") + set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/containers/${CONTAINER_TARGET}/${SRC_FILENAME}") set(LAUNCHER_ORG "${CONTAINER_LAUNCHER_SRC}") add_custom_command(OUTPUT ${LAUNCHER_SRC} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAUNCHER_ORG} ${LAUNCHER_SRC} ) else () #generate custom launcher if (CONTAINER_CXX) - set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/${CONTAINER_TARGET}/main.cc") + set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/containers/${CONTAINER_TARGET}/main.cc") else() - set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/${CONTAINER_TARGET}/main.c") + set(LAUNCHER_SRC "${PROJECT_BINARY_DIR}/celix/gen/containers/${CONTAINER_TARGET}/main.c") endif() file(GENERATE @@ -122,7 +122,7 @@ $<JOIN:$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_EMBEDDED_PROPERTIES>,\\n\ endif () #generate config.properties - set(STAGE1_PROPERTIES "${PROJECT_BINARY_DIR}/celix/gen/${CONTAINER_TARGET}/container-config-stage1.properties") + set(STAGE1_PROPERTIES "${PROJECT_BINARY_DIR}/celix/gen/containers/${CONTAINER_TARGET}/container-config-stage1.properties") file(GENERATE OUTPUT "${STAGE1_PROPERTIES}" CONTENT "CELIX_AUTO_START_0=$<JOIN:$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_BUNDLES_LEVEL_0>, > @@ -264,7 +264,7 @@ function(celix_container_bundles_dir) get_target_property(IMP ${BUNDLE} BUNDLE_IMPORTED) if (IMP) #An imported bundle target -> handle target without DEPENDS string(MAKE_C_IDENTIFIER ${BUNDLE} BUNDLE_ID) #Create id with no special chars (e.g. for target like Celix::shell) - set(OUT "${CMAKE_BINARY_DIR}/celix/gen/${CONTAINER_TARGET}/copy-bundle-for-target-${BUNDLE_ID}.timestamp") + set(OUT "${CMAKE_BINARY_DIR}/celix/gen/containers/${CONTAINER_TARGET}/copy-bundle-for-target-${BUNDLE_ID}.timestamp") set(DEST "${CONTAINER_LOC}/${BD_DIR_NAME}/$<TARGET_PROPERTY:${BUNDLE},BUNDLE_FILENAME>") add_custom_command(OUTPUT ${OUT} COMMAND ${CMAKE_COMMAND} -E touch ${OUT} @@ -279,7 +279,7 @@ function(celix_container_bundles_dir) if (NOT HANDLED) #not a imported bundle target so (assuming) a future bundle target string(MAKE_C_IDENTIFIER ${BUNDLE} BUNDLE_ID) #Create id with no special chars (e.g. for target like Celix::shell) - set(OUT "${CMAKE_BINARY_DIR}/celix/gen/${CONTAINER_TARGET}/copy-bundle-for-target-${BUNDLE_ID}.timestamp") + set(OUT "${CMAKE_BINARY_DIR}/celix/gen/containers/${CONTAINER_TARGET}/copy-bundle-for-target-${BUNDLE_ID}.timestamp") set(DEST "${CONTAINER_LOC}/${BD_DIR_NAME}/$<TARGET_PROPERTY:${BUNDLE},BUNDLE_FILENAME>") add_custom_command(OUTPUT ${OUT} COMMAND ${CMAKE_COMMAND} -E touch ${OUT} @@ -347,7 +347,7 @@ function(celix_container_bundles) if (NOT COPY) #in case of COPY dep will be added in celix_container_bundles_dir string(MAKE_C_IDENTIFIER ${BUNDLE} BUNDLE_ID) #Create id with no special chars (e.g. for target like Celix::shell) - set(OUT "${CMAKE_BINARY_DIR}/celix/gen/${CONTAINER_TARGET}/check-bundle-for-target-${BUNDLE_ID}.timestamp") + set(OUT "${CMAKE_BINARY_DIR}/celix/gen/containers/${CONTAINER_TARGET}/check-bundle-for-target-${BUNDLE_ID}.timestamp") add_custom_command(OUTPUT ${OUT} COMMAND ${CMAKE_COMMAND} -E touch ${OUT} DEPENDS ${BUNDLE} $<TARGET_PROPERTY:${BUNDLE},BUNDLE_CREATE_BUNDLE_TARGET> http://git-wip-us.apache.org/repos/asf/celix/blob/8109f6ca/cmake/cmake_celix/DockerPackaging.cmake ---------------------------------------------------------------------- diff --git a/cmake/cmake_celix/DockerPackaging.cmake b/cmake/cmake_celix/DockerPackaging.cmake index ea5b8e0..55553c5 100644 --- a/cmake/cmake_celix/DockerPackaging.cmake +++ b/cmake/cmake_celix/DockerPackaging.cmake @@ -166,7 +166,7 @@ $<JOIN:$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_EMBEDDED_PROPERTIES>,\\n\\ set_target_properties(${DOCKER_TARGET} PROPERTIES "DOCKER_EMBEDDED_PROPERTIES" "") set_target_properties(${DOCKER_TARGET} PROPERTIES "DOCKER_DEPS" "") - set(DOCKERFILE_STAGE1 ${CMAKE_BINARY_DIR}/celix/gen/${DOCKER_TARGET}/Dockerfile.in) + set(DOCKERFILE_STAGE1 ${CMAKE_BINARY_DIR}/celix/gen/docker/${DOCKER_TARGET}/Dockerfile.in) set(DOCKERFILE "$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_LOC>/Dockerfile") file(GENERATE @@ -187,7 +187,7 @@ $<JOIN:$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_INSTRUCTIONS>, #generate config.properties set(DOCKER_PROPERTIES_FILE "${DOCKER_LOC}/${DOCKER_WORKDIR}/config.properties") - set(STAGE1_PROPERTIES_FILE "${CMAKE_BINARY_DIR}/celix/gen/${DOCKER_TARGET}/docker-config-stage1.properties") + set(STAGE1_PROPERTIES_FILE "${CMAKE_BINARY_DIR}/celix/gen/docker/${DOCKER_TARGET}/docker-config-stage1.properties") file(GENERATE OUTPUT "${STAGE1_PROPERTIES_FILE}" CONTENT "CELIX_AUTO_START_0=$<JOIN:$<TARGET_PROPERTY:${DOCKER_TARGET},DOCKER_BUNDLES_LEVEL_0>, > @@ -270,7 +270,7 @@ function(celix_docker_bundles) get_target_property(IMP ${BUNDLE} BUNDLE_IMPORTED) if (IMP) #An imported bundle target -> handle target without DEPENDS string(MAKE_C_IDENTIFIER ${BUNDLE} BUNDLE_ID) #Create id with no special chars (e.g. for target like Celix::shell) - set(OUT "${CMAKE_BINARY_DIR}/celix/gen/${DOCKER_TARGET}/copy-bundle-for-target-${BUNDLE_ID}.timestamp") + set(OUT "${CMAKE_BINARY_DIR}/celix/gen/docker/${DOCKER_TARGET}/copy-bundle-for-target-${BUNDLE_ID}.timestamp") set(DEST "${LOC}/${BUNDLES_DIR}/$<TARGET_PROPERTY:${BUNDLE},BUNDLE_FILENAME>") add_custom_command(OUTPUT ${OUT} COMMAND ${CMAKE_COMMAND} -E touch ${OUT} @@ -286,7 +286,7 @@ function(celix_docker_bundles) if(NOT HANDLED) #assuming (future) bundle target string(MAKE_C_IDENTIFIER ${BUNDLE} BUNDLE_ID) #Create id with no special chars (e.g. for target like Celix::shell) - set(OUT "${CMAKE_BINARY_DIR}/celix/gen/${DOCKER_TARGET}/copy-bundle-for-target-${BUNDLE_ID}.timestamp") + set(OUT "${CMAKE_BINARY_DIR}/celix/gen/docker/${DOCKER_TARGET}/copy-bundle-for-target-${BUNDLE_ID}.timestamp") set(DEST "${LOC}/${BUNDLES_DIR}/$<TARGET_PROPERTY:${BUNDLE},BUNDLE_FILENAME>") add_custom_command(OUTPUT ${OUT} COMMAND ${CMAKE_COMMAND} -E touch ${OUT} http://git-wip-us.apache.org/repos/asf/celix/blob/8109f6ca/documents/cmake_commands/readme.md ---------------------------------------------------------------------- diff --git a/documents/cmake_commands/readme.md b/documents/cmake_commands/readme.md index 205e10d..4fc1b24 100644 --- a/documents/cmake_commands/readme.md +++ b/documents/cmake_commands/readme.md @@ -256,8 +256,7 @@ which in turn can be used to create very small Apache Celix docker images. ## add_celix_docker Adds a docker target dir, containing a all the required executables, -libraries and filesystem needed to run a Apache Celix framework in a docker container. -Also includes the selected bundles. +libraries, filesystem files and selected bundles needed to run a Apache Celix framework in a docker container. The add_celix_docker target is a executable target and can be used to link libraries which are needed in the docker image. @@ -350,4 +349,4 @@ celix_docker_instructions(<docker_target_name> "instruction2" ... ) -``` \ No newline at end of file +``` http://git-wip-us.apache.org/repos/asf/celix/blob/8109f6ca/examples/celix-examples/civetweb/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/examples/celix-examples/civetweb/CMakeLists.txt b/examples/celix-examples/civetweb/CMakeLists.txt index 99926f9..5e469aa 100644 --- a/examples/celix-examples/civetweb/CMakeLists.txt +++ b/examples/celix-examples/civetweb/CMakeLists.txt @@ -27,11 +27,11 @@ add_celix_bundle(embedded_civetweb ) target_link_libraries(embedded_civetweb PRIVATE Celix::shell_api) celix_bundle_private_libs(embedded_civetweb civetweb_static) -celix_bundle_dir(embedded_civetweb resources) +celix_bundle_add_dir(embedded_civetweb resources) add_celix_container(civetweb_example BUNDLES Celix::shell Celix::shell_tui embedded_civetweb -) \ No newline at end of file +) http://git-wip-us.apache.org/repos/asf/celix/blob/8109f6ca/examples/celix-examples/civetweb/resources/index.html ---------------------------------------------------------------------- diff --git a/examples/celix-examples/civetweb/resources/index.html b/examples/celix-examples/civetweb/resources/index.html index ab46896..cf497cd 100644 --- a/examples/celix-examples/civetweb/resources/index.html +++ b/examples/celix-examples/civetweb/resources/index.html @@ -31,4 +31,5 @@ <textarea rows="50" cols="80" id="console_output"></textarea> <script>docReady();</script> </body> -</html> \ No newline at end of file +</html> + http://git-wip-us.apache.org/repos/asf/celix/blob/8109f6ca/examples/celix-examples/civetweb/resources/script.js ---------------------------------------------------------------------- diff --git a/examples/celix-examples/civetweb/resources/script.js b/examples/celix-examples/civetweb/resources/script.js index 588fbf6..10292cb 100644 --- a/examples/celix-examples/civetweb/resources/script.js +++ b/examples/celix-examples/civetweb/resources/script.js @@ -30,6 +30,7 @@ function docReady() { document.getElementById("command_button").onclick = function() { input = document.getElementById("command_input").value; + document.getElementById("command_input").value = ""; shellSocket.send(input); };
