about summary refs log tree commit diff stats
path: root/pkgs/by-name/ts/tskm/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ts/tskm/src/main.rs')
-rw-r--r--pkgs/by-name/ts/tskm/src/main.rs66
1 files changed, 66 insertions, 0 deletions
diff --git a/pkgs/by-name/ts/tskm/src/main.rs b/pkgs/by-name/ts/tskm/src/main.rs
new file mode 100644
index 00000000..7fc9c0d4
--- /dev/null
+++ b/pkgs/by-name/ts/tskm/src/main.rs
@@ -0,0 +1,66 @@
+#![allow(clippy::missing_panics_doc)]
+#![allow(clippy::missing_errors_doc)]
+
+use anyhow::Result;
+use clap::Parser;
+
+use crate::interface::{input, neorg, open, project};
+
+pub mod cli;
+pub mod interface;
+pub mod rofi;
+pub mod task;
+
+use crate::cli::{CliArgs, Command};
+
+fn main() -> Result<(), anyhow::Error> {
+    // TODO: Support these completions for the respective types <2025-04-04>
+    //
+    // ID_GENERATION_FUNCTION
+    // ```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
+    // ```
+    //
+    // ARGUMENTS:
+    //     ID | *([0-9]) := [[%ID_GENERATION_FUNCTION]]
+    //                             The function displays all possible IDs of the eligible tasks.
+    //
+    //     WS := %ALL_WORKSPACES
+    //                             All possible workspaces.
+    //
+    //     P := %ALL_PROJECTS_PIPE
+    //                             The possible project.
+    //
+    //     F := [[fd . --max-depth 3]]
+    //                             A URL-Input file to use as source.
+    let args = CliArgs::parse();
+
+    stderrlog::new()
+        .module(module_path!())
+        .quiet(false)
+        .show_module_names(true)
+        .color(stderrlog::ColorChoice::Auto)
+        .verbosity(5)
+        .timestamp(stderrlog::Timestamp::Off)
+        .init()
+        .expect("Let's just hope that this does not panic");
+
+    match args.command {
+        Command::Inputs { command } => input::handle(command)?,
+        Command::Neorg { command } => neorg::handle(command)?,
+        Command::Open { command } => open::handle(command)?,
+        Command::Projects { command } => project::handle(command)?,
+    }
+
+    Ok(())
+}