summaryrefslogtreecommitdiff
path: root/bin/cuirass-send-events.in
blob: 2373e46b7624e9843ee5fbf15bf8e22055f22018 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/sh
# -*- scheme -*-
# @configure_input@
#GUILE_LOAD_PATH="@PACKAGE_LOAD_PATH@${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
#GUILE_LOAD_COMPILED_PATH="@PACKAGE_LOAD_COMPILED_PATH@${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@"
!#
;;;; cuirass -- continuous integration tool
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2019 Christopher Baines <mail@cbaines.net>
;;;
;;; This file is part of Cuirass.
;;;
;;; Cuirass 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.
;;;
;;; Cuirass 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 Cuirass.  If not, see <http://www.gnu.org/licenses/>.

(use-modules (cuirass)
             (cuirass ui)
             (cuirass logging)
             (cuirass utils)
             (cuirass send-events)
             (guix ui)
             (fibers)
             (fibers channels)
             (srfi srfi-19)
             (ice-9 getopt-long))

(define (show-help)
  (format #t "Usage: ~a [OPTIONS]~%" (%program-name))
  (display "Send events to the target URL.

  -T  --target-url=URL      Send events to URL.
  -D  --database=DB         Use DB to store build results.
  -h, --help                Display this help message")
  (newline)
  (show-package-information))

(define %options
  '((target-url     (single-char #\T) (value #t))
    (database       (single-char #\D) (value #t))
    (help           (single-char #\h) (value #f))))


;;;
;;; Entry point.
;;;

(define* (main #:optional (args (command-line)))

  ;; Always have stdout/stderr line-buffered.
  (setvbuf (current-output-port) 'line)
  (setvbuf (current-error-port) 'line)

  (let ((opts (getopt-long args %options)))
    (parameterize
        ((%program-name     (car args))
         (%package-database (option-ref opts 'database (%package-database)))
         (%package-cachedir
          (option-ref opts 'cache-directory (%package-cachedir))))
      (cond
       ((option-ref opts 'help #f)
        (show-help)
        (exit 0))
       (else
        (while #t
          (send-events (option-ref opts 'target-url #f))
          (sleep 5)))))))