File: run

package info (click to toggle)
gauche-gl 0.6-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, forky, sid, trixie
  • size: 6,052 kB
  • sloc: ansic: 33,199; lisp: 13,740; sh: 2,484; makefile: 288
file content (36 lines) | stat: -rwxr-xr-x 957 bytes parent folder | download | duplicates (7)
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
#!/usr/bin/env gosh

;; Run through all examples.

(use file.util)
(use srfi-1)

(define (get-scripts)
  (sort (sys-glob "example*.scm")
        (lambda (a b)
          (let ((ma (#/example(\d+)-(\d+)/ a))
                (mb (#/example(\d+)-(\d+)/ b)))
            (or (< (x->integer (ma 1)) (x->integer (mb 1)))
                (and (= (x->integer (ma 1)) (x->integer (mb 1)))
                     (< (x->integer (ma 2)) (x->integer (mb 2)))))))))

(define (get-script-titles scripts)
  (map (lambda (f)
         (cond ((#/^\;\;\s*/ (with-input-from-file f read-line))
                => (lambda (m) (m 'after)))
               (else f)))
       scripts))

(define (main args)
  (let* ((scripts (get-scripts))
         (titles  (get-script-titles scripts)))
    (for-each
     (lambda (script title)
       (print title)
       (sys-system #`"gosh -I../../lib -I../../src ,script"))
     scripts titles))
  0)

;; Local variables:
;; mode: scheme
;; end: