Bring in restart script. Make deploy snap-tool aware.
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
"start": "babel-node src/server.js",
|
"start": "babel-node src/server.js",
|
||||||
"start:prod": "NODE_ENV=production node dist/server.js",
|
"start:prod": "NODE_ENV=production node dist/server.js",
|
||||||
"build": "rm -rf dist && babel src -d dist -s",
|
"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",
|
"test": "jest",
|
||||||
"actor:api": "monzilla 'src/api/**/*.js:src/database/**/*.js' -- babel-node src/api/index.js",
|
"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",
|
"actor:api:debug": "babel-node --inspect-brk src/api/index.js",
|
||||||
|
|||||||
61
server/src/bin/restart.js
Normal file
61
server/src/bin/restart.js
Normal 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)
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user