151 lines
3.2 KiB
Bash
Executable File
151 lines
3.2 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_prefix='src/'
|
|
|
|
# The "a" is just to make this work if no characters are present in $@
|
|
args=$@
|
|
args+=('a')
|
|
|
|
if [ $(expr length "$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 -not\
|
|
\(\
|
|
\(\
|
|
-path "src/.well-known/*" -o\
|
|
-path "src/feed/*" -o\
|
|
-path "src/img/*" -o\
|
|
-path "src/includes/*" -o\
|
|
-path "src/partials/*" -o\
|
|
-path "src/templates/*"\
|
|
\)\
|
|
-prune \)\
|
|
-a\
|
|
-type f\
|
|
-name "*.html"\
|
|
-print
|
|
`)
|
|
|
|
target_ext='.html'
|
|
|
|
action=Inflating...
|
|
|
|
elif [ "$x" == 'style' ]
|
|
then
|
|
cmd='sass'
|
|
|
|
files=(`
|
|
find src -not\
|
|
\(\
|
|
\(\
|
|
-path "src/.well-known/*" -o\
|
|
-path "src/feed/*" -o\
|
|
-path "src/img/*" -o\
|
|
-path "src/includes/*" -o\
|
|
-path "src/partials/*" -o\
|
|
-path "src/templates/*"\
|
|
\)\
|
|
-prune \)\
|
|
-a\
|
|
-type f\
|
|
-name "*.scss"\
|
|
-print
|
|
`)
|
|
|
|
target_ext='.css'
|
|
|
|
action=Styling...
|
|
|
|
elif [ "$x" == 'copy' ]
|
|
then
|
|
cmd='cp -R'
|
|
|
|
files=(
|
|
'src/.well-known/security.txt'
|
|
'src/feed/rss.xml'
|
|
'src/robots.txt'
|
|
)
|
|
|
|
mkdir -p target/.well-known
|
|
mkdir -p target/feed
|
|
|
|
action=Copying...
|
|
|
|
elif [ "$x" == 'conv-img' ]
|
|
then
|
|
cmd='cwebp -z 9 -m 6'
|
|
|
|
files=(`find src/img -type f`)
|
|
|
|
target_ext='.webp'
|
|
target_opt='-o'
|
|
|
|
mkdir -p target/img/blog/posts
|
|
|
|
action='Converting and Copying Images...'
|
|
|
|
elif [ "$x" == 'clean' ]
|
|
then
|
|
echo -e "$green"Cleaning...
|
|
|
|
rm -R 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 -e "$green"Commands:"$cyan"
|
|
echo ' inflate Inflate the HTML source'
|
|
echo ' style Compile SCSS to CSS'
|
|
echo ' copy Copy assets to target'
|
|
echo ' clean Wipe the target dir'
|
|
|
|
break
|
|
fi
|
|
|
|
echo -e "$green$action"
|
|
|
|
for src in "${files[@]}"
|
|
do
|
|
filename=$(basename $src)
|
|
path="${src//$src_prefix}"
|
|
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.
|