about summary refs log tree commit diff stats
path: root/hm/soispha/pkgs/scripts/wrappers/neorg
blob: 4d35ea32542a7fa952440df3d31cc0ebb604a4b0 (plain) (blame)
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
#!/usr/bin/env dash

# shellcheck source=/dev/null
SHELL_LIBRARY_VERSION="1.4.2" . %SHELL_LIBRARY_PATH

# these are used in version()
AUTHORS="Soispha"
YEARS="2023"

NAME="neorg"

help() {
cat << EOF
This is a quick wrapper to make starting neorg easier.

Usage:
    $NAME [--help|--version] <neorg workspace>

Options:
    --help      | -h
                            Display this help and exit.
    --version   | -v
                            Display version and copyright information and exit.
    --task      | -t
                            Open the neorg project associated with the current context.
                            If no context is set, drop to the selection prompt
    <neorg workspace>
                            The neorg workspace to open at startup, an empty value drops
                            you at a prompt to enter the workspace yourself
EOF
}

open_neorg_workspace() {
    nvim -c "NeorgStart" -s "$(ptmp ":Neorg workspace $1\n")"
}
open_neorg_workspace_prompt() {
    nvim -c "NeorgStart" -s "$(ptmp ":Neorg workspace ")"
}
open_current_task_context() {
    current_context="$(task _get rc.context)";
    if [ "$current_context" ]; then
        context_path="$(task _get rc.context."$current_context".rc.neorg_path)";
        [ "$context_path" ] || die "All contexts should have a 'neorg_path' set!"

        # Perform shell expansion of Tilde
        nvim "$(sed "s|~|$HOME|" "$(ptmp "%DEFAULT_NEORG_PROJECT_DIR/$context_path")")";
    else
        dbg "No context active";
        open_neorg_workspace_prompt;
    fi
}

for arg in "$@"; do
    case "$arg" in
        "--help" | "-h")
            help;
            exit 0;
            ;;
        "--version" | "-v")
            version;
            exit 0;
            ;;
    esac
done

while [ "$#" -ne 0 ]; do
    case "$1" in
        "--task" | "-t")
            open_current_task_context;
            exit 0;
            ;;
        *)
            open_neorg_workspace "$1";
            exit 0;
            ;;
    esac
    shift 1
done

open_neorg_workspace_prompt;

# vim: ft=sh