#!/bin/sh

echo "Project name: $1"

if [ $# -ne 1 ]
then
    echo "You call this script wtth wrong arguments."
    echo "Example for start script:"
    echo "./init.sh MyCmakeProject"
    echo "Usage: $0 <replacement_string>"

    exit 1
fi

replacement="$1"

rename_files_and_folders() {
    local dir="$1"
    local old_str="$2"
    local new_str="$3"

    for item in "$dir"/*; do
        if [ -d "$item" ]; then
            new_name=$(echo "$item" | sed "s/$old_str/$new_str/g")
            if [ "$item" != "$new_name" ]; then
                mv "$item" "$new_name"
                echo "Renamed directory: $item -> $new_name"
            fi
            rename_files_and_folders "$new_name" "$old_str" "$new_str"
        elif [ -f "$item" ]; then
            sed -i "s/$old_str/$new_str/g" "$item"

            new_name=$(echo "$item" | sed "s/$old_str/$new_str/g")
            if [ "$item" != "$new_name" ]; then
                mv "$item" "$new_name"
                echo "Renamed file: $item -> $new_name"
            fi
        fi
    done
}

uppercase_string=$(echo "$replacement" | tr '[:lower:]' '[:upper:]')

rename_files_and_folders "." "RENAME_ME_EXPORT" "${uppercase_string}_EXPORT"
rename_files_and_folders "." "RENAME_ME_VERSION" "${uppercase_string}_VERSION"
rename_files_and_folders "." "RENAME_ME_LIBRARY" "${uppercase_string}_LIBRARY"
rename_files_and_folders "." "RENAME_ME_EXAMPLE" "${uppercase_string}_EXAMPLE"
rename_files_and_folders "." "RENAME_ME_TESTS" "${uppercase_string}_TESTS"
rename_files_and_folders "." "RENAME_ME_PACKAGE_ID" "${uppercase_string}_PACKAGE_ID"

rename_files_and_folders "." "RENAME_ME" "$replacement"

echo "Replacement complete."


git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
    while read path_key path
    do
        url_key=$(echo $path_key | sed 's/\.path/.url/')
        url=$(git config -f .gitmodules --get "$url_key")
        git submodule add $url $path
    done