Compare commits
4 Commits
856432516c
...
91cbdb69da
Author | SHA1 | Date |
---|---|---|
Sebastian Crane | 91cbdb69da | |
Sebastian Crane | fecd09c656 | |
Sebastian Crane | 0abd793fe7 | |
Sebastian Crane | 56094478db |
12
README.md
12
README.md
|
@ -66,18 +66,18 @@ Since `matchbot` uses Clojure's [tools.deps library](https://clojure.org/guides/
|
|||
You can create, start and stop an instance of the chatbot process with the functions in the `system` namespace:
|
||||
|
||||
``` clojure
|
||||
;; creating a new instance
|
||||
(def my-instance (atom (system/system)))
|
||||
;; creating a new instance - an empty Var
|
||||
(def my-instance nil)
|
||||
|
||||
;; starting the instance
|
||||
(swap! my-instance system/start)
|
||||
(alter-var-root #'my-instance system/start)
|
||||
|
||||
;; restarting the instance
|
||||
(system/restart my-instance)
|
||||
(system/restart #'my-instance)
|
||||
|
||||
;; stopping and resetting the instance
|
||||
(swap! my-instance stop)
|
||||
(reset! my-instance (system/system))
|
||||
(alter-var-root #'my-instance system/stop)
|
||||
(alter-var-root #'my-instance (constantly nil))
|
||||
```
|
||||
|
||||
Once you are familiar with nREPL, you can additionally use [tools.namespace.repl](https://github.com/clojure/tools.namespace) to make reevaluating (reloading) your changes easier:
|
||||
|
|
|
@ -34,12 +34,7 @@
|
|||
(yaml/parse-stream datafile))
|
||||
(catch Exception e nil)))
|
||||
|
||||
(defn system []
|
||||
{:config nil
|
||||
:state nil
|
||||
:irc nil})
|
||||
|
||||
(defn start [system]
|
||||
(defn start [_]
|
||||
(let [config (load-config "config.yaml")
|
||||
state (atom (load-state (:data-file config)))
|
||||
irc (irc/new-irc-connection state config)]
|
||||
|
@ -55,14 +50,12 @@
|
|||
(deref (:state system)))
|
||||
(irclj.core/quit (system :irc))))
|
||||
|
||||
(defn restart [system-atom]
|
||||
(defn restart [system-var]
|
||||
(do
|
||||
(swap! system-atom stop)
|
||||
(reset! system-atom (system))
|
||||
(swap! system-atom start)))
|
||||
(stop (deref system-var))
|
||||
(alter-var-root system-var start)))
|
||||
|
||||
(defn -main [& args]
|
||||
(let [main-system (atom (system/system))]
|
||||
(swap! main-system system/start)
|
||||
(let [main-system (system/start nil)]
|
||||
(.addShutdownHook (Runtime/getRuntime)
|
||||
(Thread. (partial swap! main-system stop)))))
|
||||
(Thread. #(stop main-system)))))
|
||||
|
|
Loading…
Reference in New Issue