aboutsummaryrefslogtreecommitdiffstats
path: root/hm/soispha/pkgs/scripts/wrappers
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2024-01-03 22:38:55 +0100
committerSoispha <soispha@vhack.eu>2024-01-03 22:38:55 +0100
commit36f0084457f50dddf85f5dccf6cf0b99c0251001 (patch)
tree689f0873edbcd923a97744289116ba2a0ab11083 /hm/soispha/pkgs/scripts/wrappers
parentfix(hm/pkgs/scr/ytc): Set output separator not to '"' but ';' (diff)
downloadnixos-config-36f0084457f50dddf85f5dccf6cf0b99c0251001.zip
refactor(hm/pkgs/scr/neorg): Add subdir for specific script groups
Diffstat (limited to 'hm/soispha/pkgs/scripts/wrappers')
-rwxr-xr-xhm/soispha/pkgs/scripts/wrappers/neorg/neorg323
-rw-r--r--hm/soispha/pkgs/scripts/wrappers/neorg/neorg_id_function.c78
-rwxr-xr-xhm/soispha/pkgs/scripts/wrappers/neorg/neorg_id_function.sh12
3 files changed, 0 insertions, 413 deletions
diff --git a/hm/soispha/pkgs/scripts/wrappers/neorg/neorg b/hm/soispha/pkgs/scripts/wrappers/neorg/neorg
deleted file mode 100755
index d1766e62..00000000
--- a/hm/soispha/pkgs/scripts/wrappers/neorg/neorg
+++ /dev/null
@@ -1,323 +0,0 @@
-#!/usr/bin/env dash
-
-# shellcheck source=/dev/null
-SHELL_LIBRARY_VERSION="1.10.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 [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
-}
-
-
-# Runs it's first argument and then the second, regardless if the first failed or succeed
-chain() {
- eval "$1"; eval "$2"
-}
-
-# Utils {{{
-UTILS_get_current_context() {
- current_context="$(task _get rc.context)";
- printf "%s\n" "$current_context";
-}
-UTILS_get_current_context_path() {
- current_context="$1";
- context_path="$(task _get rc.context."$current_context".rc.neorg_path 2>/dev/null)";
- if ! [ "$context_path" ]; then
- context_path="$(grep "context.$current_context.rc.neorg_path" "%HOME_TASKRC" | awk 'BEGIN {FS="="} {print $2}')";
- [ "$context_path" ] || die "All contexts should have a 'neorg_path' set!"
- fi
- printf "%s\n" "$context_path"
-}
-UTILS_get_neorg_project_dir() {
- # Perform shell expansion of Tilde
- neorg_project_dir="$(sed "s|~|$HOME|" "$(ptmp "%DEFAULT_NEORG_PROJECT_DIR")")";
- printf "%s\n" "$neorg_project_dir"
-}
-UTILS_project_to_context_name() {
- project="$1";
- context="$(sed 's|\.|_|g' "$(ptmp "$project")")";
- printf "%s\n" "$context";
-}
-UTILS_context_to_project_name() {
- context="$1";
- project="$(sed 's|_|\.|g' "$(ptmp "$context")")";
- printf "%s\n" "$project";
-}
-# }}}
-
-# Workspace {{{
-WORKSPACE_open_neorg_workspace() {
- nvim -c "NeorgStart" -s "$(ptmp ":Neorg workspace $1\n")"
-}
-WORKSPACE_open_neorg_workspace_prompt() {
- nvim -c "NeorgStart" -s "$(ptmp ":Neorg workspace ")"
-}
-# }}}
-# Context {{{
-CONTEXT_open_current_task_context() {
- current_context="$(UTILS_get_current_context)"
- if [ "$current_context" ]; then
- context_path="$(UTILS_get_current_context_path "$current_context")";
-
- extended_neorg_project_dir="$(UTILS_get_neorg_project_dir)";
- cd "$extended_neorg_project_dir" || die "(BUG?): Can not access the project dir: $extended_neorg_project_dir";
-
- nvim "$extended_neorg_project_dir/$context_path";
-
- git add .;
- git commit --message="chore($(dirname "$context_path")): Update" --no-gpg-sign
- else
- warn "No context active";
- WORKSPACE_open_neorg_workspace_prompt;
- fi
-}
-CONTEXT_open_current_task_context_at_task_id() {
- task_id="$1";
- current_context="$(UTILS_get_current_context)"
- if [ "$current_context" ]; then
- context_path="$(UTILS_get_current_context_path "$current_context")";
- extended_neorg_project_dir="$(UTILS_get_neorg_project_dir)";
- task_uuid="$(task "$task_id" uuids)"
-
- cd "$extended_neorg_project_dir" || die "(BUG?): Can not access the project dir: $extended_neorg_project_dir";
-
- if ! grep -q "% $task_uuid" "$extended_neorg_project_dir/$context_path"; then
- echo "* TITLE (% $task_uuid)" >> "$extended_neorg_project_dir/$context_path"
- fi
-
- nvim "$extended_neorg_project_dir/$context_path" -c "/% $task_uuid";
-
- git add .;
- git commit --message="chore($(dirname "$context_path")): Update" --no-gpg-sign
- else
- warn "No context active";
- WORKSPACE_open_neorg_workspace_prompt;
- fi
-}
-# }}}
-# Project {{{
-PROJECT_open_current_context_in_browser() {
- current_context="$(UTILS_get_current_context)";
- [ "$current_context" ] || die "No current context to use";
- PROJECT_open_context_in_browser "$(UTILS_context_to_project_name "$current_context")";
-}
-PROJECT_open_context_in_browser() {
- context="$1";
- [ "$context" ] || die "BUG: No context supplied to PROJECT_open_context_in_browser"
-
- old_context="$(UTILS_get_current_context)";
- # We have ensured that only one task may be active
- old_started_task="$(task +ACTIVE _ids)";
-
- tracking="$(mktmp)";
- task "project:$context" _ids | xargs task _zshids > "$tracking";
- task context "$(UTILS_project_to_context_name "$context")"
-
- while read -r description; do
- desc="$(echo "$description" | awk -F: '{print $2}' )";
- if [ "$desc" = "tracking" ]; then
- task_id="$(echo "$description" | awk -F: '{print $1}' )";
- notify-send "(Neorg)" "Starting task $context -> $desc";
- task start "$task_id"
- break
- fi
- done < "$tracking"
-
-
- firefox -P "$context"
-
- task stop "$task_id"
- [ "$old_started_task" ] && task start "$old_started_task"
-
- if [ "$old_context" ]; then
- task context "$old_context"
- else
- task context none
- fi
-}
-# }}}
-# Dmenu {{{
-DMENU_open_context_in_browser() {
- project="$(echo "%ALL_PROJECTS_PIPE" | rofi -sep "|" -dmenu)";
- if [ "$project" ]; then
- PROJECT_open_context_in_browser "$project";
- else
- current_context="$(UTILS_get_current_context)";
- [ "$current_context" ] || chain 'notify-send "(Neorg) No current context"' "exit 1"
- PROJECT_open_context_in_browser "$current_context";
- fi
-}
-# }}}
-# List {{{
-LIST_list_all_contexts_newline() {
- print "%ALL_PROJECTS_NEWLINE"
-}
-LIST_list_all_contexts_comma() {
- print "%ALL_PROJECTS_COMMA"
-}
-# }}}
-# Add {{{
-ADD_open_taskwarrior_project_file() {
- task_project_file="%TASK_PROJECT_FILE";
- cd "$(dirname $task_project_file)" || die "BUG: task_project_file ('$task_project_file') can't be accessed"
- git_dir="$(search_flake_base_dir)";
- [ "$git_dir" ] || die "(BUG): No git directory?"
- cd "$git_dir" || die "Unreachable, this MUST exists"
- nvim "$task_project_file";
- git add "$task_project_file";
-
- base_task_project_file_path="$(awk "{ gsub(\"$git_dir/\", \"\", \$0); print }" "$(ptmp "$task_project_file")")"
- git add $task_project_file;
- if ! [ "$(git status --porcelain=v2 | awk '{print $2}' | head -c 1)" = "." ]; then
- # TODO: Also check that only our file is staged before committing <2023-10-20>
- git commit --verbose --message="chore($(dirname "$base_task_project_file_path")): Update"
- fi
-}
-# }}}
-# fStart {{{
-FSTART_start_new_task() {
- task_id="$1";
- FSTOP_stop_current_task;
- task start "$task_id"
-}
-# }}}
-# fStop {{{
-FSTOP_stop_current_task() {
- # we ensured that only one task may be active
- active="$(task +ACTIVE _ids)";
- [ "$active" ] && task stop "$active";
-}
-# }}}
-
-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" ] || chain CONTEXT_open_current_task_context "exit 0"
- CONTEXT_open_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" ] || chain WORKSPACE_open_neorg_workspace_prompt "exit 0";
- WORKSPACE_open_neorg_workspace "$workspace_to_open";
- exit 0;
- ;;
- "p"*) # project
- shift 1;
- context_to_open="$1";
- # TODO: Exit with 1 on error, instead of the 0 <2023-10-20>
- [ "$context_to_open" ] || chain PROJECT_open_current_context_in_browser "exit 0";
- if ! grep -q "$context_to_open" "$(ptmp "%ALL_PROJECTS_NEWLINE")"; then
- die "Your context ('$context_to_open') is not in the list of available contexts:
-%ALL_PROJECTS_COMMA";
- fi
- PROJECT_open_context_in_browser "$context_to_open";
- exit 0;
- ;;
- "l"*) # list
- LIST_list_all_contexts_newline;
- exit 0
- ;;
- "a"*) # add-project
- ADD_open_taskwarrior_project_file;
- exit 0
- ;;
- "d"*) # dmenu
- DMENU_open_context_in_browser;
- exit 0
- ;;
- "fsta"*) # fstart
- shift 1;
- task_id="$1";
- [ "$task_id" ] || die "No task id provided to fstart";
- FSTART_start_new_task "$task_id";
- exit 0
- ;;
- "fsto"*) # fstop
- FSTOP_stop_current_task;
- exit 0
- ;;
- *)
- die "Command '$1' does not exist! Please look at:\n $NAME --help";
- exit 0;
- ;;
- esac
-done
-
-CONTEXT_open_current_task_context;
-# vim: ft=sh
diff --git a/hm/soispha/pkgs/scripts/wrappers/neorg/neorg_id_function.c b/hm/soispha/pkgs/scripts/wrappers/neorg/neorg_id_function.c
deleted file mode 100644
index a635b4b0..00000000
--- a/hm/soispha/pkgs/scripts/wrappers/neorg/neorg_id_function.c
+++ /dev/null
@@ -1,78 +0,0 @@
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-// It's just impossible to correctly quote this function when it's in any
-// language that has special treatment for backslashes
-
-char *exec_command(const char *command) {
- FILE *fp;
- char *buffer = 0;
- long length;
- char path[1035];
-
- /* Open the command for reading. */
- fp = popen(command, "r");
- if (fp == NULL) {
- fprintf(stderr, "Failed to execute '%s' because of: %s\n", command,
- strerror(errno));
- exit(1);
- }
-
- fseek(fp, 0, SEEK_END);
- length = ftell(fp);
- fseek(fp, 0, SEEK_SET);
- buffer = malloc(length + 1);
- if (buffer) {
- if (!fread(buffer, 1, length, fp)) {
- fprintf(stderr, "Failed to read output of command '%s' because of: %s\n",
- command, strerror(errno));
- exit(1);
- }
- }
-
- pclose(fp);
- buffer[length] = '\0';
- return buffer;
-}
-
-int main() {
- char *context = exec_command("task _get rc.context");
- printf("%s\n", context);
-
- char *filter = malloc(100); // should never be bigger than this number
- //
- // Check if the context is not empty
- if (strlen(context) > 1) {
- sprintf(filter, "project:%s", context);
- } else {
- filter = "0-10000";
- }
- char *task_ids = malloc(1000);
- sprintf(task_ids, "task %s _ids", filter);
- free(filter);
- char *ids = exec_command(task_ids);
- free(task_ids);
-
- if (strlen(ids) > 1) {
- char *task_zshids = malloc(1000);
- sprintf(task_zshids, "task _zshids %s", ids);
- char *zshids = exec_command(task_zshids);
- free(task_zshids);
-
- char *awk = malloc(1000);
- sprintf(awk,
- "awk -F: -v q=\"'\" '{gsub(/'\''/, q \"\\\" q q ); print $1 \": \" "
- "q $2 q}' %s",
- zshids);
- char *output = exec_command(awk);
- free(awk);
- printf("%s\n", output);
- free(output);
- } else {
- // No task match the filter
- return 0;
- }
- return 0;
-}
diff --git a/hm/soispha/pkgs/scripts/wrappers/neorg/neorg_id_function.sh b/hm/soispha/pkgs/scripts/wrappers/neorg/neorg_id_function.sh
deleted file mode 100755
index 413a18de..00000000
--- a/hm/soispha/pkgs/scripts/wrappers/neorg/neorg_id_function.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/sh
-context="$(task _get rc.context)";
-if [ "$context" ]; then
- filter="project:$context";
-else
- filter="0-10000";
-fi
-tasks="$(task "$filter" _ids)";
-
-if [ "$tasks" ]; then
- echo "$tasks" | xargs task _zshids | awk -F: -v q="'" '{gsub(/'\''/, q "\\" q q ); print $1 ":" q $2 q}';
-fi