#!/bin/sh set -xe INDIR=${1} OUTDIR=${2} [ ! $# -eq 2 ] && echo "Usage: $0 " && exit 1 [ ! -d $INDIR ] && [ ! -d $OUTDIR ] && echo "Error: invalid input" && exit 1 MAX_DEPTH=10 publish() { [ $1 -gt $MAX_DEPTH ] && echo "Maximum depth exceeded." && exit 1 for file in $(find "$2" -maxdepth 1 -mindepth 1 -type f); do cp $file $3/$(basename $file) done for dir in $(find "$2" -maxdepth 1 -mindepth 1 -type d); do dirname=$(basename $dir) # If $dirname starts with an underscore the contents of # $dir should be copied into the well-known directorie. # It is assumed that $dir only contains files if expr $dirname : "_"* 1> /dev/null; then mkdir -p $OUTDIR/.well-known cp $dir/* $OUTDIR/.well-known/ else output_dir=$3/$dirname mkdir -p $output_dir publish $(($1+1)) $dir $output_dir fi done } publish 0 $INDIR $OUTDIR