#!/usr/bin/env bash

shopt -s nullglob # Enable nullglob

blocks_dir=docker/blocks
docker_dir=docker
template_dir=templates

grafana_config_file=conf.tmp
grafana_config=config

compose_header_file=docker/compose_header.yml
compose_volume_section_file=docker/compose_volume_section.yml
compose_volume_section_create_flag=docker_volume_create_true
compose_file=docker-compose.yaml
env_file=.env

if [ "$#" == 0 ]; then
    blocks=`ls $blocks_dir`
    if [ -z "$blocks" ]; then
        echo "No Blocks available in $blocks_dir"
    else
        echo "Available Blocks:"
        for block in $blocks; do
            echo "    $block"
        done
    fi
    exit 0
fi

for file in $grafana_config_file $compose_file $env_file; do
    if [ -e $file ]; then
        echo "Deleting $file"
        rm $file
    fi
done

echo "Adding Compose header to $compose_file"
cat $compose_header_file >> $compose_file

for dir in $@; do
    current_dir=$blocks_dir/$dir
    if [ ! -d "$current_dir" ]; then
        echo "$current_dir is not a directory"
        exit 1
    fi

    if [ -e $current_dir/$grafana_config ]; then
        echo "Adding $current_dir/$grafana_config to $grafana_config_file"
        cat $current_dir/$grafana_config >> $grafana_config_file
        echo "" >> $grafana_config_file
    fi

    if [ -e $current_dir/$compose_file ]; then
        echo "Adding $current_dir/$compose_file to $compose_file"
        cat $current_dir/$compose_file >> $compose_file
        echo "" >> $compose_file
    fi

    if [ -e $current_dir/$env_file ]; then
        echo "Adding $current_dir/$env_file to .env"
        cat $current_dir/$env_file >> .env
        echo "" >> .env
    fi
done

    for dir in $@; do
        current_dir=$blocks_dir/$dir
        if [ ! -d "$current_dir" ]; then
            echo "$current_dir is not a directory"
            exit 1
        fi


        if [ -f $current_dir/$compose_volume_section_create_flag ]; then
            if [ -z ${inserted_volume_section_start+x} ]; then
                echo "Adding volume section to $compose_file"
                cat $compose_volume_section_file >> $compose_file
                echo "" >> $compose_file
                inserted_volume_section_start=true
            fi

            echo "Adding volume for $current_dir to $compose_file"
            echo "  $dir-data-volume:" >> $compose_file
            echo "" >> $compose_file
        fi
    done
