14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
iwarn
inote
iputs
re-match?
; launch-repl
keyword-skim
skim-cmdline-opts-noarg-by-regex
skim-cmdline-opts-withargs-by-regex
concat-lists
ducttape-process-command-line
ducttape-append-logfile
ducttape-activate-logfile
isys
do-or-die
counter-maker
|
|
>
>
|
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
iwarn
inote
iputs
re-match?
; launch-repl
keyword-skim
skim-cmdline-opts-noarg-by-regex
skim-cmdline-opts-withargs-by-regex
get-cli-arg
get-cli-switch
concat-lists
ducttape-process-command-line
ducttape-append-logfile
ducttape-activate-logfile
isys
do-or-die
counter-maker
|
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
|
seconds->wwdate-values
isodate->seconds
isodate->wwdate
wwdate->seconds
wwdate->isodate
current-wwdate
current-isodate
)
(import scheme chicken extras ports data-structures )
(use posix regex ansi-escape-sequences test srfi-1 irregex slice srfi-13 rfc3339)
;;scsh-process ;; dropping scsh-process, it was clobbering posix's process and process*
(use directory-utils uuid-lib filepath srfi-19 ) ; linenoise
(include "mimetypes.scm") ; provides ext->mimetype
(include "workweekdate.scm")
(define ducttape-lib-version 1.00)
(define (toplevel-command sym proc) (lambda () #f))
;;;; utility procedures
;; begin credit: megatest's process.scm
(define (port->list fh )
(if (eof-object? fh) #f
(let loop ((curr (read-line fh))
(result '()))
(if (not (eof-object? curr))
(loop (read-line fh)
|
|
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
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
97
|
seconds->wwdate-values
isodate->seconds
isodate->wwdate
wwdate->seconds
wwdate->isodate
current-wwdate
current-isodate
*this-exe-dir*
*this-exe-name*
*this-exe-fullpath*
)
(import scheme chicken extras ports data-structures )
(use posix regex ansi-escape-sequences test srfi-1 irregex slice srfi-13 rfc3339)
;;scsh-process ;; dropping scsh-process, it was clobbering posix's process and process*
(use directory-utils uuid-lib filepath srfi-19 ) ; linenoise
;; plugs a hole in posix-extras in latter chicken versions
(use posix-extras pathname-expand files)
(define ##sys#expand-home-path pathname-expand)
(define (realpath x) (resolve-pathname (pathname-expand (or x "/dev/null")) ))
(include "mimetypes.scm") ; provides ext->mimetype
(include "workweekdate.scm")
(define ducttape-lib-version 1.00)
(define (toplevel-command sym proc) (lambda () #f))
;;;; define some handy globals
;; resolve fullpath to this script or binary.
(define (__get-this-script-fullpath #!key (argv (argv)))
(let* ((this-script
(cond
((and (> (length argv) 2)
(string-match "^(.*/csi|csi)$" (car argv))
(string-match "^-(s|ss|sx|script)$" (cadr argv)))
(caddr argv))
(else (car argv))))
(fullpath (realpath this-script)))
fullpath))
(define *this-exe-fullpath* (__get-this-script-fullpath))
(define *this-exe-dir* (pathname-directory *this-exe-fullpath*))
(define *this-exe-name* (pathname-strip-directory *this-exe-fullpath*))
;;;; utility procedures
;; begin credit: megatest's process.scm
(define (port->list fh )
(if (eof-object? fh) #f
(let loop ((curr (read-line fh))
(result '()))
(if (not (eof-object? curr))
(loop (read-line fh)
|
635
636
637
638
639
640
641
642
643
644
645
646
647
648
|
(if (list? default)
(if (equal? default kwval)
(loop (list (cadr args-remaining)) (cddr args-remaining) args-to-return)
(loop (cons (cadr args-remaining) kwval) (cddr args-remaining) args-to-return))
(loop (cadr args-remaining) (cddr args-remaining) args-to-return)))
(else (loop kwval (cdr args-remaining) (cons (car args-remaining) args-to-return))))))
;; get command line switches (have a subsequent arg; eg. [-foo bar])
;; assumes these are switches without arguments
;; will return list of arguments to matches
;; removes matches from command-line-arguments parameter
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
|
(if (list? default)
(if (equal? default kwval)
(loop (list (cadr args-remaining)) (cddr args-remaining) args-to-return)
(loop (cons (cadr args-remaining) kwval) (cddr args-remaining) args-to-return))
(loop (cadr args-remaining) (cddr args-remaining) args-to-return)))
(else (loop kwval (cdr args-remaining) (cons (car args-remaining) args-to-return))))))
(define (get-cli-arg arg #!key (default #f) (is-list #f))
(let* ((temp (skim-cmdline-opts-withargs-by-regex arg)))
(if (> (length temp) 0)
(if is-list
temp
(car temp))
default)))
(define (get-cli-switch arg)
(let ((temp (skim-cmdline-opts-noarg-by-regex arg)))
(if (> (length temp) 0)
(car temp)
#f)))
;; get command line switches (have a subsequent arg; eg. [-foo bar])
;; assumes these are switches without arguments
;; will return list of arguments to matches
;; removes matches from command-line-arguments parameter
|