#!/usr/bin/gosh ;; Escapes to be replaced inside command, if present ;; ~f full name ;; ~b base name ;; ~e file extension ;; ~d directory name ;; When no escapes are present, ~f is appended at the end (define (usage) (print "Usage: map FUNCTION FILE...") (print "specials: ~[bdef]") (exit)) (define (main args) (when (< (length args) 3) (usage)) (let ((command (cadr args)) (files (cddr args))) (format #t "(:command ~s :files ~s)\n" command files) (dolist (file files) (let ((cmd (string-copy command))) (rxmatch-if (#/~[bdef]/ cmd) (#f) (begin (print (sys-basename file)) (set! cmd (regexp-replace-all #/~b/ cmd (sys-basename file))) (set! cmd (regexp-replace-all #/~d/ cmd (sys-dirname file))) (set! cmd (regexp-replace-all #/~e/ cmd "extension")) (set! cmd (regexp-replace-all #/~f/ cmd file))) (begin (print "no escapes, default append"))) (format #t "(sys-system ~s)\n" cmd)))))