diff options
Diffstat (limited to 'publish.sh')
| -rwxr-xr-x | publish.sh | 29 |
1 files changed, 26 insertions, 3 deletions
@@ -8,6 +8,29 @@ OUTDIR=${2} [ ! $# -eq 2 ] && echo "Usage: $0 <input dir> <output dir>" && exit 1 [ ! -d $INDIR ] && [ ! -d $OUTDIR ] && echo "Error: invalid input" && exit 1 -for dir in $(ls -d "$INDIR"/*/); do - cp -r $dir/* "$OUTDIR"/ -done +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 |