Playing with Gitpod again!
This commit is contained in:
parent
cb7bb334c1
commit
0c3996d268
|
@ -0,0 +1,49 @@
|
|||
gitConfig:
|
||||
core.autocrlf: input
|
||||
|
||||
github:
|
||||
prebuilds:
|
||||
master: true
|
||||
branches: true
|
||||
pullRequests: true
|
||||
pullRequestsFromForks: true
|
||||
addCheck: false
|
||||
addComment: false
|
||||
addBadge: true
|
||||
|
||||
ports:
|
||||
- name: AzuraCast HTTP
|
||||
port: 80
|
||||
onOpen: ignore
|
||||
- name: AzuraCast HTTPS
|
||||
port: 443
|
||||
onOpen: open-browser
|
||||
visibility: public
|
||||
- name: SFTP
|
||||
port: 2022
|
||||
onOpen: ignore
|
||||
- name: MariaDB
|
||||
port: 3306
|
||||
onOpen: ignore
|
||||
- name: Redis
|
||||
port: 6379
|
||||
onOpen: ignore
|
||||
- name: Broadcast Ports
|
||||
port: 8000-8999
|
||||
onOpen: ignore
|
||||
|
||||
tasks:
|
||||
- name: Backend
|
||||
init: |
|
||||
bash docker.sh install-docker
|
||||
bash docker.sh install-docker-compose
|
||||
docker-compose build
|
||||
command: |
|
||||
bash util/setup_gitpod.sh
|
||||
bash docker.sh install-dev
|
||||
gp sync-done install
|
||||
make bash
|
||||
- name: Frontend
|
||||
command: |
|
||||
gp sync-await install
|
||||
make frontend-bash
|
|
@ -0,0 +1,145 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Functions to manage .env files
|
||||
__dotenv=
|
||||
__dotenv_file=
|
||||
__dotenv_cmd=.env
|
||||
|
||||
.env() {
|
||||
REPLY=()
|
||||
[[ $__dotenv_file || ${1-} == -* ]] || .env.--file .env || return
|
||||
if declare -F -- ".env.${1-}" >/dev/null; then
|
||||
.env."$@"
|
||||
return
|
||||
fi
|
||||
return 64
|
||||
}
|
||||
|
||||
.env.-f() { .env.--file "$@"; }
|
||||
|
||||
.env.get() {
|
||||
.env::arg "get requires a key" "$@" &&
|
||||
[[ "$__dotenv" =~ ^(.*(^|$'\n'))([ ]*)"$1="(.*)$ ]] &&
|
||||
REPLY=${BASH_REMATCH[4]%%$'\n'*} && REPLY=${REPLY%"${REPLY##*[![:space:]]}"}
|
||||
}
|
||||
|
||||
.env.parse() {
|
||||
local line key
|
||||
while IFS= read -r line; do
|
||||
line=${line#"${line%%[![:space:]]*}"} # trim leading whitespace
|
||||
line=${line%"${line##*[![:space:]]}"} # trim trailing whitespace
|
||||
if [[ ! "$line" || "$line" == '#'* ]]; then continue; fi
|
||||
if (($#)); then
|
||||
for key; do
|
||||
if [[ $key == "${line%%=*}" ]]; then
|
||||
REPLY+=("$line")
|
||||
break
|
||||
fi
|
||||
done
|
||||
else
|
||||
REPLY+=("$line")
|
||||
fi
|
||||
done <<<"$__dotenv"
|
||||
((${#REPLY[@]}))
|
||||
}
|
||||
|
||||
.env.export() { ! .env.parse "$@" || export "${REPLY[@]}"; }
|
||||
|
||||
.env.set() {
|
||||
.env::file load || return
|
||||
local key saved=$__dotenv
|
||||
while (($#)); do
|
||||
key=${1#+}
|
||||
key=${key%%=*}
|
||||
if .env.get "$key"; then
|
||||
REPLY=()
|
||||
if [[ $1 == +* ]]; then
|
||||
shift
|
||||
continue # skip if already found
|
||||
elif [[ $1 == *=* ]]; then
|
||||
__dotenv=${BASH_REMATCH[1]}${BASH_REMATCH[3]}$1$'\n'${BASH_REMATCH[4]#*$'\n'}
|
||||
else
|
||||
__dotenv=${BASH_REMATCH[1]}${BASH_REMATCH[4]#*$'\n'}
|
||||
continue # delete all occurrences
|
||||
fi
|
||||
elif [[ $1 == *=* ]]; then
|
||||
__dotenv+="${1#+}"$'\n'
|
||||
fi
|
||||
shift
|
||||
done
|
||||
[[ $__dotenv == "$saved" ]] || .env::file save
|
||||
}
|
||||
|
||||
.env.puts() { echo "${1-}" >>"$__dotenv_file" && __dotenv+="$1"$'\n'; }
|
||||
|
||||
.env.generate() {
|
||||
.env::arg "key required for generate" "$@" || return
|
||||
.env.get "$1" && return || REPLY=$("${@:2}") || return
|
||||
.env::one "generate: ouptut of '${*:2}' has more than one line" "$REPLY" || return
|
||||
.env.puts "$1=$REPLY"
|
||||
}
|
||||
|
||||
.env.--file() {
|
||||
.env::arg "filename required for --file" "$@" || return
|
||||
__dotenv_file=$1
|
||||
.env::file load || return
|
||||
(($# < 2)) || .env "${@:2}"
|
||||
}
|
||||
|
||||
.env::arg() { [[ "${2-}" ]] || {
|
||||
echo "$__dotenv_cmd: $1" >&2
|
||||
return 64
|
||||
}; }
|
||||
|
||||
.env::one() { [[ "$2" != *$'\n'* ]] || .env::arg "$1"; }
|
||||
|
||||
.env::file() {
|
||||
local REPLY=$__dotenv_file
|
||||
case "$1" in
|
||||
load)
|
||||
__dotenv=
|
||||
! [[ -f "$REPLY" ]] || __dotenv="$(<"$REPLY")"$'\n' || return
|
||||
;;
|
||||
save)
|
||||
if [[ -L "$REPLY" ]] && declare -F -- realpath.resolved >/dev/null; then
|
||||
realpath.resolved "$REPLY"
|
||||
fi
|
||||
{ [[ ! -f "$REPLY" ]] || cp -p "$REPLY" "$REPLY.bak"; } &&
|
||||
printf %s "$__dotenv" >"$REPLY.bak" && mv "$REPLY.bak" "$REPLY"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Ensure we're in the same directory as this script.
|
||||
cd "$( dirname "${BASH_SOURCE[0]}" )" || exit
|
||||
cd ..
|
||||
|
||||
cp dev.env .env
|
||||
cp azuracast.dev.env azuracast.env
|
||||
|
||||
# Download mkcert
|
||||
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
|
||||
chmod +x mkcert-v*-linux-amd64
|
||||
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
|
||||
|
||||
# Use mkcert to generate a working SSL cert for this install.
|
||||
GITPOD_URL=$(gp url 443)
|
||||
|
||||
mkcrt "$GITPOD_URL" -cert-file ./util/local_ssl/default.crt -key-file ./util/local_ssl/default.key
|
||||
|
||||
# Update env file to provision this URL as the base URL for AzuraCast.
|
||||
.env --file azuracast.env set INIT_BASE_URL="$GITPOD_URL"
|
||||
|
||||
# Set up SSH key from remote env.
|
||||
if [[ -z "$SSH_PUBLIC_KEY" ]]; then
|
||||
mkdir -p ~/.ssh
|
||||
echo $SSH_PUBLIC_KEY > ~/.ssh/id_ed25519.pub
|
||||
chmod 644 ~/.ssh/id_ed25519.pub
|
||||
|
||||
echo $SSH_PRIVATE_KEY > ~/.ssh/id_ed25519
|
||||
chmod 600 ~/.ssh/id_ed25519
|
||||
|
||||
git config --global commit.gpgsign true
|
||||
git config --global gpg.format "ssh"
|
||||
git config --global user.signingkey "~/.ssh/id_ed25519"
|
||||
fi
|
Loading…
Reference in New Issue