Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.pdm-python
.venv
__pycache__
steam
starbound
/steam
/starbound
4 changes: 4 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ ENV HOME=/home/$USER
ENV STARBOUND_INSTALL_DIR=$HOME/starbound
ENV STARBOUND_MODS_DIR=$STARBOUND_INSTALL_DIR/mods
ENV STARBOUND_APP_ID=211820
ENV STARBOUND_PACKED_FILE_PATH=assets/packed.pak
ENV OPEN_STARBOUND_VERSION_FILE=$STARBOUND_INSTALL_DIR/open_starbound_version.txt
ENV OPEN_STARBOUND_GITHUB_REPO_NAME=OpenStarbound/OpenStarbound
ENV OPEN_STARBOUND_SERVER_ASSET_NAME=OpenStarbound-Linux-Server.zip

# Install dependencies
ARG DEBIAN_FRONTEND=noninteractive
Expand Down
75 changes: 0 additions & 75 deletions container-scripts/check_update.py

This file was deleted.

27 changes: 27 additions & 0 deletions container-scripts/constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import logging
import os
import sys

log = logging.getLogger(__name__)


def _get_env_var(var_name: str, fallback: str | None = None) -> str:
var = os.getenv(var_name, fallback)
if var is None:
log.error(f"{var_name} environment variable is not set. Exiting...")
sys.exit(1)
return var


STEAM_USER = _get_env_var("STEAM_USER")
STARBOUND_INSTALL_DIR = _get_env_var("STARBOUND_INSTALL_DIR")
STARBOUND_MODS_DIR = _get_env_var("STARBOUND_MODS_DIR")
STARBOUND_APP_ID = _get_env_var("STARBOUND_APP_ID")
STARBOUND_PACKED_FILE_PATH = _get_env_var("STARBOUND_PACKED_FILE_PATH")
OPEN_STARBOUND_VERSION_FILE = _get_env_var("OPEN_STARBOUND_VERSION_FILE")
OPEN_STARBOUND_GITHUB_REPO_NAME = _get_env_var("OPEN_STARBOUND_GITHUB_REPO_NAME")
OPEN_STARBOUND_SERVER_ASSET_NAME = _get_env_var("OPEN_STARBOUND_SERVER_ASSET_NAME")
WORKSHOP_COLLECTION_IDS = _get_env_var("WORKSHOP_COLLECTION_IDS", "").split()
WORKSHOP_ITEM_IDS = _get_env_var("WORKSHOP_ITEM_IDS", "").split()
USE_OPEN_STARBOUND = _get_env_var("USE_OPEN_STARBOUND", "false").lower() == "true"
CLEANUP_ORPHANS = _get_env_var("CLEANUP_ORPHANS", "false").lower() == "true"
95 changes: 0 additions & 95 deletions container-scripts/download_workshop_items.py

This file was deleted.

77 changes: 32 additions & 45 deletions container-scripts/main.py
Original file line number Diff line number Diff line change
@@ -1,68 +1,55 @@
import logging
import os
import sys

from download_workshop_items import download_workshop_items
from login import check_login, login
from start_server import start_server
from update_starbound import update_starbound
from constants import USE_OPEN_STARBOUND, WORKSHOP_COLLECTION_IDS, WORKSHOP_ITEM_IDS
from utils.open_starbound import update_open_starbound
from utils.starbound import start_server, switch_starbound_distribution
from utils.steam.auth import check_login, login
from utils.steam.update import ensure_starbound_packed_pak, update_starbound
from utils.steam.workshop import download_workshop_items

log = logging.getLogger(__name__)


def _get_env_var(var_name: str, fallback: str | None = None) -> str:
var = os.getenv(var_name, fallback)
if var is None:
log.error(f"{var_name} environment variable is not set. Exiting...")
sys.exit(1)
return var


def main(steam_user: str, should_login: bool = False) -> None:
def main(should_login: bool = False) -> None:
if should_login:
login(steam_user=steam_user)
login()
else:
# Required environment variables
starbound_app_id = _get_env_var("STARBOUND_APP_ID")
starbound_install_dir = _get_env_var("STARBOUND_INSTALL_DIR")
starbound_mods_dir = _get_env_var("STARBOUND_MODS_DIR")
# Check if the user is logged in
check_login()

# Optional environment variables
cleanup = _get_env_var("CLEANUP", "false").lower() == "true"
workshop_collections = _get_env_var("WORKSHOP_COLLECTION_IDS", "").split()
workshop_items = _get_env_var("WORKSHOP_ITEM_IDS", "").split()
if USE_OPEN_STARBOUND:
log.info("Using OpenStarbound server.")

# Check if the user is logged in
check_login(steam_user=steam_user)
# Switch to Open Starbound distribution
switch_starbound_distribution(target_distribution="open")
update_open_starbound()

# Download the packed.pak file from Steam
ensure_starbound_packed_pak()
else:
log.info("Using Steam Starbound server.")

# Switch to Steam Starbound distribution
switch_starbound_distribution(target_distribution="steam")

# Check if the user is logged in
check_login()

# Download or update Starbound server
update_starbound(
install_dir=starbound_install_dir,
steam_user=steam_user,
app_id=starbound_app_id,
)
# Download or update Starbound server
update_starbound()

# Download or update workshop items
download_workshop_items(
steam_user=steam_user,
starbound_app_id=starbound_app_id,
starbound_mods_dir=starbound_mods_dir,
workshop_collection_ids=workshop_collections,
workshop_item_ids=workshop_items,
cleanup=cleanup,
)
if WORKSHOP_COLLECTION_IDS or WORKSHOP_ITEM_IDS:
download_workshop_items()

# Start the Starbound server
start_server(starbound_install_dir=starbound_install_dir)
start_server()


if __name__ == "__main__":
steam_user = _get_env_var("STEAM_USER")
if not steam_user:
log.error("STEAM_USER environment variable is not set. Exiting...")
sys.exit(1)
should_login = len(sys.argv) > 1 and sys.argv[1] == "login"

logging.basicConfig(level=logging.INFO)

main(steam_user=steam_user, should_login=should_login)
main(should_login=should_login)
12 changes: 0 additions & 12 deletions container-scripts/start_server.py

This file was deleted.

53 changes: 0 additions & 53 deletions container-scripts/update_starbound.py

This file was deleted.

Loading