dev-diary
Version:
Developer Diary
129 lines (86 loc) • 1.99 kB
JavaScript
#!/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);
}
}