berrydb
Version:
This is a database tool.
145 lines • 5.72 kB
JavaScript
/*
* The command line tool of berryDB
* berryDB v1.0.0
* yhzheng©2018
*/
var fs = require("fs");
var http = require("http");
// brief introduction
console.log("Welcome use berryDB and use this tool!\nInput \033[0;33m`help`\033[0m,I will help you.\033[0;33mMode by yhzheng.\033[0m");
function doc() {
var text = fs.readFileSync("doc/doc.txt").toString();
// text.replace(/`(\w{0,})`/g,"$1");
console.log(text);
}
function get(url) {
var code = "";
http.get(url,function (res,req) {
res.on("data",function (data) {
code += data;
});
res.on("end",function () {
if (code.search(/Not Found/g) !== -1){
fs.writeFileSync("ERR_DOWNLOAD.txt","Not Found!\nERR_CODE:404");
return;
}
fs.writeFileSync(url.split("/")[5],code);
});
}).on("err",function () {
fs.writeFileSync("ERR_DOWNLOAD.txt","ERR_GET");
});
}
function help() {
var text = fs.readFileSync("doc/help.txt").toString();
console.log(text);
}
function read(prompt, callback) {
process.stdout.write(prompt + '');
process.stdin.resume();
process.stdin.setEncoding('utf-8');
process.stdin.on('data', function(chunk) {
process.stdin.pause();
callback(chunk);
});
}
function input() {
read("berry:>",function (data) {
var datas = data.split("\n")[0].split(" ");
switch (datas[0]){
case "create":
switch (datas[1]){
case "db":
if (datas[2] === undefined){
console.log("\033[0;31m-ERR:This database don't have name.\033[0m");
return;
} else {
if (fs.existsSync(datas[2])) {
console.log("\033[0;31m-ERR:Can't create this database.\033[0m");
} else {
fs.mkdirSync(datas[2]);
console.log("\033[0;32mcreate success\033[0m");
}
}
break;
case "tab":
if (datas[2] === undefined){
console.log("\033[0;31m-ERR:This table of database don't have name.\033[0m");
return;
}
if (datas[3] === undefined){
console.log("\033[0;31m-ERR:The database don't have name.\033[0m");
return;
}
fs.writeFileSync(datas[3] + "/" + datas[2] + ".tab","");
console.log("\033[0;32mcreate success\033[0m");
break;
case "arr":
if (datas[2] === undefined){
console.log("\033[0;31m-ERR:This array of database don't have name.\033[0m");
return;
}
if (datas[3] === undefined){
console.log("\033[0;31m-ERR:The database don't have name.\033[0m");
return;
}
fs.writeFileSync(datas[3] + "/" + datas[2] + ".arr","");
console.log("\033[0;32mcreate success\033[0m");
break;
case "nt":
if (datas[2] === undefined){
console.log("\033[0;31m-ERR:This note of database don't have name.\033[0m");
return;
}
if (datas[3] === undefined){
console.log("\033[0;31m-ERR:The database don't have name.\033[0m");
return;
}
fs.writeFileSync(datas[3] + "/" + datas[2] + ".nt","This is a note of " + datas[3] + ".\nCreate Time:" + new Date().toUTCString());
console.log("\033[0;32mcreate success\033[0m");
break;
default:
console.log("\033[0;31m-ERR:Don't have this type.\033[0m");
break;
}
break;
case "init":
var table = {
"info": {},
"data": []
};
var types = datas[3].split(",");
for (var i in types){
table["info"][types[i]] = null;
}
fs.writeFileSync(datas[2] + "/" + datas[1] + ".tab",JSON.stringify(table));
console.log("\033[0;32minit success\033[0m");
break;
case "help":
help();
break;
case "doc":
doc();
break;
case "version":
console.log("\033[0;32mv-1.0.0\033[0m");
break;
case "install":
if (datas[1] === undefined){
console.log("\033[0;31m-ERR:Don't have the version of berryDB!\033[0m");
return;
}
get("http://v.yhzheng.com/berryDB/files/v-" + datas[1] + ".zip");
break;
case "exit":
console.log("\033[0;32mExited\033[0m");
return;
break;
default:
console.log("\033[0;31m-ERR:Don't have this command.\033[0m");
break;
}
input();
});
}
input();