From 2dd622db7362fce3859c896818ba2774b0ec779f Mon Sep 17 00:00:00 2001 From: Nick Yeoman Date: Fri, 26 Jul 2024 00:27:20 -0700 Subject: [PATCH] builder looks like it's working --- _builder/dc-env.sh | 32 ++++++++++++++++++++++++++------ _builder/dc-new.sh | 3 +-- _builder/extends-new.sh | 3 +-- _builder/se-new.sh | 12 ++++++------ builder.bash | 3 +-- stashapp/docker-compose.yml | 26 ++++++++++++-------------- stashapp/sample-extends.yml | 12 ++++-------- stashapp/sample.env | 22 ++++++++++------------ 8 files changed, 61 insertions(+), 52 deletions(-) diff --git a/_builder/dc-env.sh b/_builder/dc-env.sh index f02fdd1..a836d72 100644 --- a/_builder/dc-env.sh +++ b/_builder/dc-env.sh @@ -11,13 +11,33 @@ process_env_vars() { var_name="${env_var%%=*}" # Variable name var_value="${env_var#*=}" # Variable value - # Handle variables with and without default values - if [[ "$var_value" == *'${'*:*'}'* ]]; then - # For variables with default values - modified_var="${var_name}=\${${APP_NAME}_${var_value#\$\{}" + # Check if the variable value contains a reference to another variable with the format ${VAR_NAME:-default} + if [[ "$var_value" == *'${'*':'*'}'* ]]; then + # Extract the variable inside the ${} braces + ref_var="${var_value#\$\{}" + ref_var="${ref_var%%[:-]*}" + + # Extract the default value part + default_value="${var_value##*:-}" + default_value="${default_value%\}}" + + # Check if the reference variable already contains APP_NAME_ prefix + if [[ "$ref_var" == ${APP_NAME}_* ]]; then + # If it already contains the prefix, use it as is + modified_var="${var_name}=\${${ref_var}:-${default_value}}" + else + # If not, add the APP_NAME_ prefix + modified_var="${var_name}=\${${APP_NAME}_${ref_var}:-${default_value}}" + fi else - # For variables without default values - modified_var="${var_name}=\${${APP_NAME}_${var_name}:-${var_value}}" + # For variables without ${VAR_NAME} references + if [[ "$var_name" == ${APP_NAME}_* ]]; then + # If the variable name already starts with APP_NAME_, do not prefix again + modified_var="${var_name}=${var_value}" + else + # Add APP_NAME_ prefix for consistency + modified_var="${var_name}=\${${APP_NAME}_${var_name}:-${var_value}}" + fi fi # Append the modified variable to results diff --git a/_builder/dc-new.sh b/_builder/dc-new.sh index 631e3ee..3aa73ad 100644 --- a/_builder/dc-new.sh +++ b/_builder/dc-new.sh @@ -18,5 +18,4 @@ EOF ) # Print the variable to verify the content -echo "***** NEW docker-compose.yml *****" -echo "$BLDR_NEW_DCF" +echo "$BLDR_NEW_DCF" > ${BLDR_DIR}/docker-compose.yml diff --git a/_builder/extends-new.sh b/_builder/extends-new.sh index 5ce27d9..31f7c07 100644 --- a/_builder/extends-new.sh +++ b/_builder/extends-new.sh @@ -15,5 +15,4 @@ EOF # Output the content to a file BLDR_NEW_SE="$file_content" -echo "***** Sample Extends *****" -echo "$BLDR_NEW_SE" \ No newline at end of file +echo "$BLDR_NEW_SE" > ${BLDR_DIR}/sample-extends.yml diff --git a/_builder/se-new.sh b/_builder/se-new.sh index 514cc3d..0115759 100644 --- a/_builder/se-new.sh +++ b/_builder/se-new.sh @@ -1,23 +1,23 @@ #!/bin/bash -BLDR_NEW_SE+="# $BLDR_APP\n" +BLDR_ENV_FILE+="# $BLDR_APP\n" +BLDR_ENV_FILE+="COOKBOOK=$BLDR_PARENT_PATH #HELP: cookbooks\n" while IFS= read -r line; do # Use a regex to match and extract variable names and defaults if [[ $line =~ \$\{([A-Za-z_][A-Za-z0-9_]*)\} ]]; then # Matched ${VAR_NAME} (without default) var_name="${BASH_REMATCH[1]}" - BLDR_NEW_SE+="${var_name}=\n" + BLDR_ENV_FILE+="${var_name}=\n" elif [[ $line =~ \$\{([A-Za-z_][A-Za-z0-9_]*)[:-](.*)\} ]]; then # Matched ${VAR_DEF:-default} (with default) var_name="${BASH_REMATCH[1]}" default_value="${BASH_REMATCH[2]:1}" - BLDR_NEW_SE+="${var_name}=${default_value}\n" + BLDR_ENV_FILE+="${var_name}=${default_value}\n" fi done <<< "$BLDR_NEW_DCF" # Remove duplicates from the output -BLDR_NEW_SE=$(echo -e "$BLDR_NEW_SE" | sort -u) +BLDR_ENV_FILE=$(echo -e "$BLDR_ENV_FILE" | sort -u) -echo "***** NEW sample.env *****" -echo "$BLDR_NEW_SE" \ No newline at end of file +echo "$BLDR_ENV_FILE" > ${BLDR_DIR}/sample.env diff --git a/builder.bash b/builder.bash index 6a35bea..4fd8aff 100644 --- a/builder.bash +++ b/builder.bash @@ -80,8 +80,7 @@ source ./_builder/extends-new.sh ################################################ source ./_builder/readme-new.sh BLDR_NEW_README=$(generate_readme) -echo "***** README *****" -echo "$BLDR_NEW_README" +echo "$BLDR_NEW_README" > ${BLDR_DIR}/README.md # TODO: for readme file do mkdir -p data/vols for vols # Do a git diff on the directory diff --git a/stashapp/docker-compose.yml b/stashapp/docker-compose.yml index da2bb09..4f0dab9 100644 --- a/stashapp/docker-compose.yml +++ b/stashapp/docker-compose.yml @@ -2,20 +2,18 @@ version: '3.4' services: stash: - image: ${STASH_IMAGE:-stashapp/stash:latest} + image: ${STASHAPP_IMAGE:-stashapp/stash:latest} restart: unless-stopped environment: - - STASH_STASH=${STASH_STASH:-/data/} - - STASH_GENERATED=${STASH_GENERATED:-/generated/} - - STASH_METADATA=${STASH_METADATA:-/metadata/} - - STASH_CACHE=${STASH_CACHE:-/cache/} + - STASH_CACHE=${STASHAPP_STASH_CACHE:-/cache/} + - STASH_DOMAIN_NAME=${STASHAPP_STASH_DOMAIN_NAME:-stash.yourdomain.ca} + - STASH_GENERATED=${STASHAPP_STASH_GENERATED:-/generated/} + - STASH_METADATA=${STASHAPP_STASH_METADATA:-/metadata/} + - STASH_STASH=${STASHAPP_STASH_STASH:-/data/} volumes: - - "/etc/localtime:/etc/localtime:ro" - - "${VOL_PATH:-./data}/stash-video:/data" - - "${VOL_PATH:-./data}/stash-metadata:/metadata" - - "${VOL_PATH:-./data}/stash-cache:/cache" - - "${VOL_PATH:-./data}/stash-generated:/generated" - - "${VOL_PATH:-./data}/stash-root:/root" - - # Uncomment and use if needed - # network_mode: "host" + - ${VOL_PATH:-./data}/stash-cache:/cache + - ${VOL_PATH:-./data}/stash-generated:/generated + - ${VOL_PATH:-./data}/stash-metadata:/metadata + - ${VOL_PATH:-./data}/stash-root:/root + - ${VOL_PATH:-./data}/stash-video:/data + - /etc/localtime:/etc/localtime:ro diff --git a/stashapp/sample-extends.yml b/stashapp/sample-extends.yml index 894516d..30c443e 100644 --- a/stashapp/sample-extends.yml +++ b/stashapp/sample-extends.yml @@ -1,11 +1,7 @@ version: '3.4' services: - stash: - extends: - file: ${COOKBOOK}/stashapp/docker-compose.yml - service: stash - env_file: - - .env - ports: - - "9999:9999" \ No newline at end of file + stashapp: + extends: + file: ${COOKBOOK}/stashapp/docker-compose.yml + service: stashapp diff --git a/stashapp/sample.env b/stashapp/sample.env index 9567968..9070975 100644 --- a/stashapp/sample.env +++ b/stashapp/sample.env @@ -1,12 +1,10 @@ -# Stash App -PROD=prod.domain.com -PRODDIR=/var/www/stashdomain-com/ #HELP: project_path -COOKBOOK=/home/user/git/docker-compose-cookbooks #HELP: cookbooks -VOL_PATH=/project-dir/project-name/data #HELP: volpath -STASH_IMAGE=stashapp/stash:v0.26.2 -# Stash Container -STASH_DOMAIN_NAME=stash.4lt.ca -STASH_STASH=/data/ -STASH_GENERATED=/generated/ -STASH_METADATA=/metadata/ -STASH_CACHE=/cache/ \ No newline at end of file + +COOKBOOK=/home/nick/github/docker-compose-cookbooks #HELP: cookbooks +# stashapp +STASHAPP_IMAGE=stashapp/stash:latest +STASHAPP_STASH_CACHE=/cache/ +STASHAPP_STASH_DOMAIN_NAME=stash.yourdomain.ca +STASHAPP_STASH_GENERATED=/generated/ +STASHAPP_STASH_METADATA=/metadata/ +STASHAPP_STASH_STASH=/data/ +VOL_PATH=./data