Browse Source

cmake: Generate version-create.mongo file and install it

Xenofon Karamanos 10 months ago
parent
commit
b70ade3e63
2 changed files with 38 additions and 2 deletions
  1. 20 2
      utils/kamctl/CMakeLists.txt
  2. 18 0
      utils/kamctl/generate_version_create_mongo.sh

+ 20 - 2
utils/kamctl/CMakeLists.txt

@@ -306,11 +306,11 @@ else()
       COMMENT "Cleaning ${db_name} schema files")
       COMMENT "Cleaning ${db_name} schema files")
   endfunction()
   endfunction()
 
 
-  # Add targets for each database type Pi framework targets should combined into
-  # one
+  # Add targets for each database type
   add_custom_target(dbschema COMMENT "Generating schemas for all dbs...")
   add_custom_target(dbschema COMMENT "Generating schemas for all dbs...")
   add_custom_target(dbschema_clean COMMENT "Cleaning schemas for all dbs...")
   add_custom_target(dbschema_clean COMMENT "Cleaning schemas for all dbs...")
 
 
+  # Pi framework targets should combined into one
   if("xhttp_pi" IN_LIST FINAL_MODULES_LIST)
   if("xhttp_pi" IN_LIST FINAL_MODULES_LIST)
     add_db_target(pi_framework_table "${STYLESHEETS}/pi_framework_table.xsl")
     add_db_target(pi_framework_table "${STYLESHEETS}/pi_framework_table.xsl")
     add_db_target(pi_framework_mod "${STYLESHEETS}/pi_framework_mod.xsl")
     add_db_target(pi_framework_mod "${STYLESHEETS}/pi_framework_mod.xsl")
@@ -361,6 +361,24 @@ else()
     add_db_target(mongodb "${STYLESHEETS}/mongodb.xsl")
     add_db_target(mongodb "${STYLESHEETS}/mongodb.xsl")
     add_dependencies(dbschema dbschema_mongodb)
     add_dependencies(dbschema dbschema_mongodb)
     add_dependencies(dbschema_clean dbschema_mongodb_clean)
     add_dependencies(dbschema_clean dbschema_mongodb_clean)
+    # Create the version-create.mongo script
+    # After processing the JSON files, create the version-create.mongo script
+    # Usage of generate_version_create_mongo.sh:
+    # 1. The first argument is the path to create the version-create.mongo script
+    # 2. The second argument is the path to the directory containing the JSON files
+    add_custom_command(
+      TARGET dbschema_mongodb
+      POST_BUILD
+      COMMAND
+        bash ${CMAKE_CURRENT_SOURCE_DIR}/generate_version_create_mongo.sh
+        "${CMAKE_CURRENT_BINARY_DIR}/mongodb/kamailio/version-create.mongo"
+        "${CMAKE_CURRENT_BINARY_DIR}/mongodb/kamailio"
+      COMMENT "Creating version-create.mongo from JSON files")
+
+    install(
+      FILES ${CMAKE_CURRENT_BINARY_DIR}/mongodb/kamailio/version-create.mongo
+      DESTINATION ${CMAKE_INSTALL_DATADIR}/${MAIN_NAME}/mongodb/${MAIN_NAME}
+      COMPONENT KMONGODB)
   endif()
   endif()
   if("db_redis" IN_LIST FINAL_MODULES_LIST)
   if("db_redis" IN_LIST FINAL_MODULES_LIST)
     add_db_target(db_redis "${STYLESHEETS}/db_redis.xsl")
     add_db_target(db_redis "${STYLESHEETS}/db_redis.xsl")

+ 18 - 0
utils/kamctl/generate_version_create_mongo.sh

@@ -0,0 +1,18 @@
+#!/bin/bash
+
+OUTPUT_FILE="$1"
+JSON_DIR="$2"
+
+# Create the version-create.mongo file
+echo "use kamailio;" > "$OUTPUT_FILE"
+echo "db.createCollection(\"version\");" >> "$OUTPUT_FILE"
+
+for FILE in "$JSON_DIR"/*.json; do
+  if [ -f "$FILE" ]; then
+    if [ "$FILE" != "$JSON_DIR/version.json" ]; then
+      VN=$(grep '"version":' "$FILE" | grep -o -E '[0-9]+')
+      FN=$(basename "$FILE" .json)
+      echo "db.getCollection(\"version\").insert({ table_name: \"$FN\", table_version: NumberInt($VN) });" >> "$OUTPUT_FILE"
+    fi
+  fi
+done