This is strange added by dxtr on Sat Apr 11 12:56:32 2015

(require-extension srfi-13 posix)
(use getopt-long sxml-serializer)

(define grammar
  `((help (required #f)
    (value #f)
  (single-char #\h))
  (init (required #f)
  (single-char #\i))
  (generate-config (required #f)
  (single-char #\g))
  (codepool (required #f)
    (single-char #\p)
    (value (required cp)
    (predicate ,string?)))
  (namespace (required #f)
   (single-char #\n)
   (value (required ns)
   (predicate ,string?)))
  (module (required #f)
    (single-char #\m)
    (value (required m)
    (predicate ,string?)))
))

(define settings '())
(define action '())

(define (help)
  ((display '("This is the help!"))
   (newline)
 (quit))
)

(define (parse-args args)
  (cond
    ((> (length args) 0) (map (lambda (x) (cond
      ((or (eq? 'init (car x)) (eq? 'generate-config (car x))) (set! action x))
      (else (set! settings (cons x settings))))) args)
  )
    (else
    '())))

(define (debug-args args)
  (cond ((> (length args) 0)
   (debug-args (cdr args))
   (display (car args))
 (newline))
))

(define (generate-magmod-config)
  (newline)
)

(define (init) ; <-- This is line 55
  (let [(codepool (alist-ref 'codepool settings)) (namespace (alist-ref 'namespace settings)) (module (alist-ref 'module settings))]
  ( (create-directory "app/etc" #t) ))
)

(let ([args (cdr (getopt-long (argv) grammar))])
  (cond ((or (= (length args) 0) (alist-ref 'help args))
  (help))
  (else
    (parse-args args)
          ;(display (parse-args args))
        )))

(let ([a (car action)])
  (cond ((eqv? 'init a)
  (init))
  ((eqv? 'generate-config a)
  (generate-magmod-config))
  (else
    (display "Wut?")
  (newline))
))

; Error:
; Warning: in toplevel procedure `init':
;  (magmod.scm:55) in procedure call to `g101102', expected a value of type `(procedure () *)', but was given a value of type `string'