touch renameSDC.sh
chmod +x renameSDC.sh
nano renameSDC.sh 
#!/bin/bash

# Zatrzymanie skryptu w przypadku wystąpienia błędu
set -e

# Sprawdzenie liczby argumentów wejściowych
if [ "$#" -ne 2 ]; then
    echo "Błąd: Wymagane są dokładnie dwa argumenty."
    echo "Użycie: $0 <stara_sciezka_komponentu> <nowa_sciezka_komponentu>"
    echo "Przykład: $0 components/button components/dafr-button"
    exit 1
fi

# Usunięcie ewentualnego ukośnika na końcu ścieżek
OLD_PATH="${1%/}"
NEW_PATH="${2%/}"

# Sprawdzenie czy katalog źródłowy istnieje
if [ ! -d "$OLD_PATH" ]; then
    echo "Błąd: Katalog źródłowy '$OLD_PATH' nie istnieje."
    exit 1
fi

# Sprawdzenie czy katalog docelowy już istnieje
if [ -d "$NEW_PATH" ]; then
    echo "Błąd: Katalog docelowy '$NEW_PATH' już istnieje."
    exit 1
fi

OLD_NAME=$(basename "$OLD_PATH")
NEW_NAME=$(basename "$NEW_PATH")
NEW_PARENT_DIR=$(dirname "$NEW_PATH")

echo "Zmienianie nazwy komponentu z '$OLD_NAME' na '$NEW_NAME'..."

# Upewnienie się, że katalog nadrzędny dla nowej lokalizacji istnieje
mkdir -p "$NEW_PARENT_DIR"

# Zmiana nazwy katalogu głównego komponentu
mv "$OLD_PATH" "$NEW_PATH"

# Zmiana nazw plików wewnątrz katalogu (wyszukiwanie ignorujące wielkość liter)
echo "Aktualizowanie nazw plików..."
shopt -s nocasematch
for file in "$NEW_PATH"/*; do
    if [ -f "$file" ]; then
        filename=$(basename "$file")
        if [[ "$filename" == "$OLD_NAME"* ]]; then
            # Zachowujemy oryginalną wielkość liter w rozszerzeniu, zmieniamy tylko rdzeń nazwy
            new_filename="${filename/$OLD_NAME/$NEW_NAME}"
            mv "$file" "$NEW_PATH/$new_filename"
            echo "  Przemianowano plik: $filename -> $new_filename"
        fi
    fi
done
shopt -u nocasematch

# Elastyczne i bezpieczne wyszukiwanie pliku metadanych w nowym katalogu
YAML_FILE=$(find "$NEW_PATH" -maxdepth 1 -iname "*.component.yaml" -o -iname "*.component.yml" | head -n 1)

if [ -n "$YAML_FILE" ]; then
    YAML_FILENAME=$(basename "$YAML_FILE")
    echo "Aktualizowanie metadanych w pliku: $YAML_FILENAME..."

    # 1. Zmiana nazwy: dodaje "DAFR " przed obecną nazwą (np. Heading -> DAFR Heading).
    # Regex wspiera opcjonalne cudzysłowy/apostrofy i zapobiega dublowaniu "DAFR".
    sed -i -E "s/^([\"']?)name([\"']?):[[:space:]]*([\"']?)(DAFR )?([^\"'\r\n]+)([\"']?)/name: \3DAFR \5\6/" "$YAML_FILE"
    echo "  [OK] Zaktualizowano pole 'name'"

    # 2. Zmiana grupy: ustawia wartość na "Custom" z zachowaniem ewentualnych cudzysłowów.
    if grep -q "group:" "$YAML_FILE"; then
        sed -i -E "s/^([\"']?)group([\"']?):[[:space:]]*([\"']?)[^\"'\r\n]+([\"']?)/group: \3Custom\4/" "$YAML_FILE"
    else
        # Jeśli z jakiegoś powodu nie było pola group, dodajemy je pod name
        sed -i "/name:/a group: Custom" "$YAML_FILE"
    fi
    echo "  [OK] Zaktualizowano pole 'group'"
else
    echo "Błąd: Nie znaleziono pliku *.component.yaml ani *.component.yml w '$NEW_PATH'."
fi

echo ""
echo "Zakończono pomyślnie."

 

Spis treści: