Repository navigation
Expand file tree
/
Copy pathindex.js
More file actions
136 lines (130 loc) · 3.76 KB
/
Copy pathindex.js
File metadata and controls
136 lines (130 loc) · 3.76 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/usr/bin/env node
//this file is the entry point of the application
const _ = require('lodash');
const yargs = require('yargs');
const todo = require('./todo');
//command line arguments
const argv = yargs
.command('addTodo', 'Add a new todo', {
title: {
describe: 'Title of todo',
demandOption: true,
type: 'string'
}
})
.command('deleteTodo', 'Delete a todo', {
title: {
describe: 'Title of todo',
demandOption: true,
type: 'string'
}
})
.command('updateTodo', 'Update a todo', {
id: {
describe: 'ID of todo',
demandOption: true,
type: 'string'
},
title: {
describe: 'New title of todo',
demandOption: true,
type: 'string'
}
})
.command('readTodo', 'Read a todo', {
id: {
describe: 'ID of todo',
demandOption: true,
type: 'string'
}
})
.command('listTodos', 'List all todos')
.command('listTodosDone', 'List all todos done')
.command('listTodosInProgress', 'List all todos In Progress')
.command('listTodosNotDone', 'List all todos Not done')
.command('mark-in-progress', ' Marking a task as in progress',{
id: {
describe: 'ID of todo',
demandOption: true,
type: 'string'
}
})
.command('mark-done', 'Mark a todo as done', {
id: {
describe: 'ID of todo',
demandOption: true,
type: 'string'
}
})
.help()
.argv;
const command = argv._[0];
console.log('Running Command is :', command);
//handling commands
if (command === 'addTodo') { //addTodo
todo.addTodo(argv.title);
}
else if (command === 'deleteTodo') { //deleteTodo
let todoDeleted = todo.deleteTodoByTitle(argv.title);
let message = todoDeleted ?
'Todo was deleted' : 'Todo cannot be found';
console.log(message);
}
else if (command === 'readTodo') { //readTodo
let task = todo.readTodo(argv.id);
if (task) {
console.log('yahoo! The todo was found.');
todo.logTodo(task);
} else {
console.log('Oops! The todo was not found.');
}
}
else if (command === 'updateTodo') { //updateTodo
let task = todo.updateTodo(argv.id, argv.title);
if (task) {
console.log('The todo was updated.');
todo.logTodo(task);
} else {
console.log('Oops! The todo was not found.');
}
}
else if (command === 'mark-in-progress') { //mark-in-progress
let task = todo.markInProgress(argv.id);
if (task) {
console.log(`${task} was marked as in progress.`);
todo.logTodo(task);
} else {
console.log('Oops! The todo was not found.');
}
}
else if (command === 'mark-done') { //mark-done
let task = todo.markDone(argv.id);
if (task) {
console.log(`${task} was marked as done.`);
} else {
console.log('Oops! The todo was not found.');
}
}
else if (command === 'listTodos') { //listTodos
let allTodos = todo.listTodos();
console.log(`${allTodos.length} tasks available`);
allTodos.forEach((task) => todo.logTodo(task)); // Corrected line
}
else if (command === 'listTodosDone') { //listTodosDone
let allTodosDone = todo.listTodosDone();
console.log(`${allTodosDone.length} tasks available`);
allTodosDone.forEach((task) => todo.logTodo(task));
}
else if (command === 'listTodosInProgress') { //listTodosInProgress
let allTodosInProgress = todo.listTodosInProgress();
console.log(`${allTodosInProgress.length} tasks available`);
allTodosInProgress.forEach((task) => todo.logTodo(task));
}
else if (command === 'listTodosNotDone') { //listTodosNotDone
let allTodosNotDone = todo.listTodosNotDone();
console.log(`${allTodosNotDone.length} tasks available`);
allTodosNotDone.forEach((task) => todo.logTodo(task));
}
else {
console.log('It is a Invalid command.');
}