about summary refs log tree commit diff stats
path: root/pkgs/sources/scripts/source/specific/neorg/sh/main.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/sources/scripts/source/specific/neorg/sh/main.sh')
-rwxr-xr-xpkgs/sources/scripts/source/specific/neorg/sh/main.sh164
1 files changed, 164 insertions, 0 deletions
diff --git a/pkgs/sources/scripts/source/specific/neorg/sh/main.sh b/pkgs/sources/scripts/source/specific/neorg/sh/main.sh
new file mode 100755
index 00000000..559351b9
--- /dev/null
+++ b/pkgs/sources/scripts/source/specific/neorg/sh/main.sh
@@ -0,0 +1,164 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+# load dependencies
+. ./functions/add.sh
+. ./functions/context.sh
+. ./functions/dmenu.sh
+. ./functions/f_start.sh
+. ./functions/f_stop.sh
+. ./functions/list.sh
+. ./functions/project.sh
+. ./functions/utils.sh
+. ./functions/workspace.sh
+. ./functions/review.sh
+
+# these are used in version()
+# shellcheck disable=2034
+AUTHORS="Soispha"
+# shellcheck disable=2034
+YEARS="2023"
+
+NAME="neorg"
+
+help() {
+    cat <<EOF
+This is the core interface to the system-integrated task management
+
+USAGE:
+    $NAME [OPTIONS] [COMMAND]
+
+OPTIONS:
+    --help      | -h
+                            Display this help and exit.
+
+    --version   | -v
+                            Display version and copyright information and exit.
+COMMANDS:
+    task [ID]
+                            Open the neorg context associated with the current context and
+                            the uuid of the task with id ID. Without ID, it'll open the
+                            current context's norg file.
+                            If no context is set, drops you to the selection prompt
+
+    dmenu
+                            Select a project in dmenu mode. This will give you all projects
+                            and exectute the selected one as in 'neorg projects <selected>'
+
+    workspace [WS]
+                            The neorg workspace (WS) to open at startup, an empty value drops
+                            you at a prompt to enter the workspace yourself.
+
+    project [P]
+                            Opens the webbrowser with either the context (P) or
+                            the current active context as argument if no context is supplied
+
+    list
+                            Lists all available contexts
+
+    add
+                            Allows you to quickly add projects
+
+    fstart ID
+                            Starts the task (ID) but only after it stooped
+                            the previous active task, if it existed.
+
+    fstop
+                            Stops the current active task
+
+    review
+                            Review all firefox tabs
+ARGUMENTS:
+    ID | *([0-9]) := [[%ID_GENERATION_FUNCTION]]
+                            The function displays all possible IDs of the eligable tasks.
+
+    WS := %ALL_WORKSPACES
+                            All possible workspaces
+
+    P := %ALL_PROJECTS_PIPE
+                            The possible project
+
+EOF
+}
+
+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
+    "t"*) # task
+        shift 1
+        task_id="$1"
+        [ "$task_id" ] || utils0chain context0open_current_task_context "exit 0"
+        context0open_current_task_context_at_task_id "$task_id"
+        exit 0
+        ;;
+    "w"*) # workspace
+        shift 1
+        workspace_to_open="$1"
+        # TODO: Exit with 1 on error, instead of the 0 <2023-10-20>
+        [ "$workspace_to_open" ] || utils0chain workspace0open_neorg_workspace_prompt "exit 0"
+        workspace0open_neorg_workspace "$workspace_to_open"
+        exit 0
+        ;;
+    "p"*) # project
+        shift 1
+        project_to_open="$1"
+        # TODO: Exit with 1 on error, instead of the 0 <2023-10-20>
+        [ "$project_to_open" ] || utils0chain project0open_current_context_in_browser "exit 0"
+        if ! grep -q "$project_to_open" "$(ptmp "%ALL_PROJECTS_NEWLINE")"; then
+            die "Your project ('$project_to_open') is not in the list of available projects:
+%ALL_PROJECTS_COMMA"
+        fi
+        project0open_project_in_browser "$project_to_open"
+        exit 0
+        ;;
+    "l"*) # list
+        list0list_all_contexts_newline
+        exit 0
+        ;;
+    "a"*) # add-project
+        add0open_taskwarrior_project_file
+        exit 0
+        ;;
+    "d"*) # dmenu
+        dmenu0open_context_in_browser
+        exit 0
+        ;;
+    "fsta"*) # fstart
+        shift 1
+        task_id="$1"
+        [ "$task_id" ] || die "No task id provided to fstart"
+        fstart0start_new_task "$task_id"
+        exit 0
+        ;;
+    "fsto"*) # fstop
+        fstop0stop_current_task
+        exit 0
+        ;;
+    "r"*) # review
+        shift 1
+        review0start
+        exit 0
+        ;;
+    *)
+        die "Command '$1' does not exist! Please look at:\n $NAME --help"
+        exit 0
+        ;;
+    esac
+done
+
+context0open_current_task_context
+# vim: ft=sh