-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtil.sh
More file actions
119 lines (93 loc) · 3.23 KB
/
til.sh
File metadata and controls
119 lines (93 loc) · 3.23 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
#!/usr/bin/env bash
# Konfigurationsordner und Dateien
CONFIG_DIR="$HOME/.config/til"
CONFIG_FILE="$CONFIG_DIR/config"
DEFAULT_TEMPLATE="$CONFIG_DIR/template.md"
# Standardwerte
TIL_DIR="$HOME/Notizen/TIL"
# Konfigurationsordner erstellen, falls nicht vorhanden
if [ ! -d "$CONFIG_DIR" ]; then
mkdir -p "$CONFIG_DIR"
echo "Konfigurationsordner wurde erstellt: $CONFIG_DIR"
# Standard-Template erstellen
cat > "$DEFAULT_TEMPLATE" << EOF
# {{date}} - TIL
## Was ich heute gelernt habe
-
## Quellen
-
EOF
echo "Standard-Template wurde erstellt: $DEFAULT_TEMPLATE"
# Konfigurationsdatei erstellen
cat > "$CONFIG_FILE" << EOF
# Konfiguration für til.sh
TEMPLATE_PATH="$DEFAULT_TEMPLATE"
TIL_DIR="$TIL_DIR"
EOF
echo "Standardkonfiguration wurde erstellt: $CONFIG_FILE"
fi
# Konfigurationsdatei einlesen, wenn vorhanden
if [ -f "$CONFIG_FILE" ]; then
source "$CONFIG_FILE"
else
echo "Fehler: Konfigurationsdatei nicht gefunden unter $CONFIG_FILE"
exit 1
fi
# Aktuelles Datum im Format YYYY-mm-dd
DATE=$(date +"%Y-%m-%d")
# Überprüfen, ob Parameter übergeben wurden
if [ $# -eq 0 ]; then
echo "Fehler: Bitte gib eine Beschreibung an."
echo "Verwendung: $0 beschreibung des TIL-Eintrags"
exit 1
fi
# Beschreibung aus allen Parametern zusammensetzen
DESCRIPTION="$*"
# Neuen Dateinamen erstellen
NEW_FILENAME="$DATE $DESCRIPTION.md"
NEW_FILE_PATH="$TIL_DIR/$NEW_FILENAME"
# Überprüfen, ob der TIL-Ordner existiert, wenn nicht, erstellen
if [ ! -d "$TIL_DIR" ]; then
mkdir -p "$TIL_DIR"
echo "TIL-Ordner wurde erstellt: $TIL_DIR"
fi
# Überprüfen, ob die Template-Datei existiert
if [ ! -f "$TEMPLATE_PATH" ]; then
echo "Fehler: Template-Datei nicht gefunden: $TEMPLATE_PATH"
echo "Bitte überprüfe den Pfad in $CONFIG_FILE"
exit 1
fi
# Temporäre Datei für das generierte Template erstellen
TEMP_TEMPLATE=$(mktemp --suffix=.md)
# Template in die temporäre Datei kopieren und {{date}} durch das aktuelle Datum ersetzen
sed "s/{{date}}/$DATE/g" "$TEMPLATE_PATH" > "$TEMP_TEMPLATE"
# Anzahl der nicht-leeren Zeilen im generierten Template zählen
TEMPLATE_NON_EMPTY_LINES=$(grep -v "^\s*$" "$TEMP_TEMPLATE" | wc -l)
# Temporäre Datei für die Bearbeitung erstellen
TEMP_FILE=$(mktemp --suffix=.md)
cp "$TEMP_TEMPLATE" "$TEMP_FILE"
# Datei in vim öffnen
vim "$TEMP_FILE"
# Prüfen, ob Änderungen vorgenommen wurden
if cmp -s "$TEMP_TEMPLATE" "$TEMP_FILE"; then
echo "Keine Änderungen vorgenommen. Die Notiz wird nicht gespeichert."
rm "$TEMP_TEMPLATE" "$TEMP_FILE"
exit 0
fi
# Anzahl der nicht-leeren Zeilen in der bearbeiteten Datei zählen
EDITED_NON_EMPTY_LINES=$(grep -v "^\s*$" "$TEMP_FILE" | wc -l)
# Prüfen, ob tatsächlich Inhalte hinzugefügt wurden
if [ "$EDITED_NON_EMPTY_LINES" -le "$TEMPLATE_NON_EMPTY_LINES" ]; then
echo "Es wurden keine Inhalte hinzugefügt. Möchtest du die Notiz trotzdem speichern? (j/N)"
read -r ANTWORT
if [[ ! "$ANTWORT" =~ ^[jJ] ]]; then
echo "Abgebrochen. Die Notiz wird nicht gespeichert."
rm "$TEMP_TEMPLATE" "$TEMP_FILE"
exit 0
fi
fi
# Temporäre Datei an den endgültigen Ort verschieben
mv "$TEMP_FILE" "$NEW_FILE_PATH"
rm "$TEMP_TEMPLATE"
# Bestätigung ausgeben
echo "Neue TIL-Notiz erstellt: $NEW_FILE_PATH"