I\'m looking to convert an entire directory of HTML to HAML so that the files have the same name but with a new extension.
html2haml file.html.erb file.haml
You could do something like this:
for f in *.html.erb; do html2haml $f ${f/\.html\.erb/.haml}; done
Edit: If you need to look for template files recursively and you're using bash
4.x, then you can use globstar:
shopt -s globstar
for f in **/*.html.erb; do html2haml $f ${f/\.html\.erb/.haml}; done
It's not sexy but it's working:
for file in $(find . -type f -name \*.html.erb); do
html2haml -e ${file} "$(dirname ${file})/$(basename ${file} .erb).haml";
done
(Pay attention to the -e
flag of html2haml
it parses the ERb tags.)
From https://gist.github.com/pho3nixf1re/1281382 looks like it does a whole directory tree:
#!/bin/bash
if [ -z "$1" ]; then
wdir="."
else
wdir=$1
fi
for f in $( find . -name '*.erb' ); do
out="${f%.erb}.haml"
if [ -e $out ]; then
echo "skipping $out; already exists"
# rm $f
else
echo "hamlifying $f"
html2haml $f > $out
# rm $f
fi
done