diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 70120b92fc..6d39d2844d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -92,6 +92,16 @@ then `cd ` into your local copy. ### 3. Install and Build +To develop the Budibase platform you'll need [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/) installed. + +#### Quick method + +`yarn setup` will check that all necessary components are installed and setup the repo for usage. + +#### Manual method + +The following commands can be executed to manually get Budibase up and running (assuming Docker/Docker Compose has been installed). + `yarn` to install project dependencies `yarn bootstrap` will install all budibase modules and symlink them together using lerna. @@ -112,10 +122,17 @@ To run the budibase server and builder in dev mode (i.e. with live reloading): 1. Open a new console 2. `yarn dev` (from root) -3. Access the builder on http://localhost:4001/_builder/ +3. Access the builder on http://localhost:10000/builder This will enable watch mode for both the builder app, server, client library and any component libraries. +### 5. Cleanup + +If you wish to delete all the apps created in development and reset the environment then run the following: + +1. `yarn nuke:docker` will wipe all the Budibase services +2. `yarn dev` will restart all the services + ## Data Storage When you are running locally, budibase stores data on disk using [PouchDB](https://pouchdb.com/), as well as some JSON on local files. After setting up budibase, you can find all of this data in the `~/.budibase` directory. diff --git a/hosting/scripts/setup.js b/hosting/scripts/setup.js new file mode 100755 index 0000000000..c62ac14f29 --- /dev/null +++ b/hosting/scripts/setup.js @@ -0,0 +1,61 @@ +#!/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() diff --git a/package.json b/package.json index 171f9510f3..ac03b4493e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "svelte": "^3.37.0" }, "scripts": { + "setup": "./hosting/scripts/setup.js && yarn && yarn bootstrap && yarn build && yarn dev", "bootstrap": "lerna link && lerna bootstrap", "build": "lerna run build", "initialise": "lerna run initialise", diff --git a/packages/builder/src/components/common/ConfigChecklist.svelte b/packages/builder/src/components/common/ConfigChecklist.svelte index 9652222ba2..b784656d23 100644 --- a/packages/builder/src/components/common/ConfigChecklist.svelte +++ b/packages/builder/src/components/common/ConfigChecklist.svelte @@ -1,22 +1,12 @@