Advertisement
Guest User

Untitled

a guest
Jul 29th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.48 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. echo "******************************"
  3. echo "Seting up Keystone"
  4. echo "******************************"
  5.  
  6.  
  7.  
  8.  
  9. projectName="keystone"
  10. read -p "Name your project (lowercase, default is '$projectName') : " projectName
  11.  
  12. projectPath="$projectName"
  13. read -p "Project Path (default is './$projectName')" projectPath
  14.  
  15. mongoURI="mongodb://localhost/"
  16. read -p "MongoDB URI (default is 'mongodb://localhost/$projectName')" mongoURI
  17.  
  18. mkdir "$projectPath"
  19. cd "$projectPath"
  20.  
  21. # *****************************
  22. # Setup Keystone
  23. # *****************************
  24. cat > web.js <<EOF
  25. var keystone = require('keystone');
  26. keystone.init({
  27. 'name': '$projectName',
  28.  
  29. 'favicon': 'public/favicon.ico',
  30. 'static': ['public'],
  31.  
  32. 'views': 'templates/views',
  33. 'view engine': 'handlebars',
  34.  
  35. 'auto update': true,
  36. 'mongo': '$mongoURI',
  37.  
  38. 'session': true,
  39. 'auth': true,
  40. 'user model': 'User',
  41. 'cookie secret': '(your secret here)',
  42.  
  43. 'compress': true
  44. });
  45. require('./models');
  46. keystone.set('routes', require('./routes'));
  47. keystone.start();
  48. EOF
  49.  
  50. # ******************************
  51. # Setup Libraries
  52. # ******************************
  53. mkdir lib
  54.  
  55. # ******************************
  56. # Setup Models
  57. # ******************************
  58. mkdir models
  59. cat > models/index.js <<EOF
  60. require('./users.js');
  61. EOF
  62.  
  63. cat > models/users.js <<EOF
  64. var keystone = require('keystone'),
  65. Types = keystone.Field.Types;
  66.  
  67. var User = new keystone.List('User');
  68.  
  69. User.add({
  70. name: { type: Types.Name, required: true, index: true },
  71. email: { type: Types.Email, initial: true, required: true, index: true },
  72. password: { type: Types.Password, initial: true },
  73. canAccessKeystone: { type: Boolean, initial: true }
  74. });
  75.  
  76. User.register();
  77. EOF
  78.  
  79. # *****************************
  80. # Setup Routes
  81. # *****************************
  82. mkdir routes
  83.  
  84. cat > routes/index.js <<EOF
  85. var keystone = require('keystone'),
  86. middleware = require('./middleware'),
  87. importRoutes = keystone.importer(__dirname);
  88.  
  89. // Common Middleware
  90. keystone.pre('routes', middleware.initErrorHandlers);
  91. keystone.pre('routes', middleware.initLocals);
  92. keystone.pre('render', middleware.flashMessages);
  93.  
  94. // Handle 404 errors
  95. keystone.set('404', function(req, res, next) {
  96. res.notfound();
  97. });
  98.  
  99. // Handle other errors
  100. keystone.set('500', function(err, req, res, next) {
  101. var title, message;
  102. if (err instanceof Error) {
  103. message = err.message;
  104. err = err.stack;
  105. }
  106. res.err(err, title, message);
  107. });
  108.  
  109. // Load Routes
  110. var routes = {
  111. views: importRoutes('./views')
  112. };
  113.  
  114. // Bind Routes
  115. exports = module.exports = function(app) {
  116. app.get('/', routes.views.index);
  117. }
  118.  
  119. User.register();
  120. EOF
  121.  
  122. touch routes/middleware.js
  123.  
  124. # ***************************
  125. # Setup Views
  126. # ***************************
  127. mkdir routes/views
  128.  
  129. cat > routes/views/index.js <<EOF
  130. var keystone = require('keystone');
  131.  
  132. exports = module.exports = function(req, res) {
  133. var view = new keystone.View(req, res);
  134. view.render('index');
  135. }
  136. EOF
  137.  
  138. # ******************************
  139. # Setup Templates
  140. # ******************************
  141. mkdir templates
  142. mkdir templates/layouts
  143. mkdir templates/views
  144.  
  145. cat > templates/layouts/default.hbs <<EOF
  146. <html>
  147. <head>
  148. </head>
  149. <body>
  150. {{body}}
  151. </body>
  152. </html>
  153. EOF
  154.  
  155. cat > templates/views/index.hbs <<EOF
  156. extends ../layouts/default
  157. <h1>$projectName</h1>
  158. EOF
  159.  
  160. npm init
  161.  
  162. npm install --save keystone
  163. npm install --save underscore
  164. npm install --save handlebars
  165.  
  166. echo "******************************"
  167. echo "... Finished"
  168. echo "******************************"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement