dotfiles/scripts/sysupdate.rkt

31 lines
875 B
Racket
Executable File

#!/usr/bin/env racket
#lang racket
(current-print void)
(define noint (make-parameter #f))
(command-line #:program "sysupdate"
#:usage-help "Update the system"
#:once-each [("-n" "--noint") "Don't require user interaction" (noint #t)])
(define failures '())
(define (cmd exe . args)
(match* ((find-executable-path exe) (cons exe args))
[(#f argv) (printf "skipping command ~a, command not found\n" argv)]
[(exepath argv)
(printf ">>> ~a\n" argv)
(unless (apply system* exepath args)
(set! failures (cons argv failures)))]))
(cmd "zupper" "update")
(cmd "rustup" "update")
(apply cmd (if (noint)
'("paru" "-Syu" "--noconfirm")
'("paru" "-Syu")))
(cmd "alecor" "mkcache")
(cmd "tldr" "--update")
(unless (empty? failures)
(raise-user-error "The following commands failed:" failures))