mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-17 18:25:42 +02:00
96 lines
3.3 KiB
Bash
Executable File
96 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# One-time castlabs EVS setup, so a Mac release never stalls on missing Widevine creds again.
|
|
#
|
|
# EVS signs the packaged app so Widevine DRM works, which is what makes Spotify and Netflix play in
|
|
# the embedded browser. scripts/build-app.sh hard-fails without it rather than shipping a build
|
|
# whose DRM is quietly dead.
|
|
#
|
|
# What this does: creates (or reuses) an EVS account, stores the password in your login keychain,
|
|
# and drops a loader into your shell profile so every future terminal already has it. Run it once.
|
|
#
|
|
# bash scripts/setup-evs.sh
|
|
#
|
|
# The password is read with `read -s`, never passed as an argument, so it stays out of `ps` and
|
|
# your shell history.
|
|
|
|
set -euo pipefail
|
|
|
|
KEYCHAIN_SERVICE="openswarm-evs"
|
|
VENV="$HOME/.openswarm-evs-venv"
|
|
PROFILE="${ZDOTDIR:-$HOME}/.zshrc"
|
|
|
|
echo "==> castlabs EVS setup"
|
|
echo
|
|
|
|
if [[ ! -x "$VENV/bin/python" ]]; then
|
|
echo "installing the castlabs-evs client into $VENV ..."
|
|
python3 -m venv "$VENV"
|
|
"$VENV/bin/pip" install -q --upgrade pip castlabs-evs
|
|
fi
|
|
EVS="$VENV/bin/python -m castlabs_evs.account"
|
|
|
|
read -r -p "EVS account name (an email; use a NEW one if you're creating a fresh account): " ACCOUNT
|
|
read -r -s -p "EVS password (pick a strong one; it is never echoed): " PASSWD
|
|
echo
|
|
echo
|
|
|
|
echo "1) Do you already have an EVS account with that name?"
|
|
echo " [n] no, create one [y] yes, I know the password [r] yes, but reset it"
|
|
read -r -p "> " CHOICE
|
|
|
|
case "$CHOICE" in
|
|
n|N)
|
|
read -r -p "First name: " FIRST
|
|
read -r -p "Last name: " LAST
|
|
read -r -p "Organization: " ORG
|
|
# signup prompts for the emailed code itself, so do NOT ask again afterwards.
|
|
$EVS signup -A "$ACCOUNT" -P "$PASSWD" -E "$ACCOUNT" \
|
|
-F "$FIRST" -L "$LAST" -O "$ORG"
|
|
;;
|
|
r|R)
|
|
$EVS reset -A "$ACCOUNT"
|
|
read -r -p "Confirmation code from your email: " CODE
|
|
$EVS confirm-reset -A "$ACCOUNT" -C "$CODE" -P "$PASSWD"
|
|
;;
|
|
*)
|
|
echo "using the existing account as-is"
|
|
;;
|
|
esac
|
|
|
|
echo
|
|
echo "2) proving the credentials actually work ..."
|
|
if ! EVS_ACCOUNT_NAME="$ACCOUNT" EVS_PASSWD="$PASSWD" $EVS reauth >/dev/null 2>&1; then
|
|
echo " FAILED: EVS rejected that account/password pair. Nothing was saved."
|
|
exit 1
|
|
fi
|
|
echo " authenticated."
|
|
|
|
echo
|
|
echo "3) storing the password in your login keychain ..."
|
|
security delete-generic-password -s "$KEYCHAIN_SERVICE" -a "$ACCOUNT" >/dev/null 2>&1 || true
|
|
security add-generic-password -s "$KEYCHAIN_SERVICE" -a "$ACCOUNT" -w "$PASSWD" -U
|
|
echo " stored (service=$KEYCHAIN_SERVICE account=$ACCOUNT)"
|
|
|
|
MARK="# openswarm: castlabs EVS creds for signed Mac releases"
|
|
if ! grep -qF "$MARK" "$PROFILE" 2>/dev/null; then
|
|
echo "4) adding a loader to $PROFILE ..."
|
|
{
|
|
echo ""
|
|
echo "$MARK"
|
|
echo "export EVS_ACCOUNT_NAME='$ACCOUNT'"
|
|
echo "export EVS_PASSWD=\"\$(security find-generic-password -s $KEYCHAIN_SERVICE -a '$ACCOUNT' -w 2>/dev/null)\""
|
|
echo "export APPLE_TEAM_ID=Y26NUZH4NG"
|
|
} >> "$PROFILE"
|
|
echo " added."
|
|
else
|
|
echo "4) $PROFILE already loads them; leaving it alone."
|
|
fi
|
|
|
|
echo
|
|
echo "Done. Open a NEW terminal, then:"
|
|
echo " GH_TOKEN=\$(gh auth token) bash publish.sh"
|
|
echo
|
|
echo "Windows CI keeps its own copy, so if you changed the password, also run:"
|
|
echo " gh secret set EVS_ACCOUNT_NAME --body '$ACCOUNT'"
|
|
echo " gh secret set EVS_PASSWD --body '<the password you just chose>'"
|