From f2e435b77744e81432f6aa8453729bbed08193f6 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Sun, 8 Jun 2025 13:11:35 +0200 Subject: [PATCH] call backend to create snippt --- .zed/settings.json | 0 README.md | 21 ++++++++++++++++++++- src/cli_cms/create.clj | 10 +++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 .zed/settings.json diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index e0322a5..eea4426 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,26 @@ -## Snippets CLI CMS +# Snippets CLI CMS A simple command-line interface for managing my code snippets. Written in Clojure via Babashka. Interactive elements are powered by [Gum](https://github.com/charmbracelet/gum). + + +## Run dev + +To run commands: + +```shell +$ bb -m cli-cms.main create +``` + +Or to play around and call individual functions using the REPL: + +```shell +$ bb +user=> (require '[cli-cms.create :as command]) +user=> (def mock-snippet {:title "mock snippet from repl" :slug "mock" :tags '("mock") :markdown "# This is a mock"}) +#'user/mock-snippet +user=> (command/create-snippet mock-snippet) +``` diff --git a/src/cli_cms/create.clj b/src/cli_cms/create.clj index a72cced..00ac7d2 100644 --- a/src/cli_cms/create.clj +++ b/src/cli_cms/create.clj @@ -2,8 +2,15 @@ (:require [cli-cms.cli-utils :as utils] [clojure.string :as str] + [babashka.http-client :as http] + [cheshire.core :as json] [babashka.process :refer [shell]])) +(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 run [] (let [title (utils/prompt-for "title") slug (utils/prompt-for "slug") @@ -13,4 +20,5 @@ ;; (println "Please enter a title:") (println (format "TODO: create post with title: %s and slug %s" title slug)) (println tags) - (println markdown))) + (println markdown) + (create-snippet {:title title :slug slug :markdown markdown :tags tags})))