b49afe06316e261208789cbb48db6312d85f065c
[vlc.git] / extras / analyser / zsh_completion.sh
1 #!/bin/sh
2 # Helper script to install zsh completion for VLC media player
3 # © 2008 Rafaël Carré <funman@videolanorg>
4
5
6 HOST=`gcc -dumpmachine`
7 case $HOST in
8     *darwin*)
9         SUFFIX=dylib
10     ;;
11     *cygwin*|*mingw*)
12         SUFFIX=dll
13     ;;
14     *linux*|*bsd*)
15         SUFFIX=so
16     ;;
17     *)
18         echo WARNING: Unknown platform: \'$HOST\'
19     ;;
20 esac
21
22 if test -z "$SUFFIX"; then
23     echo "ERROR: unknown suffix for shared objects
24 Please run \"SUFFIX=xxx $0\"
25 where xxx is the shared object extension on your platform."
26     exit 1
27 fi
28
29 #Distributors can run BUILDDIR=XXX ./zsh_completion.sh
30 if test -z "$BUILDDIR"; then
31     BUILDDIR=../../
32 fi
33
34 function find_libvlc {
35     for i in $BUILDDIR/src/.libs/libvlc.$SUFFIX $BUILDDIR/src/libvlc.$SUFFIX; do
36         test -e $i && LIBVLC=$i && return 0
37     done
38     return 1
39 }
40
41 while test -z "$LIBVLC"; do
42     if ! find_libvlc; then
43         /bin/echo -n "Please enter the directory where you built vlc: "
44         read BUILDDIR
45     fi
46 done
47
48 echo "libvlc found !"
49
50 if test -e ../../extras/contrib/config.mak -a ! "`grep HOST ../../extras/contrib/config.mak 2>/dev/null|awk '{print $3}'`" != "$HOST"; then
51     echo "contribs found !"
52     CPPFLAGS="-I../../extras/contrib/include"
53 fi
54
55 if test -z "$CXX"; then
56     CXX=g++
57 fi
58
59 ZSH_BUILD="$CXX $CPPFLAGS $CXXFLAGS -D__LIBVLC__ -DHAVE_CONFIG_H -I$BUILDDIR -I$BUILDDIR/include -I../../include zsh.cpp $LIBVLC -o zsh_gen"
60
61 echo "Building zsh completion generator ...
62 "
63 echo $ZSH_BUILD
64 echo
65 $ZSH_BUILD || exit 1
66
67 echo "Generating zsh completion ..."
68 if ! ./zsh_gen --plugin-path=$BUILDDIR >_vlc 2>/dev/null; then
69     echo "ERROR: the generation failed.... :(
70 Please press enter to verify that all the VLC modules are shown"
71     read i
72     ./zsh_gen --plugin-path=$BUILDDIR -vvv --list
73     echo "
74 If they are shown, press enter to see if you can debug the problem
75 It will be reproduced by running \"./zsh_gen --plugin-path=$BUILDDIR -vvv\""
76     read i
77     ./zsh_gen --plugin-path=$BUILDDIR -vvv
78     exit 1
79 fi
80
81 echo "zsh completion is `echo \`wc -l _vlc\`` lines long !"
82
83 test -z "$NOINSTALL" || exit 0
84 #Distributors can run NOINSTALL=mg ./zsh_completion.sh
85
86 if ! /usr/bin/which -s zsh; then
87     echo "ERROR: zsh not found, you'll have to copy the _vlc file manually"
88     exit 1
89 fi
90
91 test -z "$ZSH_FPATH" && ZSH_FPATH=`zsh -c "echo \\$fpath|cut -d\" \" -f1"`
92 if test -z "$ZSH_FPATH"; then
93     echo "ERROR: Could not find a directory where to install completion
94 Please run \"ZSH_FPATH=path $0\"
95 where path is the directory where you want to install completion"
96     exit 1
97 fi
98
99 echo "completion will be installed in $ZSH_FPATH , using root privileges
100 Press Ctrl+C to abort installation, and copy _vlc manually"
101 read i
102 echo "Installing completion ..."
103 sudo sh -c "chown 0:0 _vlc && chmod 0644 _vlc && mv _vlc $ZSH_FPATH" || exit 1
104
105 echo "zsh completion for VLC successfully installed :)
106 Restart running zsh instances, or run \"compinit\" to start using it."