mirror of
https://github.com/tomru/wichteln.git
synced 2026-03-03 22:47:20 +01:00
further work
This commit is contained in:
20
README.md
20
README.md
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
15
wichteln.js
15
wichteln.js
@@ -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));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user