Skip to content

Instantly share code, notes, and snippets.

@silasrm
Forked from JoaoVagner/compressor.sh
Last active December 15, 2015 06:49
Show Gist options
  • Save silasrm/5219392 to your computer and use it in GitHub Desktop.
Save silasrm/5219392 to your computer and use it in GitHub Desktop.
Fiz umas melhorias como informar a pasta de origem e de destino dos arquivos. A pasta que será feita a limpeza. Bem como informar o caminho para o YUI sem usar a busca que já existia.
#!/bin/bash
FOLDER_IN=""
FOLDER_OUT=""
FOLDER_JS_IN="./js"
FOLDER_JS_OUT="./js"
FOLDER_CSS_IN="./css"
FOLDER_CSS_OUT="./css"
limpa() {
echo -e "\nDeleting existing minified files..."
find $FOLDER_IN -name \*.min.js -exec rm {} \;
find $FOLDER_IN -name \*.min.css -exec rm {} \;
}
comprime_js() {
echo -e "\nComprimindo e minificando o JavaScript..."
jslist=`find $FOLDER_IN -type f -name \*.js`
for jsfile in $jslist
do
echo "Processando: ${jsfile}"
FILENAME="$(basename $jsfile .js)"
FILEPATH_OUT="$FOLDER_OUT/${FILENAME}.min.js"
java -jar ${YUICOMPRESSOR} -o $FILEPATH_OUT ${jsfile}
done
}
comprime_css() {
echo -e "\nComprimindo e minificando o CSS..."
csslist=`find $FOLDER_IN -type f -name \*.css`
for cssfile in $csslist
do
echo "Processando: ${cssfile}"
FILENAME="$(basename $cssfile .css)"
FILEPATH_OUT="$FOLDER_OUT/${FILENAME}.min.css"
java -jar ${YUICOMPRESSOR} -o $FILEPATH_OUT ${cssfile}
done
}
usage() {
echo -e "\compressor.sh [-cjdhi:o:y:]"
echo "Opções"
echo " c : Comprime e minifica arquivos CSS"
echo " j : Comprime e minifica arquivos Javascript"
echo " d : Deleta arquivos comprimidos e minificados"
echo " h: Peça ajuda!"
echo " "
echo "Pastas"
echo " -i=pasta : pasta de origem dos arquivos, onde estão os originais. Caso não seja informada, assumira o valor padrão."
echo " -o=pasta : pasta de destino dos arquivos, onde estarão os arquivos finais. Caso não seja informada, assumira o valor padrão."
echo " => Pasta padrão de origem e destino do Javascript: ./js"
echo " => Pasta padrão de origem e destino do CSS: ./css"
echo " "
echo "Limpar"
echo " Para limpar, informe somente a pasta de no parametro -i:"
echo " "
echo "Exemplos"
echo " compressor.sh -d -i=./js-min"
echo " compressor.sh -j -i=./js -o=./js-min"
echo " compressor.sh -j -i=./js"
echo " compressor.sh -j -o=./js"
echo " compressor.sh -c -i=./css -o=./css-min"
echo " compressor.sh -c -i=./css"
echo " compressor.sh -c -o=./css-min"
echo " "
echo "-----------"
echo "Script originalmente feito João Vagner (https://gist.github.com/JoaoVagner/5215647) e modificado por Silas Ribas"
}
CSS=false
JS=false
DELETE=false
HELP=false
while getopts "cjdhi:o:y:" input
do
case $input in
c ) CSS=true;;
j ) JS=true;;
d ) DELETE=true;;
i ) if ! [ -z ${OPTARG:1} ]
then
FOLDER_IN="${OPTARG:1}"
else
if $JS
then
FOLDER_IN=$FOLDER_JS_IN
else
FOLDER_IN=$FOLDER_CSS_IN
fi
fi;;
o ) if ! [ -z ${OPTARG:1} ]
then
FOLDER_OUT="${OPTARG:1}"
else
if $JS
then
FOLDER_OUT=$FOLDER_JS_OUT
else
FOLDER_OUT=$FOLDER_CSS_OUT
fi
fi;;
y ) if ! [ -z ${OPTARG:1} ]
then
YUICOMPRESSOR="${OPTARG:1}"
else
if ! [ `find ~/Sites/yui -type f -name *.jar` ]
then
echo "Yui Compressor não encontrado!"
exit 1
else
YUICOMPRESSOR=`find ~/Sites/yui -type f -name *.jar`
fi
fi;;
h ) HELP=true;;
* ) HELP=true;;
esac
done
if ! $JS && ! $CSS && ! $DELETE
then
usage
exit 0
fi
if $HELP
then
usage
exit 0
fi
if ! [ $YUICOMPRESSOR ]
then
if ! [ `find ~/Sites/yui -type f -name *.jar` ]
then
echo "Yui Compressor não encontrado!"
exit 1
else
YUICOMPRESSOR=`find ~/Sites/yui -type f -name *.jar`
fi
else
echo "Utilizando o YUI de $YUICOMPRESSOR"
if ! [ `find $YUICOMPRESSOR -type f 2> /dev/null` ]
then
echo "Yui Compressor não encontrado! Use sempre caminho absoluto."
exit 1
fi
fi
if [ -z $FOLDER_IN ]
then
if $JS
then
FOLDER_IN=$FOLDER_JS_IN
else
FOLDER_IN=$FOLDER_CSS_IN
fi
fi
if [ -z $FOLDER_OUT ]
then
if $DELETE
then
FOLDER_OUT=$FOLDER_IN
elif $JS
then
FOLDER_OUT=$FOLDER_JS_OUT
else
FOLDER_OUT=$FOLDER_CSS_OUT
fi
fi
if ! [ `find $FOLDER_IN -type d 2> /dev/null` ]
then
echo "ERRO: Pasta de origem dos arquivos não existe"
exit 1
fi
if ! [ `find $FOLDER_OUT -type d 2> /dev/null` ]
then
echo "ERRO: Pasta de destino dos arquivos não existe"
exit 1
fi
if $DELETE
then
limpa
fi
if $JS
then
comprime_js
fi
if $CSS
then
comprime_css
fi
echo -e "\nDone."
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment