From 01b0ccf71fc43986df20c72db5345f7f6b5331fb Mon Sep 17 00:00:00 2001 From: Thomas Ruoff Date: Mon, 18 Nov 2019 22:44:05 +0100 Subject: [PATCH] further work --- README.md | 20 ++++++++++---------- people.txt | 8 ++++---- wichteln.js | 15 ++++++++++----- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index c52c763..92f927c 100644 --- a/README.md +++ b/README.md @@ -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. ` ` -`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. diff --git a/people.txt b/people.txt index d2a3780..549fce8 100644 --- a/people.txt +++ b/people.txt @@ -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 diff --git a/wichteln.js b/wichteln.js index 04b57d2..ee59f61 100755 --- a/wichteln.js +++ b/wichteln.js @@ -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)); };