Bring in restart script. Make deploy snap-tool aware.

This commit is contained in:
John Lyon-Smith
2018-05-18 07:43:50 -07:00
parent efd42d06a2
commit 8520318d14
2 changed files with 62 additions and 1 deletions

View File

@@ -7,7 +7,7 @@
"start": "babel-node src/server.js",
"start:prod": "NODE_ENV=production node dist/server.js",
"build": "rm -rf dist && babel src -d dist -s",
"deploy": "rsync -vr -e ssh --exclude-from .rsync-exclude * ubuntu@gs-1:deighton-ar-server/ && ssh ubuntu@gs-1 'cd deighton-ar-server && npm install'",
"deploy": "rsync -vr -e ssh --exclude-from .rsync-exclude * $SNAP_DEPLOY_USER@$SNAP_DEPLOY_HOST:deighton-ar-server/ && ssh $SNAP_DEPLOY_USER@$SNAP_DEPLOYHOST 'cd deighton-ar-server && npm install & sudo ./ops restart & sudo ./ops --test restart'",
"test": "jest",
"actor:api": "monzilla 'src/api/**/*.js:src/database/**/*.js' -- babel-node src/api/index.js",
"actor:api:debug": "babel-node --inspect-brk src/api/index.js",

61
server/src/bin/restart.js Normal file
View File

@@ -0,0 +1,61 @@
import child_process from "child_process"
import path from "path"
import os from "os"
import sleep from "sleep-promise"
import { promisify } from "util"
import config from "config"
import chalk from "chalk"
import autobind from "autobind-decorator"
const exec = promisify(child_process.exec)
@autobind
class RestartTool {
constructor(toolName, log) {
this.toolName = toolName
this.log = log
}
async run(argv) {
let userInfo = os.userInfo()
if (userInfo.username !== "root") {
this.log.error("Script must be run as root")
return -1
}
const serviceName = config.get("serviceName.system")
this.log.info(`Restarting ${serviceName}`)
await exec(`systemctl restart ${serviceName}`)
this.log.info("Waiting for service to start...")
await sleep(2000)
await exec(`systemctl status ${serviceName} --no-pager`)
this.log.info(`Service ${serviceName} successfully restarted`)
return 0
}
}
const log = {
info: console.error,
error: function() {
console.error(chalk.red("error:", [...arguments].join(" ")))
},
warning: function() {
console.error(chalk.yellow("warning:", [...arguments].join(" ")))
},
}
const tool = new RestartTool("restart", log)
tool
.run(process.argv.slice(2))
.then((exitCode) => {
process.exitCode = exitCode
})
.catch((err) => {
console.error(err)
})