budibase/hosting/scripts/setup.js

59 lines
1.7 KiB
JavaScript
Raw Normal View History

#!/usr/bin/env node
const os = require("os")
const exec = require("child_process").exec
const fs = require("fs")
const platform = os.platform()
const windows = platform === "win32"
const mac = platform === "darwin"
const linux = platform === "linux"
function execute(command) {
return new Promise(resolve => {
exec(command, (err, stdout) => resolve(linux ? !!stdout : true))
})
}
async function commandExistsUnix (command) {
const unixCmd = `command -v ${command} 2>/dev/null && { echo >&1 ${command}; exit 0; }`
return execute(command)
}
async function commandExistsWindows (command) {
if (/[\x00-\x1f<>:"|?*]/.test(command)) {
return false
}
return execute(`where ${command}`)
}
function commandExists (command) {
return windows
? commandExistsWindows(command)
: commandExistsUnix(command)
}
async function init() {
const docker = commandExists("docker")
const dockerCompose = commandExists("docker-compose")
if (docker && dockerCompose) {
console.log("Docker installed - continuing.")
return
}
if (mac) {
console.log("Please install docker by visiting: https://docs.docker.com/docker-for-mac/install/")
} else if (windows) {
console.log("Please install docker by visiting: https://docs.docker.com/docker-for-windows/install/")
} else if (linux) {
console.log("Beginning automated linux installation.")
await execute(`./hosting/scripts/linux/get-docker.sh`)
await execute(`./hosting/scripts/linux/get-docker-compose.sh`)
} else {
console.error("Platform unknown - please look online for information about installing docker for our OS.")
}
console.log("Once installation complete please re-run the setup script.")
process.exit(-1)
}
init()