diff --git a/dev/scripts/ensureTempFolderExists.js b/dev/scripts/ensureTempFolderExists.js deleted file mode 100644 index 3c16370f6453da1880f417a9947aefb1e8876c06..0000000000000000000000000000000000000000 --- a/dev/scripts/ensureTempFolderExists.js +++ /dev/null @@ -1,31 +0,0 @@ -const fs = require('fs') -const path = require('path') - -const { logger } = require('../../src') - -const ensureTempFolderExists = () => { - logger.info('Ensuring "tmp" folder exists...') - - try { - const tempFolderPath = path.join(__dirname, '..', 'tmp') - - fs.stat(tempFolderPath, (err, stats) => { - if (err || !stats.isDirectory()) { - logger.info( - '[ensureTempFolderExists]: "tmp" folder does not exist. Creating...', - ) - fs.mkdirSync(tempFolderPath) - logger.info('[ensureTempFolderExists]: "tmp" folder created') - } else { - logger.info('[ensureTempFolderExists]: "tmp" folder already exists') - } - }) - - process.exit(0) - } catch (e) { - logger.error(e) - process.exit(1) - } -} - -ensureTempFolderExists() diff --git a/dev/scripts/setupDevServer.sh b/dev/scripts/setupDevServer.sh deleted file mode 100644 index 24c7719de8d047829d959d62f1fcc1af827cf9b5..0000000000000000000000000000000000000000 --- a/dev/scripts/setupDevServer.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# set -x - -# This is run through docker. Its CWD will be the root folder. -# node ./dev/scripts/ensureTempFolderExists.js -# node ./dev/scripts/seedAdmin.js - -exec "$@" diff --git a/dev/startServer.js b/dev/startServer.js deleted file mode 100644 index dc2e031283281b072134785c9a6d9e4ea05bd7fc..0000000000000000000000000000000000000000 --- a/dev/startServer.js +++ /dev/null @@ -1,11 +0,0 @@ -const { startServer } = require('../src') - -const init = async () => { - try { - return startServer() - } catch (e) { - throw new Error(e) - } -} - -init() diff --git a/docker-compose.yml b/docker-compose.yml index b15cb66872bf69614206011a007febba0dc03c1a..208e4a009aac77be41256aa8fb16e94f88b4a40f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,27 +9,7 @@ services: - db - filehosting - createbucket - entrypoint: - [ - 'node_modules/.bin/wait-for-it', - 'db:5432', - '--', - 'sh', - 'dev/scripts/setupDevServer.sh', - ] - command: - [ - 'node_modules/.bin/nodemon', - './dev/startServer.js', - '--watch', - 'src', - '--watch', - 'dev', - '--watch', - 'authorization', - '--ext', - 'js,graphql', - ] + command: ['yarn', 'coko-server', 'start-dev'] ports: - ${SERVER_PORT:-3000}:${SERVER_PORT:-3000} environment: diff --git a/package.json b/package.json index ef4d09a94065d2b27eb888c11678b9c4b6602180..4f7573ed2a227af74ffead90a4435092ca0931e4 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "morgan": "^1.10.0", "node-cron": "^2.0.3", "nodemailer": "^6.4.18", + "nodemon": "^3.1.0", "objection": "^2.2.15", "ora": "^5.4.1", "passport": "^0.4.1", @@ -89,7 +90,6 @@ "faker": "^5.5.3", "jest": "^26.6.3", "node-wait-for-it": "^0.2.0", - "nodemon": "^3.1.0", "standard-version": "^7.1.0", "supertest": "^3.1.0", "winston": "^2.3.1" diff --git a/src/cli/coko-server.js b/src/cli/coko-server.js index 56b39a103a68ff41df87c679ce9cc696d2b3c452..07c7b7e09245c87bc1baa512622d680227d4c7a8 100755 --- a/src/cli/coko-server.js +++ b/src/cli/coko-server.js @@ -1,13 +1,16 @@ #!/usr/bin/env node -const { program } = require('commander') +const path = require('path') +const { program } = require('commander') const madge = require('madge') const output = require('madge/lib/output') const ora = require('ora') +const nodemon = require('nodemon') const pkg = require('../../package.json') const logger = require('../logger') +const { logNodemon } = require('../logger/internals') const { migrate, rollback, pending, executed } = require('../dbManager/migrate') const migrateCommand = program @@ -121,6 +124,33 @@ program }) }) +program + .command('start-dev') + .description('Start a development server') + .showHelpAfterError() + .action(() => { + const scriptPath = path.join(__dirname, '..', 'init') + + nodemon({ + script: scriptPath, + ignore: './tmp/*', + }) + + nodemon + .on('start', () => { + logNodemon('\nStarting dev server...') + }) + .on('quit', () => { + logNodemon('\nStopping dev server...\n') + process.exit() + }) + .on('restart', files => { + logNodemon(`Retarting dev server due to files ${files}...`, { + withLines: true, + }) + }) + }) + program .name('coko-server') .version(pkg.version, '-v, --version') diff --git a/src/init.js b/src/init.js new file mode 100644 index 0000000000000000000000000000000000000000..77588a4548b11368ab512f61bdf298b7e29da254 --- /dev/null +++ b/src/init.js @@ -0,0 +1,3 @@ +const startServer = require('./startServer') + +startServer() diff --git a/src/logger/internals.js b/src/logger/internals.js index 6151cf8161f4412d5ebd619eef24449cc77c49c2..cefbb1528d3513918ed8de6ad87462b530b0675b 100644 --- a/src/logger/internals.js +++ b/src/logger/internals.js @@ -9,7 +9,7 @@ const CROSS = '\u2718' const HORIZONTAL_BOX = '\u2500' const PICKAXE = '\u26CF' -const SEPARATOR = `\n${HORIZONTAL_BOX.repeat(65)}\n\n` +const SEPARATOR = `${HORIZONTAL_BOX.repeat(80)}` const logErrorTask = str => { logger.error(`${chalk.red(CROSS)} ${str}`) @@ -19,6 +19,18 @@ const logInit = str => { logger.info(chalk.yellow(`\n${PICKAXE} ${str} ${PICKAXE}`)) } +const logNodemon = (str, options = { withLines: false }) => { + const { withLines } = options + + logger.info( + chalk.yellow( + `${withLines ? `\n${SEPARATOR}\n\n` : ''}${str}${ + withLines ? `\n\n${SEPARATOR}` : '' + }`, + ), + ) +} + const logSuccess = str => { logger.info(chalk.green(str)) } @@ -30,7 +42,7 @@ const logSuccessTask = str => { } const logTask = str => { - logger.info(`${SEPARATOR}${chalk.cyan('Task:')} ${str}\n`) + logger.info(`\n${SEPARATOR}\n\n${chalk.cyan('Task:')} ${str}\n`) } const logTaskItem = str => { @@ -40,6 +52,7 @@ const logTaskItem = str => { module.exports = { logErrorTask, logInit, + logNodemon, logSuccess, logSuccessTask, logTask, diff --git a/src/startup/ensureTempFolderExists.js b/src/startup/ensureTempFolderExists.js index 952013a50bb463160bba230ea282413afc3e0d6d..9f247c190bd055d94f143679eeb3d5ab523974a3 100644 --- a/src/startup/ensureTempFolderExists.js +++ b/src/startup/ensureTempFolderExists.js @@ -5,7 +5,6 @@ const tempFolderPath = require('../utils/tempFolderPath') const ensureTempFolderExists = async () => { logTask(`Ensure tmp folder exists`) - await fs.ensureDir(tempFolderPath) logTaskItem(`tmp folder now exists`) }