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
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>`
`GroupId` ist optional, falls angegeben wird nur unterschiedlichen GroupIds
gezogen (z.B. Fred aus Familie A soll nur aus Familie B, C, ... ziehen können).
Die Ziehung erfolgt per Zufall reihum. Falls für einen Teilnehmer kein Los
mehr zu ziehen gibt, wird ein Fehler geworfen.
`GroupId` ist optional (z.B. Fred aus Familie A soll nur aus Familie B, C, ...
ziehen können).
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
Name2 email2@example.com GroupB
Name3 email3@example.com GroupB
Name4 email4@example.com GroupA
Bob bob@example.com A
Alice alice@example.com A
Fred fred@example.com B
Gustav gustav@example.com B

View File

@@ -11,11 +11,12 @@ const mailer = nodemailer.createTransport({
});
function mail(email, name, pick) {
mailer.sendMail({
from: 'ido@cassiopeia.uberspace.com',
to: email,
subject: `Dein Wichtel ${name} ist ...`,
text: `Hey ${name},
mailer.sendMail(
{
from: "tomru@uber.space",
to: email,
subject: `Dein Wichtel ${name} ist ...`,
text: `Hey ${name},
Dein Wichtel ist *trommelwirbel*
@@ -85,6 +86,10 @@ const run = async () => {
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));
};