You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
933 B
54 lines
933 B
#lang racket
|
|
|
|
(require remote-shell/ssh)
|
|
(require "execute.rkt")
|
|
|
|
(define cwd
|
|
(make-parameter "~"))
|
|
|
|
(define host
|
|
(make-parameter #f))
|
|
|
|
(define hostname
|
|
(make-parameter #f))
|
|
|
|
(define user
|
|
(make-parameter #f))
|
|
|
|
(define commands
|
|
(make-parameter #f))
|
|
|
|
(define executor
|
|
(make-parameter #f))
|
|
|
|
(define-syntax-rule
|
|
(plan expr ...)
|
|
(parameterize
|
|
([commands (list)])
|
|
(begin expr ...)))
|
|
|
|
(define-syntax-rule
|
|
(with-cwd dir expr ...)
|
|
(parameterize
|
|
([cwd
|
|
(match (substring dir 0 1)
|
|
["/" dir]
|
|
[_ (format "~a/~a" (cwd) dir)])])
|
|
(begin expr ...)))
|
|
|
|
(define-syntax-rule
|
|
(with-host remote expr ...)
|
|
(parameterize
|
|
([host remote]
|
|
[hostname (remote-host remote)]
|
|
[executor (make-exec (remote-host remote))])
|
|
(begin expr ...)))
|
|
|
|
(define-syntax-rule
|
|
(become username expr ...)
|
|
(parameterize
|
|
([user username])
|
|
(begin expr ...)))
|
|
|
|
(provide
|
|
(all-defined-out))
|
|
|