Skip to content

Commit 28a3d25

Browse files
committed
better error handling and asci colors
1 parent 43c6769 commit 28a3d25

File tree

3 files changed

+118
-2
lines changed

3 files changed

+118
-2
lines changed

src/ekspono/vero/colors.clj

+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
(ns ekspono.vero.colors
2+
(:require [clojure.string :as string]))
3+
4+
(defn escape
5+
[n]
6+
(str "\033[" n "m"))
7+
8+
(defn color-fn
9+
[escape-code s]
10+
(str escape-code s (escape 0)))
11+
12+
(defn grey
13+
[s]
14+
(color-fn (escape 30) s))
15+
16+
(defn red
17+
[s]
18+
(color-fn (escape 31) s))
19+
20+
(defn green
21+
[s]
22+
(color-fn (escape 32) s))
23+
24+
(defn yellow
25+
[s]
26+
(color-fn (escape 33) s))
27+
28+
(defn blue
29+
[s]
30+
(color-fn (escape 34) s))
31+
32+
(defn magenta
33+
[s]
34+
(color-fn (escape 35) s))
35+
36+
(defn cyan
37+
[s]
38+
(color-fn (escape 36) s))
39+
40+
(defn white
41+
[s]
42+
(color-fn (escape 37) s))
43+
44+
45+
(defn on-grey
46+
[s]
47+
(color-fn (escape 40) s))
48+
49+
(defn on-red
50+
[s]
51+
(color-fn (escape 41) s))
52+
53+
(defn on-green
54+
[s]
55+
(color-fn (escape 42) s))
56+
57+
(defn on-yellow
58+
[s]
59+
(color-fn (escape 43) s))
60+
61+
(defn on-blue
62+
[s]
63+
(color-fn (escape 44) s))
64+
65+
(defn on-magenta
66+
[s]
67+
(color-fn (escape 45) s))
68+
69+
(defn on-cyan
70+
[s]
71+
(color-fn (escape 46) s))
72+
73+
(defn on-white
74+
[s]
75+
(color-fn (escape 47) s))
76+
77+
78+
(defn bold
79+
[s]
80+
(color-fn (escape 1) s))
81+
82+
(defn dark
83+
[s]
84+
(color-fn (escape 2) s))
85+
86+
(defn underline
87+
[s]
88+
(color-fn (escape 4) s))
89+
90+
(defn blink
91+
[s]
92+
(color-fn (escape 5) s))
93+
94+
(defn reverse-color
95+
[s]
96+
(color-fn (escape 7) s))
97+
98+
(defn concealed
99+
[s]
100+
(color-fn (escape 8) s))

src/ekspono/vero/errors.clj

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(ns ekspono.vero.errors
2+
(:require [ekspono.vero.colors :as colors]
3+
[ekspono.vero.sh :as vsh]))
4+
5+
(defn fatal! [title description props]
6+
(let [p (->> (with-out-str (clojure.pprint/pprint props)))
7+
out (str (colors/red (str "FATAL: " title))
8+
"\n\n"
9+
(colors/yellow
10+
(str description
11+
"\n\n"
12+
"context:\n"
13+
p)))]
14+
(print out)
15+
(vsh/exit 10 "")))

src/ekspono/vero/sh.clj

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
[clojure.java.shell :refer [sh]]
44
[clojure.string :as string]
55
[clojure.edn :as edn]
6-
[clojure.java.io :as io]))
6+
[clojure.java.io :as io]
7+
[ekspono.vero.colors :as colors]))
78

89
(defn exit [status msg]
910
(println msg)
@@ -14,7 +15,7 @@
1415

1516
(defn- run-with-env
1617
[cmd opts]
17-
(println "vero/running: " cmd)
18+
(println (colors/cyan "vero »") cmd)
1819
(let [dir (or (:dir opts) ".")
1920
env-vars (->> (for [[k v] (:env opts)]
2021
(str k "=" v))

0 commit comments

Comments
 (0)