Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- echo "******************************"
- echo "Seting up Keystone"
- echo "******************************"
- projectName="keystone"
- read -p "Name your project (lowercase, default is '$projectName') : " projectName
- projectPath="$projectName"
- read -p "Project Path (default is './$projectName')" projectPath
- mongoURI="mongodb://localhost/"
- read -p "MongoDB URI (default is 'mongodb://localhost/$projectName')" mongoURI
- mkdir "$projectPath"
- cd "$projectPath"
- # *****************************
- # Setup Keystone
- # *****************************
- cat > web.js <<EOF
- var keystone = require('keystone');
- keystone.init({
- 'name': '$projectName',
- 'favicon': 'public/favicon.ico',
- 'static': ['public'],
- 'views': 'templates/views',
- 'view engine': 'handlebars',
- 'auto update': true,
- 'mongo': '$mongoURI',
- 'session': true,
- 'auth': true,
- 'user model': 'User',
- 'cookie secret': '(your secret here)',
- 'compress': true
- });
- require('./models');
- keystone.set('routes', require('./routes'));
- keystone.start();
- EOF
- # ******************************
- # Setup Libraries
- # ******************************
- mkdir lib
- # ******************************
- # Setup Models
- # ******************************
- mkdir models
- cat > models/index.js <<EOF
- require('./users.js');
- EOF
- cat > models/users.js <<EOF
- var keystone = require('keystone'),
- Types = keystone.Field.Types;
- var User = new keystone.List('User');
- User.add({
- name: { type: Types.Name, required: true, index: true },
- email: { type: Types.Email, initial: true, required: true, index: true },
- password: { type: Types.Password, initial: true },
- canAccessKeystone: { type: Boolean, initial: true }
- });
- User.register();
- EOF
- # *****************************
- # Setup Routes
- # *****************************
- mkdir routes
- cat > routes/index.js <<EOF
- var keystone = require('keystone'),
- middleware = require('./middleware'),
- importRoutes = keystone.importer(__dirname);
- // Common Middleware
- keystone.pre('routes', middleware.initErrorHandlers);
- keystone.pre('routes', middleware.initLocals);
- keystone.pre('render', middleware.flashMessages);
- // Handle 404 errors
- keystone.set('404', function(req, res, next) {
- res.notfound();
- });
- // Handle other errors
- keystone.set('500', function(err, req, res, next) {
- var title, message;
- if (err instanceof Error) {
- message = err.message;
- err = err.stack;
- }
- res.err(err, title, message);
- });
- // Load Routes
- var routes = {
- views: importRoutes('./views')
- };
- // Bind Routes
- exports = module.exports = function(app) {
- app.get('/', routes.views.index);
- }
- User.register();
- EOF
- touch routes/middleware.js
- # ***************************
- # Setup Views
- # ***************************
- mkdir routes/views
- cat > routes/views/index.js <<EOF
- var keystone = require('keystone');
- exports = module.exports = function(req, res) {
- var view = new keystone.View(req, res);
- view.render('index');
- }
- EOF
- # ******************************
- # Setup Templates
- # ******************************
- mkdir templates
- mkdir templates/layouts
- mkdir templates/views
- cat > templates/layouts/default.hbs <<EOF
- <html>
- <head>
- </head>
- <body>
- {{body}}
- </body>
- </html>
- EOF
- cat > templates/views/index.hbs <<EOF
- extends ../layouts/default
- <h1>$projectName</h1>
- EOF
- npm init
- npm install --save keystone
- npm install --save underscore
- npm install --save handlebars
- echo "******************************"
- echo "... Finished"
- echo "******************************"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement