Megatest

Diff
Login

Differences From Artifact [cc1616820d]:

To Artifact [d9dd6e93ad]:


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
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







+
-
-
-
+
+
+
+
+
+
+
+



















+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+







(define args:arg-hash (make-hash-table))

(define (args:get-arg arg . default)
  (if (null? default)
      (hash-table-ref/default args:arg-hash arg #f)
      (hash-table-ref/default args:arg-hash arg (car default))))

;; get an arg as a number
(define (args:any? . args)
  (not (null? (filter (lambda (x) x)
		      (map args:get-arg args)))))
(define (args:get-arg-number arg . default)
  (let* ((val-str (args:get-arg arg))
	 (val     (if val-str (string->number val-str) #f)))
    (if val
	val
	(if (null? default)
	    #f
	    default))))

(define (args:get-arg-from ht arg . default)
  (if (null? default)
      (hash-table-ref/default ht arg #f)
      (hash-table-ref/default ht arg (car default))))


(define (args:remove-arg-from-ht arg)
      (hash-table-delete! args:arg-hash arg)
)

(define (args:usage . args)
  (if (> (length args) 0)
      (apply print "ERROR: " args))
  (if (string? help)
      (print help)
      (print "Usage: " (car (argv)) " ... "))
  (exit 0))

(define (args:any-defined? . args)
  (not (null? (filter (lambda (x) x)
		      (map args:get-arg args)))))

 ;; one-of args defined
(define (args:any-defined? . param)
  (let ((res #f))
    (for-each 
     (lambda (arg)
       (if (args:get-arg arg)(set! res #t)))
     param)
    res))
;;  ;; one-of args defined
;; (define (args:any-defined? . param)
;;   (let ((res #f))
;;     (for-each 
;;      (lambda (arg)
;;        (if (args:get-arg arg)(set! res #t)))
;;      param)
;;     res))

;; args: 
(define (args:get-args args params switches arg-hash num-needed)
  (let* ((numargs (length args))
	 (adj-num-needed (if num-needed (+ num-needed 2) #f)))
    (if (< numargs (if adj-num-needed adj-num-needed 2))
	(if (>= num-needed 1)