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

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)
})