#!/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 ' 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