#!/bin/bash
# -*- mode: sh; -*-
# vim: filetype=sh

set -euo pipefail

##
## - usage: bin/gen_dockerignore [directory]
##	if directory is not provided or is "*", concatenate all */.dockerignore files into ./.dockerignore
##	if directory is something like "foo", concatenate foo/.dockerignore onto ./.dockerignore
##
projdir=$1

DOCKER_IGNORE=".dockerignore"

echo "Writing $(pwd)/.dockerignore"

##
## - reset root .dockerignore
##

cat <<EOF > ${DOCKER_IGNORE}
#
# DO NOT HAND EDIT THIS FILE, IT IS DYNAMICALLY GENERATED USING bin/gen_dockerignore DURING BUILDS
#

# Default rule, ignore everything
*

**/.git
**/.gitignore
**/Dockerfile
**/docker-compose.yaml

# explict includes
!Makefile
!_tools
!bin

# ignore bin and pkg because we don't want pre-built binaries
_tools/bin
_tools/pkg

EOF

if [ "${projdir}" = "" -o "${projdir}" = "*" ]; then
	for i in `ls */.dockerignore`; do
		cat $i >> ${DOCKER_IGNORE}
	done
	exit 0
fi

if [ -f ${projdir}/.dockerignore ]; then
	cat ${projdir}/.dockerignore >> ${DOCKER_IGNORE}
	exit 0
fi

appdir=$( echo ${projdir} | cut -d '/' -f1 )

if [ -f ${appdir}/.dockerignore ]; then
	cat ${appdir}/.dockerignore >> ${DOCKER_IGNORE}
	exit 0
fi

exit 0
