aboutsummaryrefslogtreecommitdiff
path: root/publish.sh
diff options
context:
space:
mode:
Diffstat (limited to 'publish.sh')
-rwxr-xr-xpublish.sh29
1 files changed, 26 insertions, 3 deletions
diff --git a/publish.sh b/publish.sh
index d6d4797..1f10507 100755
--- a/publish.sh
+++ b/publish.sh
@@ -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