summaryrefslogtreecommitdiff
path: root/wd
blob: 1a2e1f26550623d407ef80e44f1b89bb5c23799d (plain)
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
#!/usr/bin/env bash

VERSION="0.0.2"
PROGRAM="$(basename $0)"

[ -f "${WDRC:-"$HOME/.wdrc"}" ] && source "${WDRC:-"$HOME/.wdrc"}"

WD_NOTES_DIR=${WD_NOTES_DIR:-"$HOME/notes"}
WD_JOURNALS_DIR=${WD_JOURNALS_DIR:-"$WD_NOTES_DIR/journals"}
WD_DEFAULT_SUBCOMMAND=${WD_DEFAULT_SUBCOMMAND:-help}

year=$(date +%Y)
week_number=$(date +%W)

cmd_usage () {
    cat <<-_EOF
Usage:

    $PROGRAM journal 
    $PROGRAM edit
    $PROGRAM git [<args>]
        Run git command in $WD_NOTES_DIR

_EOF
    exit 0
}

cmd_version () {
    echo $VERSION
    exit 0
}

cmd_edit () {
    $EDITOR "$WD_NOTES_DIR/index.md"

    exit 0
}

cmd_journal () {
    local weekly_journal_title="# Week $week_number $year"
    local weekly_journal_subtitle="## $(date '+%Y-%m-%d %A')"

    local monthly_journal_title="# $(date '+%B %Y')"
    local monthly_journal_subtitle="## [Week $week_number $year]($year-week$week_number.md)"

    local weekly_journal="$WD_JOURNALS_DIR/$year-week$week_number.md"
    local monthly_journal="$WD_JOURNALS_DIR/$(date '+%Y-%m').md"

    local file_to_edit="$weekly_journal"
    local file_title="$weekly_journal_title"
    local file_subtitle="$weekly_journal_subtitle"

    case "$1" in 
        --monthly|-m) shift;
            file_to_edit="$monthly_journal"
            file_title="$monthly_journal_title"
            file_subtitle="$monthly_journal_subtitle"
            ;;
    esac

    [ ! -f "$file_to_edit" ] && echo "$file_title" > "$file_to_edit"
    grep -qF "$file_subtitle" "$file_to_edit" || echo "$file_subtitle" >> "$file_to_edit"

    $EDITOR "$file_to_edit"

    exit 0
}

cmd_git () {
    cd "$WD_NOTES_DIR" && git "$@"
}

if [ "$#" -eq 0 ]; then
    "$PROGRAM" "$WD_DEFAULT_SUBCOMMAND"
    exit 0
fi

case "$1" in
    help|--help|-h) shift; cmd_usage "$@";;
    version|--version|-v) shift; cmd_version "$@";;
    journal|j) shift; cmd_journal "$@";;
    edit|e) shift; cmd_edit "$@";;
    git|g) shift; cmd_git "$@" ;;
    *) cmd_usage "$@";;
esac

exit 0