ordo/modules/ordo/interceptor/apt.scm

49 lines
1.7 KiB
Scheme

(define-module (ordo interceptor apt)
#:use-module (ordo interceptor)
#:use-module ((ordo connection) #:select (run)))
(define noninteractive-env '(("DEBIAN_FRONTEND" . "noninteractive")
("APT_LISTCHANGES_FRONTEND" . "none")))
(define-syntax define-apt-interceptor
(syntax-rules ()
((define-apt-interceptor (name arg) apt-args ...)
(define-public (name arg)
(interceptor
(string-append (symbol->string 'name) " " arg)
#:enter (lambda (ctx)
(run (context-connection ctx) "apt-get" "-q" "-y" apt-args ... arg #:env noninteractive-env #:check? #t)))))
((define-apt-interceptor name apt-args ...)
(define-public (name)
(interceptor
(symbol->string 'name)
#:enter (lambda (ctx)
(run (context-connection ctx) "apt-get" "-q" "-y" apt-args ... #:env noninteractive-env #:check? #t)))))))
(define-apt-interceptor apt:update "update")
(define-apt-interceptor apt:upgrade "upgrade")
(define-apt-interceptor apt:dist-upgrade "dist-upgrade")
(define-apt-interceptor (apt:install package-name) "install")
(define-apt-interceptor (apt:install-minimal package-name) "install" "--no-install-recommends")
(define-apt-interceptor (apt:reinstall package-name) "reinstall")
(define-apt-interceptor (apt:remove package-name) "remove")
(define-apt-interceptor (apt:purge package-name) "purge")
(define-apt-interceptor (apt:build-dep package-name) "build-dep")
(define-apt-interceptor apt:clean "clean")
(define-apt-interceptor apt:autoclean "autoclean")
(define-apt-interceptor apt:distclean "distclean")
(define-apt-interceptor apt:autoremove "autoremove")
(define-apt-interceptor apt:autopurge "autopurge")