#!/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."