init commit

This commit is contained in:
Adam Jeniski 2025-09-10 09:19:53 -09:00
commit 798831fe31
5 changed files with 80 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.cpcache
.clj-kondo
.lsp

4
README.md Normal file
View File

@ -0,0 +1,4 @@
## Deploy Me
A simple http server that pulls git changes and restarts your service

3
bb.edn Normal file
View File

@ -0,0 +1,3 @@
{:paths ["src"]
:deps {}}

67
src/run.clj Executable file
View File

@ -0,0 +1,67 @@
#!/usr/bin/env bb
(ns run
(:require [org.httpkit.server :as s]
[cheshire.core :as json]
[clojure.java.io :as io]
[clojure.java.shell :as shell]))
(def default-port 47331)
(defn deploy-me [{:keys [project]}]
(and
(= 0 (:exit (shell/sh "/usr/bin/git" "pull" :dir (str "/root/repos/" project))))
(= 0 (:exit (shell/sh "/usr/bin/systemctl" "restart" project)))))
(defn app [req]
(try
(condp = (:request-method req)
:post (let [body (-> req
:body
io/reader
slurp
(json/parse-string true))]
{:status 200
:headers {"Content-Type" "application/edn"}
:body {:success (str (deploy-me body))}})
:get {:status 200 :body "OK"}
{:status 405
:headers {"Content-Type" "text/plain"}
:body "Method Not Allowed"})
(catch Exception ex
(.printStackTrace ex)
{:status 500
:body (str "uncaught exception:\n" (.getMessage ex))})))
(defonce server (atom nil))
(defn make-server [_opts]
(let [server (s/run-server #'app {:port default-port :legacy-return-value? false})]
(println (str "listening on port " default-port "..."))
server))
(defn stop-server []
(when-not (nil? @server)
(s/server-stop! @server)
(reset! server nil)))
(defn -main [& _args]
(reset! server (make-server {}))
(loop []
(Thread/sleep 1000)
(let [status (s/server-status @server)]
(if (= status :running)
(do
(recur))
(println "server stopped... exiting")))))
(comment
(reset! server (make-server {}))
@server
(s/server-status @server)
(s/server-stop! @server)
;
)

3
start.sh Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env sh
cd ~/repos/deploy-me
bb -m run