Make it (a tiny bit) easier to run your own collab (#9557)

* Allow creating channels when seeding
* Allow configuring a custom `SEED_PATH`
* Seed the database when creating/migrating it so you don't need a
  separate step for this.

Release Notes:

- N/A
This commit is contained in:
Conrad Irwin 2024-03-20 21:00:02 -06:00 committed by GitHub
parent 1062c5bd26
commit ac4c6c60f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 246 additions and 177 deletions

View file

@ -1,18 +1,12 @@
#!/usr/bin/env bash
echo "installing foreman..."
which foreman > /dev/null || brew install foreman
echo "creating database..."
script/sqlx database create
echo "migrating database..."
cargo run -p collab -- migrate
echo "seeding database..."
script/seed-db
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
echo "Linux dependencies..."
script/linux
else
echo "installing foreman..."
which foreman > /dev/null || brew install foreman
fi
echo "creating database..."
script/sqlx database create

View file

@ -2,6 +2,9 @@
set -e
# install the wasm toolchain
rustup target add wasm32-wasi
# if sudo is not installed, define an empty alias
maysudo=$(command -v sudo || command -v doas || true)
@ -27,6 +30,8 @@ fi
dnf=$(command -v dnf || true)
if [[ -n $dnf ]]; then
deps=(
gcc
g++
alsa-lib-devel
fontconfig-devel
wayland-devel
@ -35,6 +40,10 @@ if [[ -n $dnf ]]; then
libzstd-devel
vulkan-loader
)
# libxkbcommon-x11-devel is in the crb repo
$maysudo "$dnf" config-manager --set-enabled crb
$maysudo "$dnf" install epel-release epel-next-release
$maysudo "$dnf" install -y "${deps[@]}"
exit 0
fi

View file

@ -1,4 +1,4 @@
#!/bin/bash
set -e
cargo run --quiet --package=collab --bin seed -- $@
cargo run -p collab migrate

View file

@ -19,16 +19,9 @@ OPTIONS
const { spawn, execFileSync } = require("child_process");
const assert = require("assert");
const defaultUsers = require("../crates/collab/.admins.default.json");
let users = defaultUsers;
try {
const customUsers = require("../crates/collab/.admins.json");
assert(customUsers.length > 0);
assert(customUsers.every((user) => typeof user === "string"));
users = customUsers.concat(
defaultUsers.filter((user) => !customUsers.includes(user)),
);
} catch (_) {}
const users = require(
process.env.SEED_PATH || "../crates/collab/seed.default.json",
).admins;
const RESOLUTION_REGEX = /(\d+) x (\d+)/;
const DIGIT_FLAG_REGEX = /^--?(\d+)$/;