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 🐛 |
- Stanisław Synowiec 💻 |
+ Stanisław Synowiec 💻 🐛 |
Adrian Polak 🚧 |
+ 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);
}