-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbb.edn
153 lines (153 loc) · 5.54 KB
/
bb.edn
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
{:min-bb-version "0.4.0"
:paths ["conf"
"script"
"script/limits"
"script/repos"
"script/reqs"
"script/tree_sitter"
"script/tree_sitter/dynlib"]
:tasks {:requires ([babashka.fs :as fs]
[conf :as cnf])
;;
:enter (when (System/getenv "VERBOSE")
(println "Entering:" (:name (current-task))))
:leave (when (System/getenv "VERBOSE")
(println "Leaving:" (:name (current-task))))
;; underlying bits
-check-rust-bits
{:doc "Check Rust capabilities"
:_tags [:dependency :rust]
:task check-rust-bits/-main}
-check-js-bits
{:doc "Check JavaScript capabilities"
:_tags [:dependency :js]
:task check-js-bits/-main}
-ensure-emsdk
{:doc "Ensure Emscripten SDK is available"
:_tags [:dependency :wasm]
:task ensure-emsdk/-main}
-ensure-tree-sitter
{:doc "Ensure tree-sitter cli is available"
:_tags [:dependency :rust :wasm]
:depends [-check-rust-bits
-check-js-bits
-ensure-emsdk]
:task ensure-tree-sitter/-main}
-ensure-tree-sitter-grammar
{:doc "Ensure tree-sitter grammar is available"
:_tags [:grammar]
:task ensure-tree-sitter-grammar/-main}
-ensure-tree-sitter-clojure
{:doc "Ensure tree-sitter-clojure is available"
:_tags [:grammar]
:task (binding [cnf/grammar cnf/ts-clj]
(run 'ensure-tree-sitter-grammar))}
-ensure-tree-sitter-clojure-def
{:doc "Ensure tree-sitter-clojure-def is available"
:_tags [:grammar]
:depends [-ensure-tree-sitter-clojure]
:task (binding [cnf/grammar cnf/ts-clj-def]
(run 'ensure-tree-sitter-grammar))}
show-grammar-info
{:doc "Dump current grammar"
:_tags [:grammar]
:task (clojure.pprint/pprint (into (sorted-map) cnf/grammar))}
;; tree-sitter grammar / parser / dynamic library tasks
gen-grammar-json
{:doc "Generate grammar.json"
:_tags [:grammar]
:depends [-ensure-tree-sitter -ensure-tree-sitter-grammar]
:task gen-grammar-json/-main}
gen-parser-src
{:doc "Generate tree-sitter parser.c and friends"
:_tags [:grammar]
:depends [-ensure-tree-sitter -ensure-tree-sitter-grammar]
:task gen-parser-src/-main}
build-wasm
{:doc "Build .wasm file for grammar"
:_tags [:grammar :wasm]
:depends [-ensure-emsdk
-ensure-tree-sitter
gen-parser-src]
:task build-wasm/-main}
playground
{:doc "Start tree-sitter playground"
:_tags [:grammar :wasm]
:depends [build-wasm]
:task playground/-main}
-build-dynlib
{:doc "Build dynamic library"
:_tags [:grammar]
:depends [gen-parser-src]
:task build-dynlib/-main}
install-dynlib
{:doc "Install dynamic library"
:_tags [:grammar]
:depends [-build-dynlib]
:task install-dynlib/-main}
-ensure-dynlib
{:doc "Ensure dynamic library is installed"
:_tags [:grammar]
:task (when-not (fs/exists? (cnf/grammar :lib-path))
(println "Dynamic library not installed...installing")
(run 'install-dynlib))}
corpus-test
{:doc "Perform corpus test"
:_tags [:grammar :test]
:depends [-ensure-tree-sitter
-ensure-tree-sitter-grammar
gen-parser-src ;; grammar.json
-ensure-dynlib]
:task corpus-test/-main}
parse
{:doc "Parse source file"
:_tags [:grammar :test]
:depends [-ensure-tree-sitter
-ensure-dynlib]
:task parse/-main}
clean
{:doc "Remove generated and compiled bits"
:_tags [:grammar]
:task clean/-main}
uninstall-dynlib
{:doc "Uninstall dynamic library"
:_tags [:grammar]
:task uninstall-dynlib/-main}
;; repos
show-repos-info
{:doc "Show current repos info"
:_tags [:repos]
:task (clojure.pprint/pprint cnf/repos)}
parse-samples
{:doc "Parse current repos code samples"
:_tags [:repos :test]
:depends [-ensure-tree-sitter
-ensure-tree-sitter-grammar
-ensure-dynlib]
:task parse-samples/-main}
count-repos-files
{:doc "Show repos content statistics"
:_tags [:repos]
:task count-repos-files/-main}
find-duplicates
{:doc "Find duplicates"
:_tags [:repos]
:task find-duplicates/-main}
deduplicate
{:doc "Deduplicate a repos dir"
:_tags [:repos]
:task deduplicate/-main}
;; expected issues
show-expected-failures
{:doc "Show expected failure examples"
:_tags [:test]
:depends [-ensure-tree-sitter
-ensure-dynlib]
:task show-expected-failures/-main}
show-expected-misparses
{:doc "Show expected misparsing examples"
:_tags [:test]
:depends [-ensure-tree-sitter
-ensure-dynlib]
:task show-expected-misparses/-main}
}}