# WordPress SVN Tag Creator v2

Ein Node.js-Skript zum Veröffentlichen neuer Plugin-Versionen im WordPress SVN Repository.

## Voraussetzungen

- Node.js 18+ (empfohlen: 22)
- SVN-Arbeitsverzeichnis mit `trunk/` und `tags/`
- Keine zusätzlichen npm-Dependencies nötig

## Verwendung

```bash
# Ins Hauptverzeichnis wechseln
cd /Volumes/sources/amazonsimpleadmin

# Test-Durchlauf (empfohlen vor jedem Release)
node resources/svn/create-tag-v2.mjs <version> --dry-run

# Echter Release
node resources/svn/create-tag-v2.mjs <version>

# Hilfe anzeigen
node resources/svn/create-tag-v2.mjs --help
```

## Beispiele

```bash
# Version 1.8.0 testen
node resources/svn/create-tag-v2.mjs 1.8.0 --dry-run

# Version 1.8.0 veröffentlichen
node resources/svn/create-tag-v2.mjs 1.8.0

# Version 1.8.1 veröffentlichen
node resources/svn/create-tag-v2.mjs 1.8.1
```

## Optionen

| Option | Kurz | Beschreibung |
|--------|------|--------------|
| `--dry-run` | `-d` | Test-Modus: Führt alle Prüfungen durch, committed aber nichts |
| `--help` | `-h` | Zeigt die Hilfe an |

## Was das Skript macht

1. **Validierung**
   - Prüft ob die Version ein gültiges Format hat (X.Y.Z)
   - Prüft ob der Tag bereits existiert
   - Prüft ob `trunk/` und `trunk/readme.txt` vorhanden sind
   - Zeigt uncommitted Changes an

2. **Step 1: Stable Tag aktualisieren**
   - Liest den aktuellen "Stable tag" aus `trunk/readme.txt`
   - Aktualisiert ihn auf die neue Version (falls nötig)

3. **Step 2: SVN Tag erstellen**
   - Kopiert `trunk/` nach `tags/<version>/`
   - Entfernt ignorierte Dateien aus dem Tag

4. **Step 3: Tag committen**
   - Committed den neuen Tag ins SVN Repository

5. **Step 4: Trunk committen**
   - Committed `trunk/` (inkl. aktualisierter readme.txt)
   - WordPress erkennt dadurch die neue Version

## Ignorierte Dateien

Folgende Dateien/Verzeichnisse werden automatisch aus dem Tag entfernt:

- `.idea/`
- `.claude/`
- `.security-reports/`
- `.wp-env.json`
- `.DS_Store`
- `asadebug.txt`
- `tmp/`
- `one-theme/`
- `GEMINI.md`
- `CLAUDE.md`
- `node_modules/`

## Dry-Run Modus

Der `--dry-run` Modus ist ideal um vor dem Release zu prüfen:

- Ob alle Voraussetzungen erfüllt sind
- Welche Dateien committed würden
- Welche ignorierten Dateien entfernt würden
- Wie die Commit-Nachrichten aussehen würden

**Es werden keine Änderungen am Repository vorgenommen.**

## Troubleshooting

### "Verzeichnis trunk nicht gefunden"
Das Skript muss vom Verzeichnis ausgeführt werden, das `trunk/` enthält:
```bash
cd /Volumes/sources/amazonsimpleadmin
node resources/svn/create-tag-v2.mjs 1.8.0
```

### "Tag existiert bereits"
Der Tag wurde bereits erstellt. Prüfe mit:
```bash
ls tags/
```

### SVN Authentifizierung
Falls SVN nach Credentials fragt, stelle sicher dass deine SVN-Credentials gespeichert sind:
```bash
svn auth
```

## Altes Skript

Das alte Bash-Skript `create-tag.sh` ist weiterhin vorhanden, wird aber nicht mehr empfohlen.

## Änderungshistorie

- **v2** (Januar 2025): Komplette Neuimplementierung in Node.js
  - Interaktive Bestätigungen vor kritischen Schritten
  - Dry-Run Modus für sichere Tests
  - Farbige Ausgaben und Spinner-Animationen
  - Robuste Fehlerbehandlung
  - Automatische Aktualisierung des Stable tags
