project.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const Vorpal = require('vorpal')
  2. const prompt = require('password-prompt')
  3. const database = require('../lib/database')
  4. const { User } = database
  5. const controllers = require('../lib/controllers')
  6. const chalk = require('chalk')
  7. const asTable = require('as-table')
  8. const config = require('../config')
  9. const server = require('../lib/server')
  10. const vorpal = new Vorpal()
  11. const main = async () => {
  12. await database.init();
  13. vorpal.command('create user <email> [password]', 'Creates a user')
  14. .action(async model => {
  15. if (!model.password) {
  16. model.password = await prompt('Password: ')
  17. }
  18. const user = await User.create(model)
  19. console.log('Created user')
  20. })
  21. vorpal.command('list users', 'Lists all users')
  22. .action(async () => {
  23. console.log(asTable((await User.all()).map(x => x.dataValues)))
  24. })
  25. vorpal.command('server', 'Runs the web server')
  26. .action(() => new Promise(() => {
  27. server.init()
  28. }))
  29. vorpal.delimiter('project>')
  30. if (process.argv.length > 2) {
  31. await vorpal.parse(process.argv)
  32. } else {
  33. await vorpal.show()
  34. }
  35. }
  36. main().catch(err => {
  37. console.error(chalk.red('Runtime Error!'))
  38. console.error(err)
  39. })
  40. process.on('uncaughtException', (err) => {
  41. console.error(chalk.red(`Uncaught Exception!`))
  42. console.error(err)
  43. })
  44. process.on('unhandledRejection', (err) => {
  45. console.error(chalk.red(`Unhandled Promise Failure!`))
  46. console.error(err)
  47. process.exit(1)
  48. })