aboutsummaryrefslogtreecommitdiffstats
path: root/hm/soispha/pkgs/scripts/specific/neorg/sh/main
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2024-01-13 12:04:52 +0100
committerSoispha <soispha@vhack.eu>2024-01-13 12:04:52 +0100
commit94b2cdc6a17920cfb2bcad6c1172f4d513411daa (patch)
tree941e651cbd4adffacefed544f12817a333a67b61 /hm/soispha/pkgs/scripts/specific/neorg/sh/main
parentfeat(hm/conf/less): Configure the full lesskey file (diff)
downloadnixos-config-94b2cdc6a17920cfb2bcad6c1172f4d513411daa.zip
refactor(hm/pkgs/scrs/specific/neorg/sh): Split the script into sub-scripts
Diffstat (limited to 'hm/soispha/pkgs/scripts/specific/neorg/sh/main')
-rwxr-xr-xhm/soispha/pkgs/scripts/specific/neorg/sh/main156
1 files changed, 156 insertions, 0 deletions
diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/main b/hm/soispha/pkgs/scripts/specific/neorg/sh/main
new file mode 100755
index 00000000..3e3fc653
--- /dev/null
+++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/main
@@ -0,0 +1,156 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.0.9" . %SHELL_LIBRARY_PATH
+
+# load dependencies
+. ./functions/add
+. ./functions/context
+. ./functions/dmenu
+. ./functions/f_start
+. ./functions/f_stop
+. ./functions/list
+. ./functions/project
+. ./functions/utils
+. ./functions/workspace
+
+
+# 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
+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
+ ;;
+ *)
+ die "Command '$1' does not exist! Please look at:\n $NAME --help";
+ exit 0;
+ ;;
+ esac
+done
+
+context0open_current_task_context;
+# vim: ft=sh