#!/bin/env fish begin set -l domain sync set -l dir (status dirname) set -l source "$dir/docker-compose.overrides.yml" source "$dir/../service.fish" function installSW -V dir -V source set -l root (getServiceRoot $argv) initializeServiceInstallation $argv sudo cp \ "$dir/"{docker-compose.{base,overrides}.yml,.dockerignore,Dockerfile,public-url.patch} \ "$root" sudo cp -r "$dir/init" "$root" installDockerService $argv end function configureSW -V dir -V domain set -l overrides (getServiceOverrides $argv) set -l envKey ".services.sync-server.environment" set -l url https://$domain.nuth.ch/firefox set databases sync SYNCSTORAGE \ token TOKENSERVER for variable in masterSecret metricsSecret syncPW tokenPW set $variable (nix-shell -p keepassxc --run "keepassxc-cli generate --length 64") end sudo SECRET="$masterSecret" yq -i "$envKey.SYNC_MASTER_SECRET = env(SECRET)" "$overrides" sudo SECRET="$metricsSecret" yq -i "$envKey.SYNC_TOKENSERVER__FXA_METRICS_HASH_SECRET = env(SECRET)" "$overrides" sudo URL=$url yq -i "$envKey.SYNC_PUBLIC_URL = env(URL)" "$overrides" sudo URL=$url yq -i ".services.token-db.environment.SYNC_PUBLIC_URL = env(URL)" "$overrides" configureDockerService $argv for i in $(seq 1 2 (count $databases)) set -l prefix $databases[$i] set -l section $databases[(math "$i + 1")] set -l pwVar "$prefix""PW" set -l pw $$pwVar set -l dbEnv ".services.$prefix-db.environment" set -l db (yq "$dbEnv.MARIADB_DATABASE" "$overrides") set -l user (yq "$dbEnv.MARIADB_USER" "$overrides") sudo PW=$pw yq -i "$dbEnv.MARIADB_PASSWORD = env(PW)" "$overrides" sudo CONNECTION="mysql://$user:$pw@$prefix-db/$db" yq -i ".services.sync-server.environment.SYNC_"$section"__DATABASE_URL = env(CONNECTION)" "$overrides" end end function getServiceServers -V domain printf "$domain" "" end function getServiceLocations -V domain printf "%s\0" "sync-server" /firefox/ "Firefox Sync" end function getServiceLocationConfig -a domain s location -V service -V flood getServiceDefaultProxy $argv --path "/" end runInstaller --force $argv end