unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* How can i make executable guile file to process command line arguments?
@ 2022-08-18 14:01 Jacob Hrbek
  2022-08-18 14:26 ` Olivier Dion via General Guile related discussions
  2022-08-18 17:58 ` Zelphir Kaltstahl
  0 siblings, 2 replies; 3+ messages in thread
From: Jacob Hrbek @ 2022-08-18 14:01 UTC (permalink / raw)
  To: guile-user


[-- Attachment #1.1: Type: text/plain, Size: 1854 bytes --]

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)))


[-- Attachment #1.2: publickey - kreyren@rixotstudio.cz - 1677db82.asc --]
[-- Type: application/pgp-keys, Size: 713 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-08-18 17:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-18 14:01 How can i make executable guile file to process command line arguments? Jacob Hrbek
2022-08-18 14:26 ` Olivier Dion via General Guile related discussions
2022-08-18 17:58 ` Zelphir Kaltstahl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).