#!/bin/bash HEADER_KEY="THIS HEADER IS AUTOGENERATED. DO NOT MODIFY MANUALLY." HEADER="/** $HEADER_KEY For any changes, please update the '/openvidu-meet/types' directory. */" SOURCE_DIR="src" FRONTEND_DIR="../frontend/projects/shared-meet-components/src/lib/typings/ce" BACKEND_DIR="../backend/src/typings/ce" TYPES_DIR="../../openvidu-meet-pro/types/src/ce" add_headers() { find "$SOURCE_DIR" -type f -name "*.ts" | while IFS= read -r file; do if ! grep -qF "$HEADER_KEY" "$file"; then printf "%s\n\n%s" "$HEADER" "$(cat "$file")" > "${file}.tmp" && mv "${file}.tmp" "$file" fi done } remove_headers() { find "$SOURCE_DIR" -type f -name "*.ts" | while IFS= read -r file; do if grep -qF "$HEADER_KEY" "$file"; then awk -v header_key="$HEADER_KEY" ' BEGIN { skip = 0 } { if (skip) { if ($0 ~ /^$/) { skip = 0 } next } if ($0 ~ /^\/\*\* .*'"$HEADER_KEY"'.*\*\/$/) { skip = 1 next } print } ' "$file" > "${file}.tmp" && mv "${file}.tmp" "$file" fi done } if [[ $1 == "ce" ]]; then TARGET_DIRS=("$FRONTEND_DIR" "$BACKEND_DIR") elif [[ $1 == "pro" ]]; then TARGET_DIRS=("$TYPES_DIR") else echo "No argument provided. Copying to both CE and PRO" TARGET_DIRS=("$FRONTEND_DIR" "$BACKEND_DIR" "$TYPES_DIR") fi echo "Adding autogenerated comments to files..." add_headers echo "Copying files to target directories..." for TARGET_DIR in "${TARGET_DIRS[@]}"; do mkdir -p "$TARGET_DIR" cp -rT "$SOURCE_DIR" "$TARGET_DIR" done echo "Restoring original files..." remove_headers echo "Types have been synced successfully."