-
Notifications
You must be signed in to change notification settings - Fork 0
/
note_app.js
96 lines (78 loc) · 2.25 KB
/
note_app.js
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
const FS = require('fs');
const YARGS = require('yargs');
const FILENAME = 'notes_data.txt'
var readFile = (filename) => {
try{
var content = FS.readFileSync(filename);
return JSON.parse(content);
}catch(e){
return [];
}
};
var writeFile = (filename,data) => {
if(filename===undefined||data===undefined){
return undefined;
}
FS.writeFileSync(filename,data);
};
var printNote = (note) => {
console.log(`-----\n Title : ${note.title} \n Body : ${note.body}\n`);
}
const titleOptions = {
describe: 'Title of note',
demand: true,
alias: 't'
};
const bodyOptions = {
describe: 'Body of note',
demand: true,
alias: 'b'
};
const argv = YARGS
.command('read', 'Read a note', {
title: titleOptions,
})
.command('add', 'Add a new note', {
title: titleOptions,
body: bodyOptions
})
.command('list', 'List all nodes')
.command('delete', 'Delete a node', {
title: titleOptions
})
.help()
.argv;
const operation = argv._[0];
var notes = readFile(FILENAME);
if(operation === 'read'){
if(notes.length){
var note = notes.filter((note) => { return note.title === argv.title; });
if(note.length){
printNote(note[0]);
}else{
console.log(`Note with ${argv.title} does not exist`);
}
}
}else if(operation === 'add'){
const note = {
'title' : argv.title,
'body' : argv.body
};
var dupplicate = notes.filter(note => { return note.title === argv.title });
if(!dupplicate.length){
notes.push(note);
writeFile(FILENAME,JSON.stringify(notes));
printNote(note);
}else{
console.log("Note with that title already exists alraedy exists")
}
}else if(operation === 'list'){
console.log("List of all notes are :\n");
notes.forEach(note => {printNote(note)});
}else if(operation === 'delete'){
var notesToWrite = notes.filter(note => {return note.title !== argv.title});
FS.writeFileSync(FILENAME,JSON.stringify(notesToWrite));
console.log("Node deleted");
}else{
console.log('Invalid Operation');
}