#!/usr/bin/env bash


PREFIX="/usr"
CPPFLAGS=""
CFLAGS=""
LDFLAGS=""

compileMethods=""
completions=( 'completion/bash-completion.sh' 'completion/fish-completion.fish' 'completion/zsh-completion.zsh' )

shareDirs=( 'ponies' 'ttyponies' 'quote' )
manFiles=( 'manuals/manpage.6' 'manuals/manpage.es.6' )
licenseFiles=( 'COPYING' )



for arg in "$@"; do
    opt="${arg%%=*}"
    val="${arg##*=}"
    if [ "$opt" = '--prefix' ]; then
	PREFIX="$val"
    fi
done



function correctPrefix()
{
    for file in "$@"; do
	echo -en '\t'
	echo 'sed -e '\''s/'\''\'\'''\''\/usr\//'\''\'\''"$(SED_PREFIX)"'\''\//g'\'' < "'"$file"'" > "'"$file"'.install"'
    done
}

function gzCompress()
{
    for file in "$@"; do
	echo -en '\t'
	echo 'gzip -9 -f < "'"$file"'" > "'"$file"'".gz'
    done
}

function thinkCompletion()
{
    for file in "$@"; do
	echo -en '\tsed '
	echo -n '-e '\''s/ponysay/ponythink/g'\'
	echo -n ' < "'"$file"'.install" | sed '
	echo -n '-e '\''s/\/ponythink\//\/ponysay\//g'\'
	echo -n '-e '\''s/\\\/ponythink\\\//\\\/ponysay\\\//g'\'
	thinkfile="${file%%.*}-think.${file##.*}"
	echo ' > "'"$thinkfile"'"'
    done
}



echo "PREFIX = $PREFIX"
echo "CPPFLAGS = $CPPFLAGS"
echo "CFLAGS = $CFLAGS"
echo "LDFLAGS = $LDFLAGS"



function makeMakefile()
{
    echo 'PREFIX='\'"$PREFIX"\'
    echo 'CPPFLAGS='\'"$CPPFLAGS"\'
    echo 'CFLAGS='\'"$CFLAGS"\'
    echo 'LDFLAGS='\'"$LDFLAGS"\'
    echo 'INSTALLDIR="$(DESTDIR)$(PREFIX)"'
    echo 'SED_PREFIX=$$(sed -e '\''s/\//\\\//g'\'' <<<$(PREFIX))'
    echo
    echo 'default: all'
    echo
    echo 'all:'"$compileMethods"
    echo
    
    echo "core:"
    correctPrefix 'ponysay.py'
    echo
    
    echo "truncater:"
    echo -en '\t'
    echo '$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o "truncater" "truncater.c"'
    echo
    
    echo 'manpages:'
    gzCompress "$manFiles"
    echo
    
    echo 'infomanual:'
    echo -en '\t'
    echo 'makeinfo "manuals/ponysay.texinfo"'
    gzCompress 'ponysay.info'
    echo
    
    echo 'ponysaycompletion:'
    correctPrefix "$completions"
    echo
    
    echo 'ponythinkcompletion: ponysaycompletion'
    thinkCompletion "$completions"
    echo
    
    echo 'install-min: core truncater'
    echo -en '\t' ; echo 'mkdir -p "'"$shareDir"'"'
    for dir in "$shareDirs"; do
	echo -en '\t' ; echo 'mkdir "$(INSTALLDIR)/share/ponysay/ponies'"$dir"'"'
	echo -en '\t' ; echo 'cp -P "'"$dir"'/"*.* "$(INSTALLDIR)/share/ponysay/ponies'"$dir"'/"'
    done
    echo
    echo -en '\t' ; echo 'mkdir -p "$(INSTALLDIR)/bin/"'
    echo -en '\t' ; echo 'install "ponysay"    "$(INSTALLDIR)/bin/ponysay"'
    echo -en '\t' ; echo 'install "ponysay.py" "$(INSTALLDIR)/bin/ponysay.py"'
    echo -en '\t' ; echo 'ln -sf  "ponysay"    "$(INSTALLDIR)/bin/ponythink"'
    echo -en '\t' ; echo 'ln -sf  "ponysay.py" "$(INSTALLDIR)/bin/ponythink.py"'
    echo
    echo -en '\t' ; echo 'mkdir   -p              "$(INSTALLDIR)/lib/ponysay/"'
    echo -en '\t' ; echo 'install -s "truncater"  "$(INSTALLDIR)/lib/ponysay/truncater"'
    echo
    echo -en '\t' ; echo 'mkdir -p "$(INSTALLDIR)/share/licenses/ponysay/"'
    for file in "$licenseFiles"; do
	echo -en '\t'
	echo 'install "'"$file"'" "$(INSTALLDIR)/share/licenses/ponysay/'"$file"'"'
    done
    echo
    
}
makeMakefile > Makefile


#install-bash: ponythinkcompletion
#	mkdir -p                                        "$(INSTALLDIR)/share/bash-completion/completions/"
#	install "completion/bash-completion.sh.install" "$(INSTALLDIR)/share/bash-completion/completions/ponysay"
#	install "completion/bash-completion-think.sh"   "$(INSTALLDIR)/share/bash-completion/completions/ponythink"
#
#install-zsh: ponythinkcompletion
#	mkdir -p                                        "$(INSTALLDIR)/share/zsh/site-functions/"
#	install "completion/zsh-completion.zsh.install" "$(INSTALLDIR)/share/zsh/site-functions/_ponysay"
#	install "completion/zsh-completion-think.zsh"   "$(INSTALLDIR)/share/zsh/site-functions/_ponythink"
#
#install-fish: ponythinkcompletion
#	mkdir -p                                          "$(INSTALLDIR)/share/fish/completions/"
#	install "completion/fish-completion.fish.install" "$(INSTALLDIR)/share/fish/completions/ponysay.fish"
#	install "completion/fish-completion-think.fish"   "$(INSTALLDIR)/share/fish/completions/ponythink.fish"
#
#install-man: manpages
#	mkdir -p                       "$(INSTALLDIR)/share/man/man6"
#	install "manuals/manpage.6.gz" "$(INSTALLDIR)/share/man/man6/ponysay.6.gz"
#	ln -sf  "ponysay.6.gz"         "$(INSTALLDIR)/share/man/man6/ponythink.6.gz"
#
#install-man-es: manpages
#	mkdir -p                          "$(INSTALLDIR)/share/man/es/man6"
#	install "manuals/manpage.es.6.gz" "$(INSTALLDIR)/share/man/es/man6/ponysay.6.gz"
#	ln -sf  "ponysay.6.gz"            "$(INSTALLDIR)/share/man/es/man6/ponythink.6.gz"
#
#install-info: infomanual
#	mkdir -p                  "$(INSTALLDIR)/share/info"
#	install "ponysay.info.gz" "$(INSTALLDIR)/share/info/ponysay.info.gz"
#	install "ponysay.info.gz" "$(INSTALLDIR)/share/info/ponythink.info.gz"
#	install-info --dir-file="$(INSTALLDIR)/share/info/dir" --entry="Miscellaneous" --description="My Little Ponies for your terminal" "$(INSTALLDIR)/share/info/ponysay.info.gz"
#	install-info --dir-file="$(INSTALLDIR)/share/info/dir" --entry="Miscellaneous" --description="My Little Ponies for your terminal" "$(INSTALLDIR)/share/info/ponythink.info.gz"
#
#install-no-info: install-min install-bash install-zsh install-fish install-man install-man-es
#
#install-pdf:
#	install "ponysay.pdf" "$(INSTALLDIR)/doc/ponysay.pdf"
#
#install: install-no-info install-info
#	@echo -e '\n\n'\
#'/--------------------------------------------------\\\n'\
#'|   ___                                            |\n'\
#'|  / (_)        o                                  |\n'\
#'|  \__   _  _      __                              |\n'\
#'|  /    / |/ |  | /  \_|   |                       |\n'\
#'|  \___/  |  |_/|/\__/  \_/|/                      |\n'\
#'|              /|         /|                       |\n'\
#'|              \|         \|                       |\n'\
#'|   ____                                           |\n'\
#'|  |  _ \  ___   _ __   _   _  ___   __ _  _   _   |\n'\
#'|  | |_) |/ _ \ | '\''_ \ | | | |/ __| / _` || | | |  |\n'\
#'|  |  __/| (_) || | | || |_| |\__ \| (_| || |_| |  |\n'\
#'|  |_|    \___/ |_| |_| \__, ||___/ \__,_| \__, |  |\n'\
#'|                       |___/              |___/   |\n'\
#'\\--------------------------------------------------/'
#	@echo 'dummy' | ./ponysay -f ./`if [[ "$$TERM" = "linux" ]]; then echo ttyponies; else echo ponies; fi`/pinkiecannon.pony | tail --lines=30 ; echo -e '\n'
#
#uninstall:
#	if [ -d "$(INSTALLDIR)/share/ponysay" ]; then                                rm -fr "$(INSTALLDIR)/share/ponysay"                              ; fi
#	if [ -d "$(INSTALLDIR)/lib/ponysay"  ]; then                                 rm -fr "$(INSTALLDIR)/lib/ponysay"                                ; fi
#	if [ -f "$(INSTALLDIR)/bin/ponysay" ]; then                                  unlink "$(INSTALLDIR)/bin/ponysay"                                ; fi
#	if [ -f "$(INSTALLDIR)/bin/ponythink" ]; then                                unlink "$(INSTALLDIR)/bin/ponythink"                              ; fi
#	if [ -f "$(INSTALLDIR)/share/licenses/ponysay/COPYING" ]; then               unlink "$(INSTALLDIR)/share/licenses/ponysay/COPYING"             ; fi
#	if [ -f "$(INSTALLDIR)/share/bash-completion/completions/ponysay" ]; then    unlink "$(INSTALLDIR)/share/bash-completion/completions/ponysay"  ; fi
#	if [ -f "$(INSTALLDIR)/share/bash-completion/completions/ponythink" ]; then  unlink "$(INSTALLDIR)/share/bash-completion/completions/ponythink"; fi
#	if [ -f "$(INSTALLDIR)/share/fish/completions/ponysay.fish" ]; then          unlink "$(INSTALLDIR)/share/fish/completions/ponysay.fish"        ; fi
#	if [ -f "$(INSTALLDIR)/share/fish/completions/ponythink.fish" ]; then        unlink "$(INSTALLDIR)/share/fish/completions/ponythink.fish"      ; fi
#	if [ -f "$(INSTALLDIR)/share/zsh/site-functions/_ponysay"; ]; then           unlink "$(INSTALLDIR)/share/zsh/site-functions/_ponysay"          ; fi
#	if [ -f "$(INSTALLDIR)/share/zsh/site-functions/_ponythink"; ]; then         unlink "$(INSTALLDIR)/share/zsh/site-functions/_ponythink"        ; fi
#	if [ -f "$(INSTALLDIR)/share/man/man6/ponysay.6.gz" ]; then                  unlink "$(INSTALLDIR)/share/man/man6/ponysay.6.gz"                ; fi
#	if [ -f "$(INSTALLDIR)/share/man/man6/ponythink.6.gz" ]; then                unlink "$(INSTALLDIR)/share/man/man6/ponythink.6.gz"              ; fi
#	if [ -f "$(INSTALLDIR)/share/man/es/man6/ponysay.6.gz" ]; then               unlink "$(INSTALLDIR)/share/man/es/man6/ponysay.6.gz"             ; fi
#	if [ -f "$(INSTALLDIR)/share/man/es/man6/ponythink.6.gz" ]; then             unlink "$(INSTALLDIR)/share/man/es/man6/ponythink.6.gz"           ; fi
#	if [ -f "$(INSTALLDIR)/share/info/ponysay.info.gz" ]; then                   unlink "$(INSTALLDIR)/share/info/ponysay.info.gz"                 ; fi
#	if [ -f "$(INSTALLDIR)/share/info/ponythink.info.gz" ]; then                 unlink "$(INSTALLDIR)/share/info/ponythink.info.gz"               ; fi
#	if [ -f "$(INSTALLDIR)/doc/ponysay.pdf" ]; then                              unlink "$(INSTALLDIR)/doc/ponysay.pdf"                            ; fi
#
#uninstall-old:
#	if [ -d "$(INSTALLDIR)/share/ponies" ]; then                                 rm -fr "$(INSTALLDIR)/share/ponies"                               ; fi
#	if [ -d "$(INSTALLDIR)/share/ttyponies" ]; then                              rm -fr "$(INSTALLDIR)/share/ttyponies"                            ; fi
#	if [ -f "$(INSTALLDIR)/bin/ponysaytruncater" ]; then                         unlink "$(INSTALLDIR)/bin/ponysaytruncater"                       ; fi
#	if [ -d "$(INSTALLDIR)/lib/ponysay/link.pl"  ]; then                         unlink "$(INSTALLDIR)/lib/ponysay/link.pl"                        ; fi
#	if [ -d "$(INSTALLDIR)/lib/ponysay/linklist.pl"  ]; then                     unlink "$(INSTALLDIR)/lib/ponysay/linklist.pl"                    ; fi
#	if [ -d "$(INSTALLDIR)/lib/ponysay/pq4ps"  ]; then                           unlink "$(INSTALLDIR)/lib/ponysay/pq4ps"                          ; fi
#	if [ -d "$(INSTALLDIR)/lib/ponysay/pq4ps.pl"  ]; then                        unlink "$(INSTALLDIR)/lib/ponysay/pq4ps.pl"                       ; fi
#	if [ -d "$(INSTALLDIR)/lib/ponysay/pq4ps-list"  ]; then                      unlink "$(INSTALLDIR)/lib/ponysay/pq4ps-list"                     ; fi
#	if [ -d "$(INSTALLDIR)/lib/ponysay/pq4ps-list.pl"  ]; then                   unlink "$(INSTALLDIR)/lib/ponysay/pq4ps-list.pl"                  ; fi
#
#clean:
#	if [ -f "truncater" ]; then                                rm -f "truncater"                              ; fi
#	if [ -f "completion/bash-completion-think.sh" ]; then      rm -f "completion/bash-completion-think.sh"    ; fi
#	if [ -f "completion/fish-completion-think.fish" ]; then    rm -f "completion/fish-completion-think.fish"  ; fi
#	if [ -f "completion/zsh-completion-think.zsh" ]; then      rm -f "completion/zsh-completion-think.zsh"    ; fi
#	if [ -f "completion/bash-completion.sh.install" ]; then    rm -f "completion/bash-completion.sh.install"  ; fi
#	if [ -f "completion/fish-completion.fish.install" ]; then  rm -f "completion/fish-completion.fish.install"; fi
#	if [ -f "completion/zsh-completion.zsh.install" ]; then    rm -f "completion/zsh-completion.zsh.install"  ; fi
#	if [ -f "manuals/manpage.6.gz" ]; then                     rm -f "manuals/manpage.6.gz"                   ; fi
#	if [ -f "manuals/manpage.es.6.gz" ]; then                  rm -f "manuals/manpage.es.6.gz"                ; fi
#	if [ -f "ponysay.info.gz"  ]; then                         rm -f "ponysay.info.gz"                        ; fi
#	if [ -f "ponysay.py.install" ]; then                       rm -f "ponysay.py.install"                     ; fi
#
#clean-old:
#	if [ -f "ponysaytruncater" ]; then  rm -f "ponysaytruncater"; fi
#
#
### Scripts for maintainers
#
#ttyponies:
#	mkdir -p "ttyponies"
#	for pony in $$(ls --color=no "ponies/"); do                                                    \
#	    echo "building ttypony: $$pony"                                                           ;\
#	    if [ `readlink "ponies/$$pony"` = "" ]; then                                               \
#	        ponysay2ttyponysay < "ponies/$$pony" | tty2colourfultty -c 1 -e > "ttyponies/$$pony"  ;\
#		git add "ttyponies/$$pony"                                                            ;\
#	    elif [ ! -f "ttyponies/$$pony" ]; then                                                     \
#	        ln -s `readlink "ponies/$$pony"` "ttyponies/$$pony"                                   ;\
#		git add "ttyponies/$$pony"                                                            ;\
#	    fi                                                                                         \
#	done
#
#pdfmanual:
#	texi2pdf "manuals/ponysay.texinfo"
#	git add  "manuals/ponysay.texinfo" "ponysay.pdf"
#	for ext in `echo aux cp cps fn ky log pg toc tp vr`; do              \
#	    (if [ -f "ponysay.$$ext" ]; then unlink "ponysay.$$ext"; fi);    \
#	done
#	if [ -d "ponysay.t2d" ]; then rm -r "ponysay.t2d"; fi
#
#submodules: clean
#	(cd "ponyquotes4ponysay/"; make clean)
#	git submodule init
#	git submodule update
#
#quotes: submodules
#	(cd "ponyquotes4ponysay/"; make -B)
#	if [ -d quotes ]; then git rm "quotes/"*.*; fi
#	mkdir -p "quotes"
#	cp "ponyquotes4ponysay/ponyquotes/"*.* "quotes"
#	git add "quotes/"*.*
#