dots

my dotfiles
git clone https://git.awy.one/dots
Log | Files | Refs | Submodules | README | LICENSE

notes (1064B) - View raw


 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
#!/usr/bin/env bash

folder=$XDG_DATA_HOME/notes/

git-sync() {
  git -C "$folder" add .
  git -C "$folder" commit -m "$2: $1" >/dev/null 2>&1
  git -C "$folder" push >/dev/null 2>&1
}

newnote() {
  dir="$(command ls -d "$folder" "$folder"*/ | mew -c -l 5 -i -p 'Choose directory: ')" || exit 0
  : "${dir:=$folder}"
  name="$(echo "" | mew -c -sb "#a3be8c" -nf "#d8dee9" -p "Enter a name: " <&-)" || exit 0
  : "${name:=$(date +%F_%H-%M-%S)}"
  setsid -fw "$TERMINAL" -e nvim "$dir$name.md" >/dev/null 2>&1
  git-sync "$name" "New note"
}

selected() {
  choice=$(
    echo -e "New\n$(find "$folder" -type d -name .git -prune -o -type f -printf '%T@ %P\n' | sort -nr | cut -d' ' -f2-)" | mew -c -l 5 -i -p "Choose note or create new: "
  )
  case $choice in
  New) newnote ;;
  *.md)
    setsid -fw "$TERMINAL" -e nvim "$folder$choice" >/dev/null 2>&1
    git-sync "$choice" "Change note"
    ;;
  *) exit ;;
  esac
}

if ! err=$(git -C "$folder" pull --rebase 2>&1); then
  notify-send "Notes" "Git pull failed $(echo "$err" | tail -n 5)"
  exit 1
fi

selected