mirror of
https://github.com/tomru/wichteln.git
synced 2026-03-02 22:17:15 +01:00
some improvements
This commit is contained in:
@@ -5,8 +5,11 @@ Beschenker. Zusätzlich wird die ganze Ziehung in `./picks.txt` abgelegt.
|
||||
|
||||
# Verwendung
|
||||
|
||||
Die Liste der Teilnehmer wird von `stdin` eingelesen und erwartet folgendes
|
||||
Format pro Zeile.
|
||||
```
|
||||
./wichteln.js < people.txt
|
||||
```
|
||||
|
||||
# Format Teilnehmerlisteneintrag
|
||||
|
||||
`<Name> <Email> <GroupId>`
|
||||
|
||||
@@ -17,3 +20,5 @@ 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.
|
||||
|
||||
|
||||
|
||||
20
package-lock.json
generated
20
package-lock.json
generated
@@ -1,26 +1,8 @@
|
||||
{
|
||||
"name": "wichteln",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 2,
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "wichteln",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"nodemailer": "^4.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/nodemailer": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.7.0.tgz",
|
||||
"integrity": "sha512-IludxDypFpYw4xpzKdMAozBSkzKHmNBvGanUREjJItgJ2NYcK/s8+PggVhj7c2yGFQykKsnnmv1+Aqo0ZfjHmw==",
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"nodemailer": {
|
||||
"version": "4.7.0",
|
||||
|
||||
14
wichteln.js
14
wichteln.js
@@ -20,8 +20,8 @@ function mail(email, name, pick) {
|
||||
|
||||
Du darfst dieses Jahr >> ${pick} << beschenken!
|
||||
|
||||
Viele lieben Grüße
|
||||
Dein treuer Weihnachtswichtel™
|
||||
Viele liebe Grüße
|
||||
Dein Weihnachtswichtel™
|
||||
`
|
||||
},
|
||||
(err, info) => {
|
||||
@@ -59,7 +59,7 @@ const run = async () => {
|
||||
throw new Error("input file empty");
|
||||
}
|
||||
|
||||
people.forEach(drawer => {
|
||||
people.forEach((drawer, index) => {
|
||||
let picked;
|
||||
|
||||
let pickable = people.filter(
|
||||
@@ -70,7 +70,7 @@ const run = async () => {
|
||||
);
|
||||
|
||||
if (pickable.length === 0) {
|
||||
throw new Error("ohhh, noone left for ", drawer.name);
|
||||
throw new Error(`ohhh shoot. None left for ${drawer.name}. Just try to roll again...`);
|
||||
}
|
||||
|
||||
let pickIndex = Math.floor(Math.random() * pickable.length);
|
||||
@@ -78,16 +78,18 @@ const run = async () => {
|
||||
pickable[pickIndex].picked = true;
|
||||
});
|
||||
|
||||
console.log('Yay, I could draw someone for everybody! Writing ./picks.txt');
|
||||
|
||||
fs.writeFileSync(
|
||||
`./picks.txt`,
|
||||
people.map(({ name, pick }) => `${name} picked ${pick}`).join("\n")
|
||||
);
|
||||
|
||||
if (!send) {
|
||||
console.log("DryRun: did not send emails. To send pass --send option");
|
||||
console.log("DRY RUN: did not send emails! To send pass --send option");
|
||||
return;
|
||||
}
|
||||
people.forEach(p => mail(p.email, p.name, p.pick));
|
||||
};
|
||||
|
||||
run();
|
||||
run().catch((e) => console.error(`Error: ${e.message}`));
|
||||
|
||||
Reference in New Issue
Block a user