blob: 5b9e5e5408a020fef3cdc6baf6dc50f105100c00 (
plain)
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
|
;*=====================================================================*/
;* serrano/prgm/project/skribe/src/bigloo/main.scm */
;* ------------------------------------------------------------- */
;* Author : Manuel Serrano */
;* Creation : Tue Jul 22 16:51:49 2003 */
;* Last change : Wed May 18 15:45:27 2005 (serrano) */
;* Copyright : 2003-05 Manuel Serrano */
;* ------------------------------------------------------------- */
;* The Skribe main entry point */
;*=====================================================================*/
;*---------------------------------------------------------------------*/
;* The module */
;*---------------------------------------------------------------------*/
(module skribe_main
(include "debug.sch")
(import skribe_types
skribe_parse-args
skribe_param
skribe_lib
skribe_eval
skribe_read
skribe_engine
skribe_evapi)
(main main))
;*---------------------------------------------------------------------*/
;* main ... */
;*---------------------------------------------------------------------*/
(define (main args)
(with-debug 2 'main
(debug-item "parse env variables...")
(parse-env-variables)
(debug-item "load rc file...")
(load-rc)
(debug-item "parse command line...")
(parse-args args)
(debug-item "load base...")
(skribe-load "base.skr" :engine 'base)
(debug-item "preload... (" *skribe-engine* ")")
(for-each (lambda (f)
(skribe-load f :engine *skribe-engine*))
*skribe-preload*)
;; Load the specified variants
(debug-item "variant... (" *skribe-variants* ")")
(for-each (lambda (x)
(skribe-load (format "~a.skr" x) :engine *skribe-engine*))
(reverse! *skribe-variants*))
(debug-item "body..." *skribe-engine*)
(if (string? *skribe-dest*)
(cond-expand
(bigloo2.6
(try (with-output-to-file *skribe-dest* doskribe)
(lambda (e a b c)
(delete-file *skribe-dest*)
(let ((s (with-output-to-string
(lambda () (write c)))))
(notify-error a b s))
(exit -1))))
(else
(with-exception-handler
(lambda (e)
(if (&warning? e)
(raise e)
(begin
(delete-file *skribe-dest*)
(if (&error? e)
(error-notify e)
(raise e))
(exit 1))))
(lambda ()
(with-output-to-file *skribe-dest* doskribe)))))
(doskribe))))
;*---------------------------------------------------------------------*/
;* doskribe ... */
;*---------------------------------------------------------------------*/
(define (doskribe)
(let ((e (find-engine *skribe-engine*)))
(if (and (engine? e) (pair? *skribe-precustom*))
(for-each (lambda (cv)
(engine-custom-set! e (car cv) (cdr cv)))
*skribe-precustom*))
(if (pair? *skribe-src*)
(for-each (lambda (f) (skribe-load f :engine *skribe-engine*))
*skribe-src*)
(skribe-eval-port (current-input-port) *skribe-engine*))))
|