mirror of http://git.davidovski.xyz/shblg.git
55 lines
991 B
Bash
Executable File
55 lines
991 B
Bash
Executable File
#!/bin/sh
|
|
|
|
INPUT_DIR=blog
|
|
OUTPUT_DIR=dist
|
|
|
|
usage () {
|
|
printf "%s\n" "Usage: shblg [-i input_dir] [-o output_dir]"
|
|
exit 1
|
|
}
|
|
|
|
while getopts ":o:i:h" opt; do
|
|
case "$opt" in
|
|
o)
|
|
OUTPUT_DIR=$OPTARG/
|
|
mkdir -p $OUTPUT_DIR
|
|
OUTPUT_DIR=$(realpath $OUTPUT_DIR)
|
|
;;
|
|
i)
|
|
INPUT_DIR=$(realpath $OPTARG)
|
|
;;
|
|
h)
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# process a file to
|
|
process () {
|
|
path="${1#$INPUT_DIR}"
|
|
dirpath="${1%${1##*/}}"
|
|
out_file="${OUTPUT_DIR}${path}"
|
|
|
|
printf "%s ...\n" "$path"
|
|
|
|
[ -d "$1" ] && {
|
|
mkdir -p "$out_file"
|
|
for f in "$1"/*; do
|
|
process "$f"
|
|
done
|
|
return 0
|
|
} || [ -x "$1" ] && {
|
|
# execute the file
|
|
cd $dirpath
|
|
"$1" > "${out_file}"
|
|
cd -
|
|
return 0
|
|
} || {
|
|
# just copy the file as is
|
|
cp "$1" "$out_file"
|
|
return 0
|
|
}
|
|
}
|
|
|
|
process "$INPUT_DIR"
|