diff options
author | Soispha <soispha@vhack.eu> | 2024-01-13 12:04:52 +0100 |
---|---|---|
committer | Soispha <soispha@vhack.eu> | 2024-01-13 12:04:52 +0100 |
commit | 94b2cdc6a17920cfb2bcad6c1172f4d513411daa (patch) | |
tree | 941e651cbd4adffacefed544f12817a333a67b61 /hm/soispha/pkgs/scripts/specific/neorg/sh/functions | |
parent | feat(hm/conf/less): Configure the full lesskey file (diff) | |
download | nixos-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/functions')
9 files changed, 190 insertions, 0 deletions
diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/add b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/add new file mode 100644 index 00000000..bd700775 --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/add @@ -0,0 +1,23 @@ +#!/usr/bin/env dash + +add0open_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; + + # Check that only the project file has been added (and that our file is actually + # modified) + if git status --porcelain=v2 | awk -v path="$base_task_project_file_path" 'BEGIN { hit = 0 } { if ($2 ~ /A./ || $2 ~ /M./) { if ($NF ~ path) { hit = 1 } else { hit = 0; exit 1 } } } END { if (hit == 1) { exit 0 } else { exit 1 } }'; then + git commit --verbose --message="chore($(dirname "$base_task_project_file_path")): Update" + fi +} diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/context b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/context new file mode 100644 index 00000000..b9ae4463 --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/context @@ -0,0 +1,43 @@ +#!/usr/bin/env dash + +context0open_current_task_context() { + current_context="$(utils0get_current_context)" + + if [ "$current_context" ]; then + context_path="$(utils0get_current_context_path "$current_context")"; + + extended_neorg_project_dir="$(utils0get_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"; + fi +} + +context0open_current_task_context_at_task_id() { + task_id="$1"; + current_context="$(utils0get_current_context)" + + if [ "$current_context" ]; then + context_path="$(utils0get_current_context_path "$current_context")"; + extended_neorg_project_dir="$(utils0get_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"; + fi +} diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/dmenu b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/dmenu new file mode 100644 index 00000000..36133004 --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/dmenu @@ -0,0 +1,12 @@ +#!/usr/bin/env dash + +dmenu0open_context_in_browser() { + project="$(echo "%ALL_PROJECTS_PIPE" | rofi -sep "|" -dmenu)"; + + if [ "$project" ]; then + project0open_project_in_browser "$project"; + else + notify-send "(neorg/dmenu) No project selected"; + exit 1 + fi +} diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/f_start b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/f_start new file mode 100644 index 00000000..c75986a7 --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/f_start @@ -0,0 +1,7 @@ +#!/usr/bin/env dash + +fstart0start_new_task() { + task_id="$1"; + fstop0stop_current_task; + task start "$task_id" +} diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/f_stop b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/f_stop new file mode 100644 index 00000000..d60cb46f --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/f_stop @@ -0,0 +1,7 @@ +#!/usr/bin/env dash + +fstop0stop_current_task() { + # we ensured that only one task may be active + active="$(task +ACTIVE _ids)"; + [ "$active" ] && task stop "$active"; +} diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/list b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/list new file mode 100644 index 00000000..10659457 --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/list @@ -0,0 +1,8 @@ +#!/usr/bin/env dash + +list0list_all_contexts_newline() { + print "%ALL_PROJECTS_NEWLINE" +} +list0list_all_contexts_comma() { + print "%ALL_PROJECTS_COMMA" +} diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/project b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/project new file mode 100644 index 00000000..8def0930 --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/project @@ -0,0 +1,42 @@ +#!/usr/bin/env dash + +project0open_current_context_in_browser() { + current_context="$(utils0get_current_context)"; + [ "$current_context" ] || die "No current context to use"; + project0open_context_in_browser "$(utils0context2project "$current_context")"; +} + +project0open_project_in_browser() { + project="$1"; + [ "$project" ] || die "BUG: No context supplied to project0open_context_in_browser" + + old_context="$(utils0get_current_context)"; + # We have ensured that only one task may be active + old_started_task="$(task +ACTIVE _ids)"; + + tracking="$(mktmp)"; + task "project:$project" _ids | xargs --no-run-if-empty task _zshids > "$tracking"; + task context "$(utils0project2context "$project")" + + 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 $project -> $desc"; + task start "$task_id" + break + fi + done < "$tracking" + + + firefox -P "$project" + + 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 +} diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/utils b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/utils new file mode 100644 index 00000000..ce9b7710 --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/utils @@ -0,0 +1,39 @@ +#!/usr/bin/env dash + +# Runs it's first argument and then the second, regardless if the first failed or succeed +utils0chain() { + eval "$1"; eval "$2" +} + +utils0get_current_context() { + current_context="$(task _get rc0context)"; + printf "%s\n" "$current_context"; +} + +utils0get_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" +} + +utils0get_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" +} + + +utils0project2context() { + project="$1"; + context="$(sed 's|\.|_|g' "$(ptmp "$project")")"; + printf "%s\n" "$context"; +} +utils0context2project() { + context="$1"; + project="$(sed 's|_|\.|g' "$(ptmp "$context")")"; + printf "%s\n" "$project"; +} diff --git a/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/workspace b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/workspace new file mode 100644 index 00000000..d5eb2fca --- /dev/null +++ b/hm/soispha/pkgs/scripts/specific/neorg/sh/functions/workspace @@ -0,0 +1,9 @@ +#!/usr/bin/env dash + +workspace0open_neorg_workspace() { + workspace="$1" + nvim -c "NeorgStart" -s "$(ptmp ":Neorg workspace $workspace\n")" +} +workspace0open_neorg_workspace_prompt() { + nvim -c "NeorgStart" -s "$(ptmp ":Neorg workspace ")" +} |