Files
sydnix/scripts/sydnix-cli/src/sydnix_cli/commands/help.clj
2025-01-14 21:44:21 -07:00

44 lines
1.2 KiB
Clojure

(ns sydnix-cli.commands.help
(:require
[babashka.process :as p]
[sydnix-cli.mangen :as mangen]))
(defn adorn-with-help-option [wrapped-command-fn]
(fn [{:keys [opts dispatch]}]
(if (:help opts)
(mangen/with-pipe
(fn [man->]
(mangen/write-man-for-command (mangen/find-dispatched dispatch)
:out man->))
(fn [->man]
(p/shell {:in ->man}
"man -l -")))
(wrapped-command-fn opts))))
(defn- view-man-for-command [command-spec]
(mangen/with-pipe
(fn [man->]
(mangen/write-man-for-command command-spec :out man->))
(fn [->man]
(p/shell {:in ->man} "man -l -"))))
(defn- wrap-command-fn [wrapped-fn]
(fn [info]
(if (:help (:opts info))
(do (mangen/render-docs-for-command
(mangen/find-dispatched (:dispatch info)))
#_
(view-man-for-command (mangen/find-dispatched (:dispatch info))))
(when-not (nil? wrapped-fn)
(wrapped-fn info)))))
(defn adorn-with-help-option* [command-spec]
(update command-spec :fn wrap-command-fn))
(defn- command-fn [_opts]
(view-man-for-command (mangen/find-dispatched [])))
(def command
{:cmds ["help"]
:fn command-fn})