File tree 3 files changed +39
-8
lines changed
3 files changed +39
-8
lines changed Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+
3
+ # Synopsis:
4
+ # Generate the tests for each exercise with a generator template.
5
+
6
+ # Example: generate tests for all exercises with a generator template
7
+ # bin/generate-tests
8
+
9
+ # Example: generate tests for a single exercise with a generator template
10
+ # bin/generate-tests two-fer
11
+
12
+ set -eo pipefail
13
+
14
+ die () { echo " $* " >&2 ; exit 1; }
15
+
16
+ required_tool () {
17
+ command -v " ${1} " > /dev/null 2>&1 ||
18
+ die " ${1} is required but not installed. Please install it and make sure it's in your PATH."
19
+ }
20
+
21
+ required_tool clj
22
+
23
+ exercise_slug=" ${1} "
24
+
25
+ if [ -z " ${exercise_slug} " ]; then
26
+ clj -X generator/run
27
+ else
28
+ clj -X generator/run :exercise " ${exercise_slug} "
29
+ fi
Original file line number Diff line number Diff line change 1
1
(ns generator
2
- (:require [canonical-data]
2
+ (:require [clojure.string :as str]
3
+ [canonical-data]
3
4
[templates]
4
5
[log]))
5
6
6
- (defn- slugs-to-generate [args ]
7
+ (defn- slugs-to-generate [slug ]
7
8
(let [slugs templates/exercises-with-template]
8
- (if-let [slug (first args)]
9
+ (if (str/blank? slug)
10
+ slugs
9
11
(if (contains? slugs slug)
10
12
[slug]
11
- (log/error (str " No template found for exercise '" slug " '" )))
12
- slugs)))
13
+ (log/error (str " No template found for exercise '" slug " '" ))))))
13
14
14
- (defn- run [args ]
15
+ (defn- run [{ :keys [exercise]} ]
15
16
(canonical-data/sync-repo )
16
- (doseq [slug (slugs-to-generate args )]
17
+ (doseq [slug (slugs-to-generate ( str exercise) )]
17
18
(log/normal (str " Generating tests for exercise '" slug " '" ))
18
19
(templates/generate-tests-file slug (canonical-data/test-cases slug))))
Original file line number Diff line number Diff line change 8
8
(file-seq )
9
9
(filter #(.isFile %))
10
10
(filter #(= " generator.template" (.getName %)))
11
- (mapv #(-> % (.getParentFile ) (.getParentFile ) (.getName )))))
11
+ (map #(-> % (.getParentFile ) (.getParentFile ) (.getName )))
12
+ (set )))
12
13
13
14
(defn- render-template [data template]
14
15
(selmer/render (slurp template) data))
You can’t perform that action at this time.
0 commit comments