I have this file which i use to interact with a version controlled repository
similar to a Makefile.
How can i make it work with e.g. `./file.scm echo wheee` -> Will execute the
`(define (echo msg) ...)` and output `wheee` in the terminal?
FWIW preferably i want it to work like `./file.scm echo whee build` so that it
would output `wheee` and then ran the `(define (build) ...)` task too..
#!/usr/bin/env sh
exec guile -s "$0" "$@"
!#
;;; This file is used to interact with the project
;;; ==== [START] TO BE INCLUDED IN A LIBRARY [START] ==== ;;;
;; Get path to the current filename
(define-public %repo-root (dirname (current-filename)))
;;; ==== [STOP] TO BE INCLUDED IN A LIBRARY [STOP] ==== ;;;
;; FIXME-QA(Krey): We need to define an alternative to `(define (task)...)` to
be more workable and faster to write
;;; Tasks
;; DESIGN(Krey): Build the system configuration
(define (build)
(system* "guix"
"system"
"build"
(string-append %repo-root "/config.scm")))
;; DESIGN(Krey): Deploy the system configuration on the current system
(define (deploy)
(system* "guix"
"system"
"reconfigure"
(string-append %repo-root "/config.scm")))
;; DESIGN(Krey): Build the bare minimal image for rockpro64
(define (tools-minimal-rockpro64)
(system* "guix"
"system"
"--system=aarch64-linux"
"image"
(string-append %file-root "/config.scm")))
;; Processing of cli arguments
(define (echo msg) (system* "echo" msg))
;; DESIGN(Krey): Expecting to process the command-line args here
;; HOTFIX(Krey): Didn't figure out how to do it yet, so currently hard-coding
; deploy
;(quote (cdr (command-line)))
;;(match (command-line) ((_ "build") (build)))