-
-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathquickdoc.clj
More file actions
46 lines (43 loc) · 1.68 KB
/
quickdoc.clj
File metadata and controls
46 lines (43 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(ns quickdoc
(:require [pod.borkdude.clj-kondo :as clj-kondo]))
(defn quickdoc [{:keys [branch outfile
github/repo]
:or {branch "main"
outfile "API.md"}}]
(let [var-defs
(-> (clj-kondo/run! {:lint ["src"]
:config {:output {:analysis {:arglists true
:var-definitions {:meta [:no-doc]}}}}})
:analysis :var-definitions)
nss (group-by :ns var-defs)
docs
(with-out-str
(doseq [[ns ana] nss
:let [_ (println "##" ns)]
var (sort-by :name ana)
:when (and (not (:no-doc (:meta var)))
(not (:private var))
(not (= 'clojure.core/defrecord (:defined-by var))))]
;; (.println System/err (:defined-by var))
(println "###" (format "`%s`" (:name var)))
;; (.println System/err (keys var))
(when-let [arg-lists (seq (:arglist-strs var))]
(doseq [arglist arg-lists]
(println (format "<code>%s</code><br>" arglist))))
(when-let [doc (:doc var)]
(println)
(when (:macro var)
(println "Macro.\n\n"))
(println doc))
(println)
(println
(format
"[Source](%s/blob/%s/%s#L%s-L%s)"
repo
branch
(:filename var)
(:row var)
(:end-row var)))))]
(spit outfile docs)))
(quickdoc {:branch "master"
:github/repo "https://github.com/babashka/process"})