init commit
This commit is contained in:
commit
798831fe31
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
.cpcache
|
||||
.clj-kondo
|
||||
.lsp
|
4
README.md
Normal file
4
README.md
Normal file
@ -0,0 +1,4 @@
|
||||
## Deploy Me
|
||||
|
||||
A simple http server that pulls git changes and restarts your service
|
||||
|
67
src/run.clj
Executable file
67
src/run.clj
Executable 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)
|
||||
;
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user