UNPKG

dev-diary

Version:

Developer Diary

129 lines (86 loc) 1.99 kB
#!/usr/bin/env nodejs var fs = require("fs"); const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); function statPath(path) { try { return fs.statSync(path); } catch (ex) {} return false; } function ReadDiary(path) { var exist = statPath(path); if(exist && exist.isFile()) { //Read it var data = fs.readFileSync(path, "utf-8"); return data; }else{ var file = fs.openSync(path, "wx+"); fs.writeFileSync(path, '{"Entrys": []}', "utf-8"); var data = fs.readFileSync(path, "utf-8"); fs.close(file); return data; } } function addEntry(path, oldJson, message) { var latest = oldJson.Entrys.length; oldJson.Entrys[latest] = {"id":latest, "Content": message, "Date": new Date().toString()}; //console.log(oldJson); return JSON.stringify(oldJson); } function Entry() { var path = process.cwd()+"/Diary.json"; var fileContent = JSON.parse(ReadDiary(path)); rl.question('Input Your entry: ', (answer) => { // TODO: Log the answer in a database var newJson = addEntry(path, fileContent, answer); fs.writeFileSync(path,newJson, "utf-8"); rl.close(); process.exit(1); }); } function LatestEntry() { var path = process.cwd()+"/Diary.json"; var content = JSON.parse(ReadDiary(path)); var l = content.Entrys.length; if(l==0) { console.log(content.Entrys[0].Content); }else { console.log(content.Entrys[l-1].Content); } } function AllEntrys() { var path = process.cwd()+"/Diary.json"; var content = JSON.parse(ReadDiary(path)); var l = content.Entrys.length; for(var i=0; i<l; i++) { console.log(content.Entrys[i].Date + " : "+content.Entrys[i].Content); } } if(typeof process.argv[2]!= "undefined") { if(process.argv[2]=="write") { Entry(); }else if(process.argv[2] == "read") { LatestEntry(); process.exit(1); }else if(process.argv[2] =="readall") { AllEntrys(); process.exit(1); } }