UNPKG

berrydb

Version:

This is a database tool.

145 lines 5.72 kB
#!/usr/bin/env node /* * 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();