--- /dev/null
+:- module(banner, [display_banner/1]).
+
+:- use_module(library(dcgs)).
+:- use_module(library(lists)).
+:- use_module(library(pio)).
+
+:- meta_predicate(display_banner(1)).
+
+display_banner(F_1) :-
+ phrase_from_file(lines(Ls), "banner.txt"),
+ maplist(F_1, Ls),
+ call(F_1, "").
+
+lines([]) --> call(eos), !.
+lines([L|Ls]) --> line(L), lines(Ls).
+
+line([]) --> ( "\n" | call(eos) ), !.
+line([C|Cs]) --> [C], line(Cs).
+
+eos([], []).
--- /dev/null
+ ░▒▓██████▓▒░░▒▓████████▓▒░▒▓██████████████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░▒▓███████▓▒░
+░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░
+░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░
+░▒▓█▓▒▒▓███▓▒░▒▓██████▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░░▒▓██████▓▒░ ░▒▓███████▓▒░
+░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░
+░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░
+ ░▒▓██████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░
:- module(gemyer, [run/0]).
:- use_module(cert).
+:- use_module(banner).
:- use_module(config).
:- use_module(library(charsio)).
:- use_module(library(clpz)).
:- use_module(library(lists)).
:- use_module(library(pio)).
:- use_module(library(sockets)).
+:- use_module(library(lambda)).
:- use_module(library(tls)).
:- use_module(log).
:- use_module(mime).
:- use_module(response).
run :-
- log_msg("system", "Starting gemyer~n", []),
+ display_banner(\S^log_msg("system", "~s~n", [S])),
content(Site),
log_msg("system", "Serving capsule at `~s`~n", [Site]),
hostname(Hostname),