diff --git a/.all-contributorsrc b/.all-contributorsrc index e183ba3..9ea1211 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -34,6 +34,15 @@ "contributions": [ "maintenance" ] + }, + { + "login": "MarcinParda", + "name": "Marcin Parda", + "avatar_url": "https://avatars.githubusercontent.com/u/32539248?v=4", + "profile": "https://marcinparda.vercel.app/", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index a16c737..3e54007 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,11 @@ Zadania są dostępne na stronie [opanujfrontend.pl/advent](https://opanujfronte Każdego dnia wykonaj w repozytorium polecenie `npm run create` a następnie skopiuj kod ze strony. -Użyj komendy `npm run create all`, jeśli chcesz wygenerować foldery z plikami startowymi -na każdy z dni wyzwania. - -Użyj komendy `npm run create with-previous`, aby utworzyć brakujące zadania od aktualnej daty do +Użyj komendy `npm run create:missing`, aby utworzyć brakujące zadania od aktualnej daty do dnia pierwszego wyzwania. +Możesz również wykonać polecenie `npm run create:month`, aby przygotować puste pliki do zadań na wszystkie 24 dni w kalendarzu. + Teraz możesz skupić się na wykonaniu zadania i weryfikacji testów poprzez polecenie `npm test`. ## 💜 Kontrybutorzy @@ -28,7 +27,7 @@ Nasz projekt wspierają ([zobacz typ kontrybucji](https://allcontributors.org/do -[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](#contributors-) @@ -39,8 +38,9 @@ Nasz projekt wspierają ([zobacz typ kontrybucji](https://allcontributors.org/do Oskar Puchalski
Oskar Puchalski

🐛 - Stanisław Synowiec
Stanisław Synowiec

💻 + Stanisław Synowiec
Stanisław Synowiec

💻 🐛 Adrian Polak
Adrian Polak

🚧 + Marcin Parda
Marcin Parda

💻 diff --git a/package.json b/package.json index b5b79b2..ad5bfbd 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,22 @@ { - "name": "advent-of-frontend", - "version": "0.0.1", - "type": "module", - "description": "Szablon dla zadań z opanujfrontend.pl/advent", - "author": "Przeprogramowani", - "license": "ISC", - "scripts": { - "create": "node ./scripts/create-template.js", - "create-all": "node ./scripts/create-template.js all", - "create-previous": "node ./scripts/create-template.js with-previous", - "test": "jest ./tasks/$(date +'%Y-%m-%d')/index.test.ts", - "test:all": "jest" - }, - "devDependencies": { - "@types/jest": "29.5.10", - "jest": "29.7.0", - "ts-jest": "29.1.1", - "tsx": "4.5.0", - "typescript": "5.3.2" - } + "name": "advent-of-frontend", + "version": "0.0.1", + "type": "module", + "description": "Szablon dla zadań z opanujfrontend.pl/advent", + "author": "Przeprogramowani", + "license": "ISC", + "scripts": { + "create": "node ./scripts/create-template.js", + "create:missing": "node ./scripts/create-template.js missing", + "create:month": "node ./scripts/create-month-templates.js", + "test": "jest ./tasks/$(date +'%Y-%m-%d')/index.test.ts", + "test:all": "jest" + }, + "devDependencies": { + "@types/jest": "29.5.10", + "jest": "29.7.0", + "ts-jest": "29.1.1", + "tsx": "4.5.0", + "typescript": "5.3.2" + } } diff --git a/scripts/create-month-templates.js b/scripts/create-month-templates.js new file mode 100644 index 0000000..19c8820 --- /dev/null +++ b/scripts/create-month-templates.js @@ -0,0 +1,42 @@ +import fs from 'fs'; +import path from 'path'; + +const today = new Date(); +const year = today.getFullYear(); +const month = 12; +const daysInCalendar = 24; +const daysToGenerate = Array.from({ length: daysInCalendar }, (_, i) => + String(i + 1).padStart(2, '0') +); + +if (!fs.existsSync('tasks')) { + fs.mkdirSync('tasks'); +} + +let atLeastOneFolderCreated = false; + +daysToGenerate.forEach((day) => { + const folderName = `${year}-${month}-${day}`; + const folderPath = path.join('tasks', folderName); + + if (!fs.existsSync(folderPath)) { + fs.mkdirSync(folderPath); + const indexFilePath = path.join(folderPath, 'index.ts'); + fs.writeFileSync(indexFilePath, '// Tutaj skopiuj kod zadania'); + + const testFilePath = path.join(folderPath, 'index.test.ts'); + fs.writeFileSync( + testFilePath, + '// Tutaj skopiuj testy dla zadania. Uruchom je poleceniem `npm test`' + ); + atLeastOneFolderCreated = true; + + console.log( + `Przygotowano szablon na zadanie w folderze tasks/${folderName} 🎄` + ); + } +}); + +if (!atLeastOneFolderCreated) { + console.log('Foldery na tegoroczne zadania już istnieją 🤔'); +} diff --git a/scripts/create-template.js b/scripts/create-template.js index de3146c..dd49a9b 100644 --- a/scripts/create-template.js +++ b/scripts/create-template.js @@ -4,23 +4,16 @@ import { createTaskFolder, createTaskFoldersFromRange } from "./task-folder.js"; const arg = process.argv[2]; if (!fs.existsSync("tasks")) { - fs.mkdirSync("tasks"); + fs.mkdirSync("tasks"); } if (!arg) { - createTaskFolder(new Date()); + createTaskFoldersFromRange(new Date(), new Date()); } -if (arg === "all") { - const startDate = new Date("2023-12-01"); - const endDate = new Date("2023-12-24"); +if (arg === "missing") { + const startDate = new Date("2023-12-01"); + const endDate = new Date(); - createTaskFoldersFromRange(startDate, endDate); -} - -if (arg === "with-previous") { - const startDate = new Date("2023-12-01"); - const endDate = new Date(); - - createTaskFoldersFromRange(startDate, endDate); + createTaskFoldersFromRange(startDate, endDate); }