-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathtasks.js
More file actions
75 lines (65 loc) · 1.63 KB
/
tasks.js
File metadata and controls
75 lines (65 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
$ node tasks.js list
$ node tasks.js clear
$ node tasks.js add <task>
*/
const fs = require('fs');
const targetFile = 'tasks.txt';
const defaultContents = '[]';
let tasks;
try {
tasks = parseFile(targetFile);
} catch (e) {
fs.writeFileSync(targetFile, defaultContents, 'utf8', (err) => {
console.log(err);
})
tasks = parseFile(targetFile);
}
let command = process.argv[2];
switch (command) {
case 'list':
listTasks();
break;
case 'clear':
clearTasks();
break;
case 'add':
addTask();
break;
default:
help();
}
function parseFile(fileName){
return JSON.parse(fs.readFileSync(fileName, 'utf-8'));
}
function listTasks() {
if (tasks.length === 0) {
console.log('Found no tasks.');
} else {
console.log('Found', tasks.length, 'tasks.');
for (let i = 0; i < tasks.length; i++) {
console.log(i + 1, tasks[i]);
}
}
}
function clearTasks() {
fs.writeFile(targetFile, defaultContents ,(err) => {
console.log(err);
});
console.log(`Cleared up the tasks. (${tasks.length} tasks)`);
}
function addTask() {
let task = process.argv.splice(3).join(' ');
tasks.push(task);
fs.writeFile(targetFile, JSON.stringify(tasks), (err) => {
console.log(err);
})
console.log(`Added the given task. (${tasks.length} tasks)`);
}
function help() {
console.log('-------------------- HOW TO USE --------------------');
console.log('$ node tasks.js list: list up all the tasks.');
console.log('$ node tasks.js clear: clear up all the tasks.');
console.log('$ node tasks.js add <task>: add the given task. ');
console.log('----------------------------------------------------');
}