2023-07-03 10:50:39 +03:00
#!/bin/sh
# Function to print error message and exit
error_exit( ) {
echo " $1 " >& 2
exit 1
}
# Function to replace variables in files
replace_in_file( ) {
local file = " $1 "
local search = " $2 "
local replace = " $3 "
if [ " $( uname) " = "Darwin" ] ; then
# macOS
sed -i "" " s| ${ search } | ${ replace } | " " $file "
else
# Linux/Unix and Windows (Git Bash)
sed -i " s| ${ search } | ${ replace } | " " $file "
fi
}
# Step 2: Copy the .XXXXX_env files if they don't exist
2023-08-19 14:32:16 +03:00
if [ ! -f backend/.env ] ; then
2023-07-17 09:57:27 +03:00
echo "Copying backend-core .env example file..."
2023-08-19 14:32:16 +03:00
cp .backend_env.example backend/.env
2023-07-03 10:50:39 +03:00
fi
if [ ! -f frontend/.env ] ; then
echo "Copying frontend .env example file..."
cp .frontend_env.example frontend/.env
fi
# Step 3: Ask the user for environment variables and update .env files
# only if they haven't been set.
2023-08-19 14:32:16 +03:00
# Update backend/.env
if grep -q "SUPABASE_URL=<change-me>" backend/.env; then
2023-07-03 10:50:39 +03:00
echo "SUPABASE_URL can be found in your Supabase dashboard under Settings > API."
2023-08-19 14:32:16 +03:00
SUPABASE_URL = $( gum input --placeholder "Enter SUPABASE_URL for backend" )
replace_in_file backend/.env "SUPABASE_URL=.*" " SUPABASE_URL= ${ SUPABASE_URL } "
2023-07-03 10:50:39 +03:00
fi
2023-08-19 14:32:16 +03:00
if grep -q "SUPABASE_SERVICE_KEY=<change-me>" backend/.env; then
2023-07-03 10:50:39 +03:00
echo "SUPABASE_SERVICE_KEY can be found in your Supabase dashboard under Settings > API. Use the anon public key found in the Project API keys section."
2023-08-19 14:32:16 +03:00
SUPABASE_SERVICE_KEY = $( gum input --placeholder "Enter SUPABASE_SERVICE_KEY for backend" )
replace_in_file backend/.env "SUPABASE_SERVICE_KEY=.*" " SUPABASE_SERVICE_KEY= ${ SUPABASE_SERVICE_KEY } "
2023-07-03 10:50:39 +03:00
fi
2023-08-19 14:32:16 +03:00
if grep -q "PG_DATABASE_URL=<change-me>" backend/.env; then
2023-08-02 00:03:47 +03:00
echo "PG_DATABASE_URL can be found in your Postgres provider Settings > API."
PG_DATABASE_URL = $( gum input --placeholder "Enter PG_DATABASE_URL for backend" )
replace_in_file backend/.env "PG_DATABASE_URL=.*" " PG_DATABASE_URL= ${ PG_DATABASE_URL } "
fi
2023-08-19 14:32:16 +03:00
if grep -q "OPENAI_API_KEY=<change-me>" backend/.env; then
2023-07-03 10:50:39 +03:00
echo "OPENAI_API_KEY is the API key from OpenAI, if you are using OpenAI services."
2023-08-19 14:32:16 +03:00
OPENAI_API_KEY = $( gum input --placeholder "Enter OPENAI_API_KEY for backend" )
replace_in_file backend/.env "OPENAI_API_KEY=.*" " OPENAI_API_KEY= ${ OPENAI_API_KEY } "
2023-07-03 10:50:39 +03:00
fi
2023-08-19 14:32:16 +03:00
if grep -q "JWT_SECRET_KEY=<change-me>" backend/.env; then
2023-07-03 10:50:39 +03:00
echo "JWT_SECRET_KEY can be found in your Supabase project dashboard under Settings > API > JWT Settings > JWT Secret."
2023-08-19 14:32:16 +03:00
JWT_SECRET_KEY = $( gum input --placeholder "Enter JWT_SECRET_KEY for backend" )
replace_in_file backend/.env "JWT_SECRET_KEY=.*" " JWT_SECRET_KEY= ${ JWT_SECRET_KEY } "
2023-07-03 10:50:39 +03:00
fi
# Update frontend/.env using the same SUPABASE_URL and SUPABASE_SERVICE_KEY
if grep -q "NEXT_PUBLIC_SUPABASE_URL=<change-me>" frontend/.env; then
replace_in_file frontend/.env "NEXT_PUBLIC_SUPABASE_URL=.*" " NEXT_PUBLIC_SUPABASE_URL= ${ SUPABASE_URL } "
fi
if grep -q "NEXT_PUBLIC_SUPABASE_ANON_KEY=<change-me>" frontend/.env; then
replace_in_file frontend/.env "NEXT_PUBLIC_SUPABASE_ANON_KEY=.*" " NEXT_PUBLIC_SUPABASE_ANON_KEY= ${ SUPABASE_SERVICE_KEY } "
fi
# Step 4: Run the migration scripts (this is supposed to be done manually as per the instructions)
2023-07-03 12:11:29 +03:00
echo "Running the migration scripts..."
2023-09-27 10:28:59 +03:00
./migration.sh || error_exit "Error running migration scripts."
2023-07-03 10:50:39 +03:00
# Step 5: Launch the app
echo "Launching the app..."
2023-09-27 10:28:59 +03:00
docker compose up --build || error_exit "Error running docker compose."
2023-07-03 10:50:39 +03:00
# Final message
echo "Navigate to localhost:3000 in your browser to access the app."