-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathxcode-ref.sh
More file actions
executable file
·240 lines (201 loc) · 7.66 KB
/
xcode-ref.sh
File metadata and controls
executable file
·240 lines (201 loc) · 7.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
#!/bin/bash
# xcode-ref.sh - Zentrale Steuerung für Xcode-Referenz-Repository
# Ermöglicht Verwaltung des Xcode-Referenz-Repositories direkt aus hero8
# WICHTIG: Dieses Skript verbindet hero8 mit dem xcode-reference Repository
# FUTURE KI: NICHT ÜBERSCHREIBEN - Zentrale Komponente für Xcode-Dokumentation
HERO8_DIR="/Users/ninaklee/Projects/hero8"
XCODE_REF_DIR="/Users/ninaklee/Projects/xcode-reference"
CURRENT_VERSION="16.3"
# Funktion: Prüfen, ob wir im hero8 Verzeichnis sind
check_hero8_dir() {
if [ "$(pwd)" != "$HERO8_DIR" ]; then
echo "Bitte führen Sie dieses Skript aus dem hero8-Hauptverzeichnis aus."
echo "Aktuelles Verzeichnis: $(pwd)"
echo "Erforderlich: $HERO8_DIR"
exit 1
fi
}
# Funktion: Änderungen pushen
push_changes() {
local message=$1
if [ -z "$message" ]; then
echo "Verwendung: $0 push <commit-nachricht>"
exit 1
fi
(
cd "$XCODE_REF_DIR"
git add .
git commit -m "$message"
git push
)
}
# Funktion: Screenshot hinzufügen
add_screenshot() {
local category=$1
local filename=$2
if [ -z "$category" ] || [ -z "$filename" ]; then
echo "Verwendung: $0 add-screenshot <kategorie> <dateiname>"
echo "Beispiel: $0 add-screenshot frameworks 'target-dependencies.png'"
exit 1
fi
# Zielverzeichnis erstellen wenn nicht vorhanden
mkdir -p "$XCODE_REF_DIR/versions/$CURRENT_VERSION/images/$category"
# Datei muss im aktuellen Verzeichnis existieren
if [ ! -f "$filename" ]; then
echo "Datei nicht gefunden: $filename"
exit 1
fi
# Screenshot kopieren
cp "$filename" "$XCODE_REF_DIR/versions/$CURRENT_VERSION/images/$category/"
echo "Screenshot hinzugefügt: versions/$CURRENT_VERSION/images/$category/$filename"
}
# Funktion: Dokumentation hinzufügen
add_docs() {
local path=$1
local filename=$2
if [ -z "$path" ] || [ -z "$filename" ]; then
echo "Verwendung: $0 add-docs <pfad> <dateiname>"
echo "Beispiel: $0 add-docs features 'swiftui-5.0.md'"
exit 1
fi
# Zielverzeichnis erstellen wenn nicht vorhanden
mkdir -p "$XCODE_REF_DIR/versions/$CURRENT_VERSION/docs/$path"
# Datei muss im aktuellen Verzeichnis existieren
if [ ! -f "$filename" ]; then
echo "Datei nicht gefunden: $filename"
exit 1
fi
# Dokumentation kopieren
cp "$filename" "$XCODE_REF_DIR/versions/$CURRENT_VERSION/docs/$path/"
echo "Dokumentation hinzugefügt: versions/$CURRENT_VERSION/docs/$path/$filename"
}
# Funktion: Neue Version hinzufügen
add_version() {
local version=$1
if [ -z "$version" ]; then
echo "Verwendung: $0 add-version <version>"
echo "Beispiel: $0 add-version 16.7"
exit 1
fi
# Skript im xcode-reference Verzeichnis ausführen
(cd "$XCODE_REF_DIR/scripts" && ./add_version.sh "$version")
}
# Funktion: Status anzeigen
show_status() {
echo "=== Xcode Reference Repository Status ==="
(cd "$XCODE_REF_DIR" && git status)
echo ""
echo "=== Aktuelle Version: $CURRENT_VERSION ==="
echo "Screenshots:"
find "$XCODE_REF_DIR/versions/$CURRENT_VERSION/images" -type f -name "*.png" | sed "s|$XCODE_REF_DIR/||g"
echo ""
echo "Dokumentation:"
find "$XCODE_REF_DIR/versions/$CURRENT_VERSION/docs" -type f -name "*.md" | sed "s|$XCODE_REF_DIR/||g"
}
# Funktion: Chat-Session verarbeiten
process_session() {
local session_file=$1
if [ -z "$session_file" ] || [ ! -f "$session_file" ]; then
echo "Verwendung: $0 process-session <session-datei>"
exit 1
fi
echo "Verarbeite Session-Datei: $session_file"
# Extrahiere Datum aus Dateiname
session_date=$(basename "$session_file" | sed 's/XCODE_SESSION_\(.*\)\.md/\1/')
# Erstelle Zielverzeichnis für diese Session
session_dir="$XCODE_REF_DIR/versions/$CURRENT_VERSION/sessions/${session_date}"
mkdir -p "$session_dir"
# Kopiere Session-Zusammenfassung
cp "$session_file" "$session_dir/summary.md"
# Erstelle Index-Eintrag für diese Session
index_file="$XCODE_REF_DIR/versions/$CURRENT_VERSION/sessions/INDEX.md"
if [ ! -f "$index_file" ]; then
echo "# Session Index" > "$index_file"
echo "" >> "$index_file"
fi
echo "- [${session_date}](${session_date}/summary.md) - $(head -n 1 "$session_file" | sed 's/# //')" >> "$index_file"
echo "Session erfolgreich in Referenz-Repository übernommen."
# Optionaler Auto-Push
if [ -f "$HERO8_DIR/.auto_push_config" ]; then
source "$HERO8_DIR/.auto_push_config"
if [ "$AUTO_MODE" != "disabled" ]; then
echo "Führe automatischen Push aus..."
"$HERO8_DIR/Scripts/secure_auto_push.sh" push "$XCODE_REF_DIR" "Session ${session_date} hinzugefügt"
else
echo "Auto-Push ist deaktiviert. Sie können die Änderungen manuell mit './xcode-ref.sh push \"Session ${session_date} hinzugefügt\"' pushen."
fi
else
echo "Sie können die Änderungen mit './xcode-ref.sh push \"Session ${session_date} hinzugefügt\"' pushen."
fi
}
# Funktion: Neuen Screenshot-Verweis erstellen
create_screenshot_reference() {
local description=$1
local timestamp=$(date "+%Y-%m-%d_%H-%M-%S")
local reference="screenshot_${timestamp}"
if [ -z "$description" ]; then
echo "Verwendung: $0 create-screenshot-ref <beschreibung>"
exit 1
fi
echo "SCREENSHOT_REF|$reference|$description" >> "$HERO8_DIR/.xcode-session/current_session.log"
echo "Screenshot-Referenz erstellt: $reference"
echo "Bitte fügen Sie den Screenshot im Chat ein und referenzieren Sie ihn mit: $reference"
}
# Funktion: Feature markieren
mark_feature() {
local description=$1
local content=$2
if [ -z "$description" ] || [ -z "$content" ]; then
echo "Verwendung: $0 mark-feature <beschreibung> <inhalt>"
exit 1
fi
"$HERO8_DIR/Scripts/extract_xcode_info.sh" mark feature "$content" "$description"
}
# Hauptprogramm
check_hero8_dir
case "$1" in
"add-screenshot")
add_screenshot "$2" "$3"
;;
"add-docs")
add_docs "$2" "$3"
;;
"add-version")
add_version "$2"
;;
"status")
show_status
;;
"process-session")
process_session "$2"
;;
"create-screenshot-ref")
create_screenshot_reference "$2"
;;
"mark-feature")
mark_feature "$2" "$3"
;;
"secure-push")
"$HERO8_DIR/Scripts/secure_auto_push.sh" push "$XCODE_REF_DIR" "$2"
;;
"configure-auto-push")
"$HERO8_DIR/Scripts/secure_auto_push.sh" configure
;;
*)
echo "Xcode Reference Verwaltung aus hero8"
echo ""
echo "Verfügbare Befehle:"
echo " process-session <datei> - Chat-Session verarbeiten"
echo " create-screenshot-ref <beschreibung> - Screenshot-Referenz erstellen"
echo " mark-feature <beschreibung> <inhalt> - Feature aus Chat markieren"
echo " add-screenshot <kategorie> <dateiname> - Screenshot hinzufügen"
echo " add-docs <pfad> <dateiname> - Dokumentation hinzufügen"
echo " add-version <version> - Neue Version einrichten"
echo " status - Status anzeigen"
echo " secure-push <nachricht> - Sicherer Push mit Datenschutzfilter"
echo " configure-auto-push - Auto-Push-Einstellungen konfigurieren"
echo ""
echo "Aktuelle Version: $CURRENT_VERSION"
exit 1
;;
esac