#!@GUILE@ --no-auto-compile -*- scheme -*- -*- geiser-scheme-implementation: guile -*- !# ;;; Guix Build Coordinator ;;; ;;; Copyright © 2020 Christopher Baines ;;; ;;; This file is part of the guix-build-coordinator. ;;; ;;; guix-data-service is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or ;;; (at your option) any later version. ;;; ;;; guix-data-service is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;; General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with the guix-data-service. If not, see ;;; . (use-modules (srfi srfi-1) (srfi srfi-37) (guix-build-coordinator agent)) (define %options ;; Specifications of the command-line options (list (option '("coordinator") #t #f (lambda (opt name arg result) (alist-cons 'coordinator arg result))) (option '("uuid") #t #f (lambda (opt name arg result) (alist-cons 'uuid arg result))) (option '("password") #t #f (lambda (opt name arg result) (alist-cons 'password arg result))) (option '("substitute-urls") #t #f (lambda (opt name arg result) (alist-cons 'substitute-urls (string-split arg #\space) result))) (option '("derivation-substitute-urls") #t #f (lambda (opt name arg result) (alist-cons 'derivation-substitute-urls (string-split arg #\space) result))) (option '("non-derivation-substitute-urls") #t #f (lambda (opt name arg result) (alist-cons 'non-derivation-substitute-urls (string-split arg #\space) result))))) (define %option-defaults ;; Alist of default option values `((coordinator . "http://localhost:8745"))) (define (parse-options options defaults args) (args-fold args %options (lambda (opt name arg result) (error "unrecognized option" name)) (lambda (arg result) (error "unrecognized argument" arg)) %option-defaults)) (setvbuf (current-output-port) 'line) (setvbuf (current-error-port) 'line) (let ((opts (parse-options %options %option-defaults (cdr (program-arguments))))) (run-agent (assq-ref opts 'uuid) (assq-ref opts 'coordinator) (assq-ref opts 'password) (or (assq-ref opts 'derivation-substitute-urls) (assq-ref opts 'substitute-urls)) (or (assq-ref opts 'non-derivation-substitute-urls) (assq-ref opts 'substitute-urls))))