diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2020-01-01 00:00:00 +0100 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-06-05 16:09:16 +0200 |
commit | 461c61e1797006510493f7a6684d316369d145cb (patch) | |
tree | 389ba7a40ce931b0f27e27415c71832b31c7ea39 /src/scm | |
parent | 94df4b065fe63dbcc69e9a8b170160d4ea409fe7 (diff) |
Set up the guile project
Diffstat (limited to 'src/scm')
-rw-r--r-- | src/scm/Makefile.am | 4 | ||||
-rw-r--r-- | src/scm/webid-oidc.scm | 2 | ||||
-rw-r--r-- | src/scm/webid-oidc/Makefile.am | 7 | ||||
-rw-r--r-- | src/scm/webid-oidc/errors.scm | 30 |
4 files changed, 43 insertions, 0 deletions
diff --git a/src/scm/Makefile.am b/src/scm/Makefile.am new file mode 100644 index 0000000..33855e1 --- /dev/null +++ b/src/scm/Makefile.am @@ -0,0 +1,4 @@ +dist_mod_DATA += %reldir%/webid-oidc.scm +go_DATA += %reldir%/webid-oidc.go + +include %reldir%/webid-oidc/Makefile.am diff --git a/src/scm/webid-oidc.scm b/src/scm/webid-oidc.scm new file mode 100644 index 0000000..a9a4699 --- /dev/null +++ b/src/scm/webid-oidc.scm @@ -0,0 +1,2 @@ +(define-module (webid-oidc) + #:use-module (webid-oidc config)) diff --git a/src/scm/webid-oidc/Makefile.am b/src/scm/webid-oidc/Makefile.am new file mode 100644 index 0000000..48a41f7 --- /dev/null +++ b/src/scm/webid-oidc/Makefile.am @@ -0,0 +1,7 @@ +dist_webidoidcmod_DATA += \ + %reldir%/errors.scm + +webidoidcgo_DATA += \ + %reldir%/errors.go + +EXTRA_DIST += %reldir%/ChangeLog diff --git a/src/scm/webid-oidc/errors.scm b/src/scm/webid-oidc/errors.scm new file mode 100644 index 0000000..b8d7382 --- /dev/null +++ b/src/scm/webid-oidc/errors.scm @@ -0,0 +1,30 @@ +(define-module (webid-oidc errors) + #:use-module (ice-9 exceptions) + #:use-module (ice-9 optargs) + #:use-module (ice-9 i18n)) + +(define (G_ text) + (let ((out (gettext text))) + (if (string=? out text) + ;; No translation, disambiguate + (car (reverse (string-split text #\|))) + out))) + +;; This is a collection of all errors that can happen, and a function +;; to log them. + +(define*-public (error->str error #:key (max-depth #f)) + (if (record? error) + (let* ((type (record-type-descriptor error)) + (get + (lambda (slot) + ((record-accessor type slot) error))) + (recurse + (if (eqv? max-depth 0) + (lambda (err) (G_ "that’s how it is")) + (lambda (err) + (error->str err #:max-depth (and max-depth (- max-depth 1))))))) + (case (record-type-name type) + (else + (error (format #f "Unhandled exception type ~a." (record-type-name type)))))) + (format #f "~a" error))) |