add delete command

This commit is contained in:
Travis Shears 2025-06-08 20:35:06 +02:00
parent f2e435b777
commit 53acc339b3
3 changed files with 43 additions and 4 deletions

View file

@ -1,10 +1,14 @@
(ns cli-cms.cli-utils (ns cli-cms.cli-utils
(:require (:require
[clojure.string :as str] [clojure.string :as str]
[clojure.pprint :refer [pprint]]
[babashka.process :refer [shell]])) [babashka.process :refer [shell]]))
(defn print [text] (defn select [l]
(shell (format "gum style --foreground 212 %s" text))) (str/trim (:out (apply shell {:out :string} (concat '("gum" "filter") l)))))
;; (defn print [text]
;; (shell (format "gum style --foreground 212 %s" text)))
(defn prompt-for [placeholder] (defn prompt-for [placeholder]
(str/trim (-> (shell {:out :string} (format "gum input --placeholder='%s'" placeholder)) :out))) (str/trim (-> (shell {:out :string} (format "gum input --placeholder='%s'" placeholder)) :out)))

34
src/cli_cms/delete.clj Normal file
View file

@ -0,0 +1,34 @@
(ns cli-cms.delete
(:require
[cli-cms.cli-utils :as utils]
[clojure.pprint :refer [pprint]]
[babashka.http-client :as http]
[cheshire.core :as json]))
;; (defn create-snippet [{:keys [title slug markdown tags]}]
;; (http/post "http://localhost:8080/api/snippet"
;; {:headers {:content-type "application/json"}
;; :body (json/encode {:title title :slug slug :markdown markdown :tags tags})}))
;;
(defn fetch-snippets []
(let [res (http/get "http://localhost:8080/api/snippet?limit=25")]
(json/parse-string (:body res) true)))
(defn delete-snippet [id]
(http/delete "http://localhost:8080/api/snippet" {:query-params {"id" id}}))
(defn run []
(let [snippets (fetch-snippets)
selected-slug (utils/select (map :slug snippets))
selected-snippet (first (filter #(= (:slug %) selected-slug) snippets))]
(delete-snippet (:id selected-snippet))))
;; (some #(when (> % 5) %) [1 3 7 2])
;; (some #(when) (utils/select (map :slug snippets)))))
;; (utils/print "Please enter a title:")
;; (println "Please enter a title:")
;; (println (format "TODO: create post with title: %s and slug %s" title slug))
;; (println tags)
;; (println markdown)
;; (create-snippet {:title title :slug slug :markdown markdown :tags tags})))

View file

@ -1,10 +1,11 @@
(ns cli-cms.main (ns cli-cms.main
(:require (:require
[cli-cms.create :as create] [cli-cms.create :as create]
[babashka.http-client :as http])) [cli-cms.delete :as delete]))
(defn -main [& args] (defn -main [& args]
(case (first args) (case (first args)
"create" (create/run) "create" (create/run)
"delete" (delete/run)
"edit" (println "TODO: implment edit snippet") "edit" (println "TODO: implment edit snippet")
(println "Missing command. Try 'create' or 'edit'."))) (println "Missing command. Try create, edit, or delete.")))