Skip to content

Commit dcedbf4

Browse files
committed
Revert "Install Procedures (#589)"
This reverts commit 1178cd3.
1 parent 48b80d6 commit dcedbf4

File tree

11 files changed

+666
-570
lines changed

11 files changed

+666
-570
lines changed

.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ DB_PORT=5432
2222
POSTGRES_USER='user'
2323
POSTGRES_PASSWORD='password'
2424
POSTGRES_DATABASE='socialpredict_db'
25-
POSTGRES_VOLUME='pgdata'
2625

2726
FRONTEND_CONTAINER_NAME=socialpredict-frontend-container
2827
FRONTEND_IMAGE_NAME=ghcr.io/openpredictionmarkets/socialpredict-frontend
@@ -38,5 +37,6 @@ NGINX_PORT=80
3837
DOMAIN='domain.com'
3938
DOMAIN_URL='domain.com'
4039
API_URL='domain.com'
40+
EMAIL='john@doe.com'
4141

4242
TRAEFIK_CONTAINER_NAME=socialpredict-traefik-container

SocialPredict

Lines changed: 130 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,8 @@
1-
#!/usr/bin/env bash
1+
#!/bin/bash
22

3-
set -euo pipefail
3+
set -e # Stop script on error
4+
set -a # Automatically export all variables
45

5-
# Colors for output
6-
RED='\033[0;31m'
7-
GREEN='\033[0;32m'
8-
YELLOW='\033[1;33m'
9-
NC='\033[0m' # No Color
10-
11-
# Function to print colored output
12-
print_status() {
13-
echo -e "${GREEN}[INFO]${NC} $1"
14-
}
15-
16-
print_warning() {
17-
echo -e "${YELLOW}[WARNING]${NC} $1"
18-
}
19-
20-
print_error() {
21-
echo -e "${RED}[ERROR]${NC} $1"
22-
}
236

247
# Determine script's directory
258
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
@@ -32,100 +15,144 @@ fi
3215

3316
# --- Main SocialPredict Functionality ---
3417

35-
# Function to check if a command exists
36-
command_exists() {
37-
command -v "$1" &> /dev/null 2>&1
38-
}
18+
# Ensure .env file exists before resolving path
19+
if [ ! -f "$SCRIPT_DIR/.env" ]; then
20+
echo ".env file not found."
3921

40-
# Initial Checks
41-
# Check if docker compose is installed. Fails if not found.
42-
# Check if .env file exists. Fails if not found.
43-
check_docker() {
44-
print_status "Checking that docker compose is installed..."
45-
if command_exists docker && docker compose version &> /dev/null; then
46-
print_status "Found docker compose."
47-
elif command_exists docker-compose; then
48-
print_warning "Found docker-compose V1. Please update to V2."
49-
print_warning "https://docs.docker.com/compose/migrate/"
50-
exit 1
22+
if [ -f "$SCRIPT_DIR/scripts/dev/env_writer_dev.sh" ]; then
23+
echo "Initializing .env file using env_writer_dev.sh (first-run only)..."
24+
export CALLED_FROM_SOCIALPREDICT=yes
25+
SCRIPT_INTERACTIVE=true source "$SCRIPT_DIR/scripts/dev/env_writer_dev.sh"
26+
unset CALLED_FROM_SOCIALPREDICT
5127
else
52-
print_error "Docker Compose is not installed."
28+
echo "Cannot continue. .env file is missing and env_writer_dev.sh was not found."
5329
exit 1
5430
fi
31+
fi
32+
33+
# Calculate the absolute path to the .env file
34+
ENV_PATH="$( readlink -f "$SCRIPT_DIR/.env" )"
35+
ENV_FILE="--env-file $ENV_PATH"
36+
37+
# Function to check if a command exists
38+
command_exists() {
39+
command -v "$1" &> /dev/null 2>&1
5540
}
5641

57-
init() {
58-
check_docker
59-
if [ ! -f "$SCRIPT_DIR/.env" ]; then
60-
print_status "Looks like this is the first time running SocialPredict."
61-
print_warning "Please run './SocialPredict install' to initialize the application."
62-
exit 1
42+
# Function to check if Docker && Docker Compose are installed
43+
docker_check() {
44+
if command_exists docker && docker compose version &> /dev/null; then
45+
echo "Found docker compose."
46+
COMPOSE='docker compose'
47+
elif command_exists docker-compose; then
48+
echo "Error: Found docker-compose V1. Please update to V2."
49+
echo "https://docs.docker.com/compose/migrate/"
50+
exit 1
51+
52+
else
53+
echo "Error: Docker Compose is not installed."
54+
exit 1
55+
fi
56+
}
57+
58+
# Function to Source the .env file
59+
source_env() {
60+
if [ -f "${SCRIPT_DIR}/.env" ]; then
61+
source "${SCRIPT_DIR}/.env"
6362
else
64-
print_status "Loading configuration from .env file"
65-
source "$SCRIPT_DIR/.env"
63+
echo "Error: .env file not found."
64+
exit 1
6665
fi
6766
}
6867

69-
print_help() {
70-
cat <<EOF
71-
Usage: ./SocialPredict COMMAND
72-
73-
Commands:
74-
install Initialize SocialPredict
75-
up Start SocialPredict containers
76-
down Stop SocialPredict containers
77-
exec Execute command on SocialPredict containers
78-
backup Backup operations on SocialPredict
68+
if [ "$1" = "install" ]; then
69+
# Echo initial message
70+
echo "### Building and Deploying SocialPredict ..."
71+
echo
72+
sleep 1;
73+
74+
# Check that docker is installed
75+
echo "### Checking that docker compose is installed ..."
76+
docker_check
77+
echo
78+
sleep 1;
79+
80+
# Ask user input for Application Environment
81+
echo "### Select Application Environment: "
82+
PS3='Please enter your choice: '
83+
options=("Development" "Localhost" "Production" "Quit")
84+
select opt in "${options[@]}"
85+
do
86+
case $opt in
87+
"Development")
88+
echo
89+
echo "Building for Development"
90+
echo
91+
export CALLED_FROM_SOCIALPREDICT=yes
92+
source "$SCRIPT_DIR/scripts/dev.sh"
93+
unset CALLED_FROM_SOCIALPREDICT
94+
break
95+
;;
96+
"Localhost")
97+
echo
98+
echo "Building for Localhost"
99+
echo
100+
export CALLED_FROM_SOCIALPREDICT=yes
101+
source "$SCRIPT_DIR/scripts/localhost.sh"
102+
unset CALLED_FROM_SOCIALPREDICT
103+
break
104+
;;
105+
"Production")
106+
echo
107+
echo "Building for Production"
108+
echo
109+
export CALLED_FROM_SOCIALPREDICT=yes
110+
source "$SCRIPT_DIR/scripts/prod.sh"
111+
unset CALLED_FROM_SOCIALPREDICT
112+
break
113+
;;
114+
"Quit")
115+
break
116+
;;
117+
*) echo "Invalid option $REPLY";;
118+
esac
119+
done
120+
fi
79121

80-
Run './SocialPredict COMMAND --help' for more information on a command.
122+
# Run Docker Exec
123+
if [ "$1" = "exec" ]; then
124+
source_env
125+
export CALLED_FROM_SOCIALPREDICT=yes
126+
if [ -z "$3" ]; then
127+
source "$SCRIPT_DIR/scripts/docker-commands.sh" exec "$2"
128+
else
129+
source "$SCRIPT_DIR/scripts/docker-commands.sh" exec "$2" "$3"
130+
fi
131+
unset CALLED_FROM_SOCIALPREDICT
132+
fi
81133

82-
For more help on how to use SocialPredict, head to https://github.com/openpredictionmarkets/socialpredict/
83-
EOF
84-
}
134+
# Run docker compose up
135+
if [ "$1" = "up" ]; then
136+
source_env
137+
export CALLED_FROM_SOCIALPREDICT=yes
138+
source "$SCRIPT_DIR/scripts/docker-commands.sh" up
139+
unset CALLED_FROM_SOCIALPREDICT
140+
fi
85141

86-
COMMAND="${1:-"--help"}"
87-
case "$COMMAND" in
88-
install)
89-
check_docker
90-
shift
91-
export CALLED_FROM_SOCIALPREDICT=yes
92-
source "${SCRIPT_DIR}/scripts/install.sh"
93-
unset CALLED_FROM_SOCIALPREDICT
94-
;;
95-
up)
96-
init
97-
export CALLED_FROM_SOCIALPREDICT=yes
98-
source "${SCRIPT_DIR}/scripts/docker-commands.sh" up
142+
# Run docker compose down
143+
if [ "$1" = "down" ]; then
144+
source_env
145+
export CALLED_FROM_SOCIALPREDICT=yes
146+
source "$SCRIPT_DIR/scripts/docker-commands.sh" down
99147
unset CALLED_FROM_SOCIALPREDICT
100-
;;
101-
down)
102-
init
103-
export CALLED_FROM_SOCIALPREDICT=yes
104-
source "${SCRIPT_DIR}/scripts/docker-commands.sh" down
105-
unset CALLED_FROM_SOCIALPREDICT
106-
;;
107-
exec)
108-
init
109-
export CALLED_FROM_SOCIALPREDICT=yes
110-
shift
111-
source "${SCRIPT_DIR}/scripts/docker-commands.sh" exec "$@"
112-
unset CALLED_FROM_SOCIALPREDICT
113-
;;
114-
backup)
115-
init
116-
export CALLED_FROM_SOCIALPREDICT=yes
117-
shift
118-
# Pass remaining args to the backup script, e.g. --save / --list / --restore <file>
119-
source "${SCRIPT_DIR}/scripts/backup/db_backup.sh" "$@"
120-
unset CALLED_FROM_SOCIALPREDICT
121-
;;
122-
--help|-h|help)
123-
print_help
124-
;;
125-
*)
126-
echo "Unknown command: $COMMAND"
127-
echo
128-
print_help
129-
exit 1
130-
;;
131-
esac
148+
fi
149+
150+
# Database backup/restore
151+
if [ "$1" = "backup" ]; then
152+
source_env
153+
export CALLED_FROM_SOCIALPREDICT=yes
154+
shift
155+
# Pass remaining args to the backup script, e.g. --save / --list / --restore <file> / --restore-latest
156+
source "$SCRIPT_DIR/scripts/backup/db_backup.sh" "$@"
157+
unset CALLED_FROM_SOCIALPREDICT
158+
fi

scripts/dev.sh

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
#!/bin/bash
2+
3+
# --- Platform Compatibility, Linux vs. Apple Silicon ---
4+
__SP_DEV_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5+
__SP_ROOT_DIR="${SOCIALPREDICT_ROOT:-$(cd "${__SP_DEV_DIR}/.." && pwd)}"
6+
7+
source "${__SP_ROOT_DIR}/scripts/lib/arch.sh"
8+
echo "== dev build platform: ${FORCE_PLATFORM:-default} =="
9+
10+
# Cross-platform "sed -i" (GNU vs BSD/macOS)
11+
if sed --version >/dev/null 2>&1; then
12+
# GNU sed
13+
SED_INPLACE=(sed -i -e)
14+
else
15+
# BSD sed (macOS) requires an empty backup extension: -i ''
16+
SED_INPLACE=(sed -i '' -e)
17+
fi
18+
19+
# (existing) set local image names for dev
20+
export BACKEND_IMAGE_NAME=${BACKEND_IMAGE_NAME:-socialpredict-dev-backend}
21+
export FRONTEND_IMAGE_NAME=${FRONTEND_IMAGE_NAME:-socialpredict-dev-frontend}
22+
23+
# --- Main SocialPredict Functionality ---
24+
25+
# Make sure the script can only be run via SocialPredict Script
26+
[ -z "$CALLED_FROM_SOCIALPREDICT" ] && { echo "Not called from SocialPredict"; exit 42; }
27+
28+
# Make sure the script can only be run via SocialPredict Script
29+
[ -z "$CALLED_FROM_SOCIALPREDICT" ] && { echo "Not called from SocialPredict"; exit 42; }
30+
31+
init_env() {
32+
# Create .env file
33+
cp "${__SP_ROOT_DIR}/.env.example" "${__SP_ROOT_DIR}/.env"
34+
35+
# Update APP_ENV
36+
"${SED_INPLACE[@]}" "s|^APP_ENV=.*|APP_ENV='development'|" "${__SP_ROOT_DIR}/.env"
37+
38+
# Add OS-specific POSTGRES_VOLUME
39+
OS=$(uname -s)
40+
if [[ "$OS" == "Darwin" ]]; then
41+
echo "POSTGRES_VOLUME=pgdata" >> "${__SP_ROOT_DIR}/.env"
42+
else
43+
echo "POSTGRES_VOLUME=../data/postgres" >> "${__SP_ROOT_DIR}/.env"
44+
fi
45+
46+
# Change the Domain setting:
47+
"${SED_INPLACE[@]}" "s|^DOMAIN=.*|DOMAIN='localhost'|" "${__SP_ROOT_DIR}/.env"
48+
"${SED_INPLACE[@]}" "s|^DOMAIN_URL=.*|DOMAIN_URL='http://localhost'|" "${__SP_ROOT_DIR}/.env"
49+
50+
# Remove unnecessary lines from .env
51+
"${SED_INPLACE[@]}" "/^TRAEFIK_CONTAINER_NAME=.*/d" "${__SP_ROOT_DIR}/.env"
52+
"${SED_INPLACE[@]}" "/^EMAIL=.*/d" "${__SP_ROOT_DIR}/.env"
53+
54+
# Update Image Names
55+
"${SED_INPLACE[@]}" "s|^BACKEND_IMAGE_NAME=.*|BACKEND_IMAGE_NAME=${BACKEND_IMAGE_NAME}|" "${__SP_ROOT_DIR}/.env"
56+
"${SED_INPLACE[@]}" "s|^FRONTEND_IMAGE_NAME=.*|FRONTEND_IMAGE_NAME=${FRONTEND_IMAGE_NAME}|" "${__SP_ROOT_DIR}/.env"
57+
}
58+
59+
if [[ ! -f "${__SP_ROOT_DIR}/.env" ]]; then
60+
echo "### First time running the script ..."
61+
echo "Let's initialize the application ..."
62+
sleep 1
63+
init_env
64+
echo "Application initialized successfully."
65+
else
66+
read -r -p ".env file found. Do you want to re-create it? (y/N) " DECISION
67+
if [[ "$DECISION" = "Y" || "$DECISION" = "y" ]]; then
68+
sleep 1
69+
echo "Re-creating env file ..."
70+
sleep 1
71+
init_env
72+
echo ".env file re-created successfully."
73+
fi
74+
fi
75+
76+
echo
77+
78+
sleep 1;
79+
80+
check_image() {
81+
local image_name=$1
82+
local dockerfile=$2
83+
local directory=$3
84+
85+
echo "### Checking for $image_name Image ..."
86+
if docker image inspect "$image_name" > /dev/null 2>&1; then
87+
read -r -p "$image_name Image Found. Do you want to re-build it? (y/N) " decision
88+
if [[ "$decision" =~ ^[Yy]$ ]]; then
89+
echo "Deleting Image ..."
90+
docker rmi "$image_name"
91+
echo "Image Deleted."
92+
build_image
93+
else
94+
:
95+
fi
96+
else
97+
echo "$image_name Image Not Found."
98+
build_image
99+
fi
100+
}
101+
102+
build_image() {
103+
echo "Building $image_name now."
104+
docker build --no-cache -t "$image_name" -f "$dockerfile" "$directory"
105+
echo "$image_name Image Built."
106+
}
107+
108+
echo "### Searching for Docker Images ..."
109+
sleep 1;
110+
111+
BACKEND_IMAGE_NAME="${BACKEND_IMAGE_NAME:-socialpredict-dev-backend}"
112+
FRONTEND_IMAGE_NAME="${FRONTEND_IMAGE_NAME:-socialpredict-dev-frontend}"
113+
114+
DIRECTORY="${__SP_ROOT_DIR}"
115+
BACKEND_DOCKERFILE="${__SP_ROOT_DIR}/docker/backend/Dockerfile.dev"
116+
FRONTEND_DOCKERFILE="${__SP_ROOT_DIR}/docker/frontend/Dockerfile.dev"
117+
118+
check_image "$BACKEND_IMAGE_NAME" "${BACKEND_DOCKERFILE}" "${DIRECTORY}"
119+
check_image "$FRONTEND_IMAGE_NAME" "${FRONTEND_DOCKERFILE}" "${DIRECTORY}"
120+
121+
echo
122+
sleep 1;
123+
124+
echo "Images built."
125+
echo "Use "./SocialPredict up" to start the containers"
126+
echo "And "./SocialPredict down" to stop them."

0 commit comments

Comments
 (0)