diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 364 |
1 files changed, 364 insertions, 0 deletions
diff --git a/configure b/configure new file mode 100755 index 0000000..db6229d --- /dev/null +++ b/configure @@ -0,0 +1,364 @@ +#!/usr/bin/env bash + + +PREFIX="/usr" +INFODESC=\''My Little Ponies for your terminal'\' + +completions='completion/bash-completion.sh completion/fish-completion.fish completion/zsh-completion.zsh' +shareDirs='ponies ttyponies quotes' +manFiles='manuals/manpage.6 manuals/manpage.es.6' +licenseFiles='COPYING' + + + +oldInstalledFiles='bin/ponysaytruncater lib/ponysay/list.pl lib/ponysay/linklist.pl lib/ponysay/pq4ps lib/ponysay/pq4ps.pl lib/ponysay/pq4ps-list lib/ponysay/pq4ps-list.pl' +oldInstalledDirs='share/ponies share/ttyponies' +oldCompiledFiles='ponysaytruncater ponysay.install' +oldCompiledDirs='' + +installedFiles='bin/ponysay bin/ponythink bin/ponysay.py bin/ponythink.py doc/ponysay.pdf share/info/ponysay.info.gz share/info/ponythink.info.gz' +installedDirs='share/ponysay lib/ponysay' +compiledFiles='truncater ponysay.info.gz ponysay.py.install' +compiledDirs='quotes' + +for man in $manFiles; do + oldCompiledFiles="$oldCompiledFiles $man.gz" +done +for completion in $completions; do + thinkfile="${completion%%.*}-think.${completion##*.}" + compiledFiles="$compiledFiles $completion.install $thinkfile" +done +for file in $licenseFiles; do + installedFiles="$installedFiles share/licenses/ponysay/$file" +done + + + +function getcompdir() +{ + if [ "$1" == 'bash' ]; then echo -n 'bash-completion/completions' + elif [ "$1" == 'fish' ]; then echo -n 'fish/completions' + elif [ "$1" == 'zsh' ]; then echo -n 'zsh/site-functions' + fi +} + +function getcompfile() +{ + if [ "$1" == 'bash' ]; then echo -n "$2" + elif [ "$1" == 'fish' ]; then echo -n "$2"'.fish' + elif [ "$1" == 'zsh' ]; then echo -n '_'"$2" + fi +} + + + +installPdf='' +installInfo=' install-info' +installMan=' install-man' +installManEs='' +installBash=' install-bash' +installFish=' install-fish' +installZsh=' install-zsh' + +for arg in "$@"; do + opt="${arg%%=*}" + val="${arg##*=}" + + if [ "$opt" = '--prefix' ]; then + PREFIX="$val" + elif [ "$opt" = '--info-desc' ]; then + INFODESC=\'"$(sed -e s/\'/\''\\'\'\'/g <<<"$val")"\' + + elif [ "$opt" = '--with-pdf' ]; then installPdf=' install-pdf' + elif [ "$opt" = '--without-info' ]; then installInfo='' + elif [ "$opt" = '--without-man' ]; then installMan='' + elif [ "$opt" = '--with-man-es' ]; then installManEs=' install-man-es' + elif [ "$opt" = '--without-bash' ]; then installBash='' + elif [ "$opt" = '--without-fish' ]; then installFish='' + elif [ "$opt" = '--without-zsh' ]; then installZsh='' + + elif [ "$opt" = "--everything" ]; then + installPdf=' install-pdf' + installInfo=' install-info' + installMan=' install-man' + installManEs=' install-man-es' + installBash=' install-bash' + installFish=' install-fish' + installZsh=' install-zsh' + + else + echo "$0: error: option not recongised: $arg" >&2 + fi +done + +compileMethods='core truncater manpages ponysaycompletion ponythinkcompletion' +installMethods='install-min'"$installPdf$installInfo$installMan$installManEs$installBash$installFish$installZsh" +if [ ! "$installInfo" = '' ]; then + compileMethods="$compileMethods infomanual" +fi + + + +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, edit with option --prefix=PREFIX" +echo "INFODESC = $INFODESC, edit with option --info-desc=INFODESC" +echo +[ ! "$installPdf" = '' ] && echo "Installing PDF manual" +[ ! "$installInfo" = '' ] && echo "Installing info manual, add option --without-info to skip" +[ ! "$installMan" = '' ] && echo "Installing English manpage manual, add option --without-man to skip" +[ ! "$installManEs" = '' ] && echo "Installing Spanish manpage manual" +[ ! "$installBash" = '' ] && echo "Installing autocompletion for GNU Bash, add option --without-bash to skip" +[ ! "$installFish" = '' ] && echo "Installing autocompletion for fish, add option --without-fish to skip" +[ ! "$installZsh" = '' ] && echo "Installing autocompletion for zsh, add option --without-zsh to skip" +echo +[ ! "$installPdf" = '' ] || echo "Skipping PDF manual, add option --with-pdf to install" +[ ! "$installInfo" = '' ] || echo "Skipping info manual" +[ ! "$installMan" = '' ] || echo "Skipping English manpage manual" +[ ! "$installManEs" = '' ] || echo "Skipping Spanish manpage manual, add option --with-man-es to install" +[ ! "$installBash" = '' ] || echo "Skipping autocompletion for GNU Bash" +[ ! "$installFish" = '' ] || echo "Skipping autocompletion for fish" +[ ! "$installZsh" = '' ] || echo "Skipping autocompletion for zsh" +echo + + + +function makeMakefile() +{ + echo 'PREFIX='\'"$PREFIX"\' + echo 'INSTALLDIR="$(DESTDIR)$(PREFIX)"' + echo 'SED_PREFIX=$$(sed -e '\''s/\//\\\//g'\'' <<<$(PREFIX))' + echo + echo 'default: '"$compileMethods" + echo + echo 'all: core truncater quotes manpages infomanual ponysaycompletion ponythinkcompletion' + echo + + echo "core:" + correctPrefix 'ponysay.py' + echo + + echo "truncater:" + echo -en '\t' + echo '$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o "truncater" "truncater.c"' + echo + + echo "quotes:" + echo -en '\t' ; echo 'mkdir -p quotes' + echo -en '\t' ; echo 'for ponies in $$(cat ponyquotes/ponies); do \' + echo -en '\t' ; echo ' for pony in $$(echo $$ponies | sed -e '\''s/+/ /g'\''); do \' + echo -en '\t' ; echo ' echo '\''Generating quote files for '\''"$$pony"; \' + echo -en '\t' ; echo ' for file in $$(ls "ponyquotes/" | grep "$$pony\\.*"); do \' + echo -en '\t' ; echo ' if [ -f "ponyquotes/$$file" ]; then \' + echo -en '\t' ; echo ' cp "ponyquotes/"$$file "quotes/"$$ponies'\''.'\''$$(echo $$file | cut -d '\''.'\'' -f 2) \' + echo -en '\t' ; echo ';fi;done;done;done' + 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 quotes' + echo -en '\t' ; echo 'mkdir -p "$(INSTALLDIR)/share/ponysay/"' + for dir in $shareDirs; do + echo -en '\t' ; echo 'mkdir -p "$(INSTALLDIR)/share/ponysay/'"$dir"'"' + echo -en '\t' ; echo 'cp -P "'"$dir"'/"*.* "$(INSTALLDIR)/share/ponysay/'"$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 + echo -en '\t' ; echo 'mkdir -p $(DESTDIR)/var/cache/ponysay/' + echo -en '\t' ; echo 'chmod 777 $(DESTDIR)/var/cache/ponysay/' + echo + + for completion in $completions; do + shell="${completion##*/}" + shell="${shell%%-*}" + thinkfile="${completion%%.*}-think.${completion##*.}" + shelldir='share/'"$(getcompdir $shell)"'/' + echo 'install-'"$shell"': ponysaycompletion ponythinkcompletion' + echo -en '\t' ; echo 'mkdir -p "$(INSTALLDIR)/'"$shelldir"'"' + echo -en '\t' ; echo 'install "'"$completion"'" "$(INSTALLDIR)/'"$shelldir$(getcompfile $shell ponysay)"'"' + echo -en '\t' ; echo 'install "'"$thinkfile"'" "$(INSTALLDIR)/'"$shelldir$(getcompfile $shell ponythink)"'"' + echo + installedFiles="$installedFiles $shelldir$(getcompfile $shell ponysay) $shelldir$(getcompfile $shell ponythink)" + done + + echo 'install-pdf:' + echo -en '\t' + echo 'install "ponysay.pdf" "$(INSTALLDIR)/doc/ponysay.pdf"' + echo + + echo 'install-info: infomanual' + echo -en '\t' ; echo 'mkdir -p "$(INSTALLDIR)/share/info"' + echo -en '\t' ; echo 'install "ponysay.info.gz" "$(INSTALLDIR)/share/info/ponysay.info.gz"' + echo -en '\t' ; echo 'install "ponysay.info.gz" "$(INSTALLDIR)/share/info/ponythink.info.gz"' + echo -en '\t' ; echo 'install-info --dir-file="$(INSTALLDIR)/share/info/dir" --entry="Miscellaneous" --description='"$INFODESC"' "$(INSTALLDIR)/share/info/ponysay.info.gz"' + echo -en '\t' ; echo 'install-info --dir-file="$(INSTALLDIR)/share/info/dir" --entry="Miscellaneous" --description='"$INFODESC"' "$(INSTALLDIR)/share/info/ponythink.info.gz"' + echo + + for man in $manFiles; do + lang="${man##*manpage}" + lang="${lang%%.6}" + mandir="${lang/\.//}" + echo 'install-man'"${lang/\./-}"': manpages' + echo -en '\t' ; echo 'mkdir -p "$(INSTALLDIR)/share/man'"$mandir"'/man6"' + echo -en '\t' ; echo 'install "'"$man"'.gz" "$(INSTALLDIR)/share/man'"$mandir"'/man6/ponysay.6.gz"' + echo -en '\t' ; echo 'ln -sf "ponysay.6.gz" "$(INSTALLDIR)/share/man'"$mandir"'/man6/ponythink.6.gz"' + echo + installedFiles="$installedFiles share/man$mandir/man6/ponysay.6.gz share/man$mandir/man6/ponythink.6.gz" + done + + echo + echo 'install: '"$installMethods" + echo -en '\t' ; echo '@echo -e \\n\\n\' + cat <<EOF +'/--------------------------------------------------\\\\\n'\\ +'| ___ |\\n'\\ +'| / (_) o |\\n'\\ +'| \\__ _ _ __ |\\n'\\ +'| / / |/ | | / \\_| | |\\n'\\ +'| \\___/ | |_/|/\\__/ \\_/|/ |\\n'\\ +'| /| /| |\\n'\\ +'| \\| \\| |\\n'\\ +'| ____ |\\n'\\ +'| | _ \\ ___ _ __ _ _ ___ __ _ _ _ |\\n'\\ +'| | |_) |/ _ \\ | '\\''_ \\ | | | |/ __| / _\` || | | | |\n'\\ +'| | __/| (_) || | | || |_| |\\__ \\| (_| || |_| | |\\n'\\ +'| |_| \\___/ |_| |_| \\__, ||___/ \\__,_| \\__, | |\\n'\\ +'| |___/ |___/ |\\n'\\ +'\\\\--------------------------------------------------/' +EOF + echo -en '\t' ; echo '@echo dummy | ./ponysay -f ./`if [[ "$$TERM" = "linux" ]]; then echo ttyponies; else echo ponies; fi`/pinkiecannon.pony | tail --lines=30 ; echo -e \\n' + echo + + echo 'uninstall:' + echo -en '\t' ; echo 'if [ -d "$(DESTDIR)/var/cache/ponysay" ]; then rm -rf "$(INSTALLDIR)/var/cache/ponysay"; fi' + for old in $installedDirs; do + echo -en '\t' + echo 'if [ -d "$(INSTALLDIR)/'"$old"'" ]; then rm -rf "$(INSTALLDIR)/'"$old"'"; fi' + done + for old in $installedFiles; do + echo -en '\t' + echo 'if [ -f "$(INSTALLDIR)/'"$old"'" ]; then unlink "$(INSTALLDIR)/'"$old"'"; fi' + done + echo + + echo 'clean:' + for old in $compiledDirs; do + echo -en '\t' + echo 'if [ -d "'"$old"'" ]; then rm -rf "'"$old"'"; fi' + done + for old in $compiledFiles; do + echo -en '\t' + echo 'if [ -f "'"$old"'" ]; then rm -f "'"$old"'"; fi' + done + echo + + echo 'uninstall-old:' + for old in $oldInstalledDirs; do + echo -en '\t' + echo 'if [ -d "$(INSTALLDIR)/'"$old"'" ]; then rm -rf "$(INSTALLDIR)/'"$old"'"; fi' + done + for old in $oldInstalledFiles; do + echo -en '\t' + echo 'if [ -f "$(INSTALLDIR)/'"$old"'" ]; then unlink "$(INSTALLDIR)/'"$old"'"; fi' + done + echo + + echo 'clean-old:' + for old in $oldCompiledDirs; do + echo -en '\t' + echo 'if [ -d "'"$old"'" ]; then rm -rf "'"$old"'"; fi' + done + for old in $oldCompiledFiles; do + echo -en '\t' + echo 'if [ -f "'"$old"'" ]; then rm -f "'"$old"'"; fi' + done + echo + + cat <<EOF +## 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 + +EOF +} + +makeMakefile > Makefile + |