134 lines
2.7 KiB
Bash
Executable File
134 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/bash
|
|
#
|
|
# I'm new to bash scripting, so give me a break.
|
|
# I know that this is probably crap, but it's cheap, dirty, and does the job.
|
|
|
|
GREEN='\e[32m'
|
|
CYAN='\e[36m'
|
|
|
|
SRC='src/'
|
|
PAGES='pages/'
|
|
|
|
# The "a" is just to make this work if no characters are present in $@
|
|
args=$@
|
|
args+=('a')
|
|
|
|
if [[ ${#args} -gt 1 ]]
|
|
then
|
|
args=$@
|
|
else
|
|
args='inflate style copy conv-img'
|
|
fi
|
|
|
|
# Cheap patch for copying in case the paths aren't present.
|
|
mkdir -p target
|
|
|
|
for x in $args
|
|
do
|
|
files=()
|
|
|
|
target_ext=''
|
|
target_opt=''
|
|
|
|
if [[ "$x" == 'inflate' ]]
|
|
then
|
|
cmd='python balloon.py'
|
|
|
|
files=($(
|
|
find src -path "src/pages/*"\
|
|
-type f\
|
|
-name "*.html"\
|
|
-print
|
|
))
|
|
|
|
target_ext='.html'
|
|
|
|
action=Inflating...
|
|
|
|
elif [[ "$x" == 'style' ]]
|
|
then
|
|
cmd='sass --update'
|
|
|
|
files=($(
|
|
find src -path "src/styles/*"\
|
|
-prune\
|
|
-type f\
|
|
-name "*.scss"\
|
|
-print
|
|
))
|
|
|
|
target_ext='.css'
|
|
|
|
action=Styling...
|
|
|
|
elif [[ "$x" == 'copy' ]]
|
|
then
|
|
cp -Ra --update 'src/common/.' 'target/'
|
|
|
|
mkdir -p 'target/img/'
|
|
cp --update 'src/img/favicon.png' 'target/img/favicon.png'
|
|
|
|
action=Copying...
|
|
|
|
elif [[ "$x" == 'conv-img' ]]
|
|
then
|
|
cmd='cwebp -z 9 -m 6'
|
|
|
|
files=($(
|
|
find src -path "src/img/*"\
|
|
-type f\
|
|
-not -name "favicon.png"\
|
|
-print
|
|
))
|
|
|
|
target_ext='.webp'
|
|
target_opt='-o'
|
|
|
|
mkdir -p "target/img/blog/posts"
|
|
|
|
action='Converting Images...'
|
|
|
|
elif [[ "$x" == 'clean' ]]
|
|
then
|
|
echo -e "${GREEN}Cleaning..."
|
|
|
|
rm -Rv target
|
|
|
|
break
|
|
|
|
else
|
|
echo -e "${GREEN}Usage:${CYAN} build.sh [OPTIONS] [COMMAND]"
|
|
echo
|
|
echo -e "${GREEN}Options:${CYAN}"
|
|
echo ' -h, --help Print help'
|
|
echo
|
|
echo
|
|
echo -e "${GREEN}Commands:${CYAN}"
|
|
echo ' conv-img Convert images to target'
|
|
echo ' copy Copy assets to target'
|
|
echo ' inflate Inflate the HTML source'
|
|
echo ' style Compile SCSS to CSS'
|
|
echo
|
|
echo ' clean Wipe the target directory'
|
|
|
|
break
|
|
fi
|
|
|
|
echo -e "$GREEN$action"
|
|
|
|
for src in "${files[@]}"
|
|
do
|
|
filename=$(basename "$src")
|
|
path="${src//$SRC}"
|
|
path="${path//$PAGES}"
|
|
path="${path//$filename}"
|
|
target="target/$path${filename%.*}$target_ext"
|
|
|
|
echo -e "$CYAN $src -> $target"
|
|
|
|
eval "$cmd $src $target_opt $target"
|
|
done
|
|
done
|
|
|
|
echo -e "$GREEN"Done.
|