further work

This commit is contained in:
Thomas Ruoff
2019-11-18 22:44:05 +01:00
parent 41e3691151
commit 01b0ccf71f
3 changed files with 24 additions and 19 deletions

View File

@@ -1,19 +1,19 @@
# Stupides Wichtel Skript # Stupides Wichtel Skript
Zieht einen Wichtel für ein Liste von Leuten und sendet eine E-Mail an den Zieht einen Wichtel für ein Liste von Leuten und sendet eine E-Mail an den
Beschenker. Beschenker. Zusätzlich wird die ganze Ziehung in `./picks.txt` abgelegt.
# Usage # Verwendung
Die Liste der Teilnehmer wird aus `./people.txt` eingelesen und erwartet folgendes Format pro Zeile. Die Liste der Teilnehmer wird von `stdin` eingelesen und erwartet folgendes
Format pro Zeile.
`<Name> <Email> <GroupId>` `<Name> <Email> <GroupId>`
`GroupId` ist optional, falls angegeben wird nur unterschiedlichen GroupIds `GroupId` ist optional (z.B. Fred aus Familie A soll nur aus Familie B, C, ...
gezogen (z.B. Fred aus Familie A soll nur aus Familie B, C, ... ziehen können). ziehen können).
Die Ziehung erfolgt per Zufall reihum. Falls für einen Teilnehmer kein Los
mehr zu ziehen gibt, wird ein Fehler geworfen.
Gezogen wird in der Reihenfolge der Input Liste. Wird `GroupId` verwendet, kann
es sein, dass für einen Teilnehmer kein _gültigen_ Wichtel mehr gibt. In diesem
Fall wirft das Skript einfach einen Fehler. Versucht es einfach noch einmal, bis
ein gültige Ziehung gefunden wurde.

View File

@@ -1,4 +1,4 @@
Name1 email1@example.com GroupA Bob bob@example.com A
Name2 email2@example.com GroupB Alice alice@example.com A
Name3 email3@example.com GroupB Fred fred@example.com B
Name4 email4@example.com GroupA Gustav gustav@example.com B

View File

@@ -11,11 +11,12 @@ const mailer = nodemailer.createTransport({
}); });
function mail(email, name, pick) { function mail(email, name, pick) {
mailer.sendMail({ mailer.sendMail(
from: 'ido@cassiopeia.uberspace.com', {
to: email, from: "tomru@uber.space",
subject: `Dein Wichtel ${name} ist ...`, to: email,
text: `Hey ${name}, subject: `Dein Wichtel ${name} ist ...`,
text: `Hey ${name},
Dein Wichtel ist *trommelwirbel* Dein Wichtel ist *trommelwirbel*
@@ -85,6 +86,10 @@ const run = async () => {
people.map(({ name, pick }) => `${name} picked ${pick}`).join("\n") people.map(({ name, pick }) => `${name} picked ${pick}`).join("\n")
); );
if (dryRun) {
console.log("DryRun: did not send emails");
return;
}
people.forEach(p => mail(p.email, p.name, p.pick)); people.forEach(p => mail(p.email, p.name, p.pick));
}; };