var del = function*() { if(process.env.NODE_ENV === 'development') { logger.log('Deleting main database.'); db = yield* database.deleteDatabase(); logger.log('Everything is gone now.'); } else { logger.log("Delete database can only be used if NODE_ENV is 'development'"); } };
var init = function*() { var odm = require('fora-models'); var database = new odm.Database(conf.db); var _globals = {}; var db, _doHttpRequest; var del = function*() { if(process.env.NODE_ENV === 'development') { logger.log('Deleting main database.'); db = yield* database.deleteDatabase(); logger.log('Everything is gone now.'); } else { logger.log("Delete database can only be used if NODE_ENV is 'development'"); } }; var create = function*() { logger.log('This script will setup basic data. Calls the latest HTTP API.'); //Create Users _globals.sessions = {}; _doHttpRequest = thunkify(doHttpRequest); var user, token, resp, cred, adminkey; for (var _i = 0; _i < data.users.length; _i++) { user = data.users[_i]; logger.log("Creating a credential for " + user.username); cred = { secret: conf.services.auth.adminkeys.default, type: user.credential_type }; switch(cred.type) { case 'builtin': cred.username = user.credential_username; cred.password = user.credential_password; cred.email = user.email; break; case 'twitter': cred.username = user.credential_username; cred.id = user.credential_id; cred.accessToken = user.credential_accessToken; cred.accessTokenSecret = user.credential_accessTokenSecret; cred.email = user.email; break; } resp = yield* _doHttpRequest('/api/credentials', querystring.stringify(cred), 'post'); token = JSON.parse(resp).token; resp = yield* _doHttpRequest("/api/users?token=" + token, querystring.stringify(user), 'post'); resp = JSON.parse(resp); logger.log("Created " + resp.username); _globals.sessions[user.username] = resp; logger.log("Creating session for " + resp.username); resp = yield* _doHttpRequest("/api/login?token=" + token, querystring.stringify({ token: token, username: user.username }), 'post'); _globals.sessions[user.username].token = JSON.parse(resp).token; } var apps = {}; var app; for (_i = 0; _i < data.apps.length; _i++) { app = data.apps[_i]; token = _globals.sessions[app._createdBy].token; logger.log("Creating a new app " + app.name + " with token " + token); delete app._createdBy; if (app._message) app.message = fs.readFileSync(path.resolve(__dirname, "apps/" + app._message), 'utf-8'); delete app._message; if (app._about) app.about = fs.readFileSync(path.resolve(__dirname, "apps/" + app._about), 'utf-8'); delete app._about; app.type = "forum"; app.version = "1.0.0"; resp = yield* _doHttpRequest("/api/apps?token=" + token, querystring.stringify(app), 'post'); var appJson = JSON.parse(resp); apps[appJson.stub] = appJson; logger.log("Created " + appJson.name); for (var u in _globals.sessions) { var uToken = _globals.sessions[u]; if (uToken.token !== token) { resp = yield* _doHttpRequest("/api/app/" + appJson.stub + "/members?token=" + uToken.token, querystring.stringify(app), 'post'); resp = JSON.parse(resp); logger.log(u + " joined " + app.name); } } } for (_i = 0; _i < data.records.length; _i++) { var article = data.records[_i]; token = _globals.sessions[article._createdBy].token; adminkey = _globals.sessions.jeswin.token; logger.log("Creating a new article with token " + token); logger.log("Creating " + article.title); article.content_text = fs.readFileSync(path.resolve(__dirname, "records/" + article._content), 'utf-8'); article.content_format = 'markdown'; article.state = 'published'; app = article._app; var meta = article._meta; delete article._app; delete article._createdBy; delete article._content; delete article._meta; resp = yield* _doHttpRequest("/api/app/" + app + "?token=" + token, querystring.stringify(article), 'post'); resp = JSON.parse(resp); logger.log("Created " + resp.title + " with stub " + resp.stub); var metaTags = meta.split(','); for (var _i2 = 0; _i2 < metaTags.length; _i2++) { var metaTag = metaTags[_i2]; resp = yield* _doHttpRequest("/api/app/" + app + "/admin/records/" + resp.stub + "?token=" + adminkey, querystring.stringify({ meta: metaTag}), 'put'); resp = JSON.parse(resp); logger.log("Added " + metaTag + " tag to article " + resp.title); } } //Without this return, CS will create a wrapper function to return the results (array) of: for metaTag in meta.split(',') return; }; if (argv["delete"]) { _ = yield* del(); return process.exit(); } else if (argv.create) { _ = yield* create(); return process.exit(); } else if (argv.recreate) { _ = yield* del(); _ = yield* create(); return process.exit(); } else { logger.log('Invalid option.'); return process.exit(); } };