Put all of the UI utility functions into the "git" namespace.
[anjuta-git-plugin.git] / global-tags / create_global_tags.sh.in
blobc08c7ca6b697d03913ba24666319bdb43bafd856
1 #!/bin/bash
3 if [ -z $XDG_CACHE_HOME ]
4 then
5 XDG_CACHE_HOME="$HOME/.cache"
6 fi
8 function anjuta_tags {
10 FILES=""
11 BASEDIR=`pwd`
12 PROGDIR=. # `dirname $0`
13 CFLAGS=""
14 ANJUTA_TAGS_BIN="@bindir@/anjuta-tags"
15 OUTPUT_FILE=$1
16 shift
18 if [ -x "$ANJUTA_TAGS_BIN" ]
19 then
20 for cflag in $*
22 infile=`echo $cflag | sed 's/^-I//'`
23 if [ -d "$infile" -a "$infile" != "/usr/include" -a "$infile" != "/usr/local/include" ]
24 then
25 FILES="$FILES \"$infile/*.h\" \"$infile/*/*.h\" \"$infile/*/*/*.h\""
26 elif [ ! -d "$infile" -a -e "$infile" ]
27 then
28 FILES="$FILES $infile"
30 done
31 else
32 echo "Can not execute $ANJUTA_TAGS_BIN"
33 exit 1
35 CFLAGS="$CFLAGS $*"
36 export CFLAGS
38 FILES_COUNT=`echo $FILES | wc -w`
40 echo "Creating $OUTPUT_FILE"
41 echo "Number of files to scan: $FILES_COUNT"
42 echo "Files to scan: $FILES"
44 if [ $FILES_COUNT -gt 0 ] ; then
45 rm -f $OUTPUT_FILE
46 $ANJUTA_TAGS_BIN $OUTPUT_FILE $FILES >"$OUTPUT_FILE.log" 2>&1
48 # If global tags file could not be generated
49 if [ ! -e $OUTPUT_FILE ] ; then
50 echo "WARNING: Could not create tags file $OUTPUT_FILE!" >&2
51 else
52 gzip -f $OUTPUT_FILE
57 ## FILES="\"/usr/include/*.h\" \"/usr/local/include/*.h\""
58 FILES=""
59 BASEDIR=`pwd`
60 PROGDIR=. # `dirname $0`
61 CFLAGS=""
63 echo "Generating System tags..."
65 mkdir -p "$XDG_CACHE_HOME/anjuta/tags/"
67 # pkg-config libraries
68 PKG_CONFIG=`which pkg-config 2>/dev/null`
69 if ( [ ! -z $PKG_CONFIG ] && [ -x $PKG_CONFIG ] ) ; then
71 ## We are scaning .pc files directly because --cflags option
72 ## produces include paths and flags for other packages depended by
73 ## the packages, which we don't like. We only want cflags relevent
74 ## to the packages alone.
76 PKG_DEFAULT_CONFIG_PATH=`echo $PKG_CONFIG | sed -e 's/\/bin\/pkg-config/\/lib\/pkgconfig'/`
77 PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PKG_DEFAULT_CONFIG_PATH"
78 PKG_DEFAULT_CONFIG_PATH=`echo $PKG_CONFIG | sed -e 's/\/bin\/pkg-config/\/lib64\/pkgconfig'/`
79 PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PKG_DEFAULT_CONFIG_PATH"
81 PKG_CONFIG_PATH_PROPER=`echo $PKG_CONFIG_PATH | sed -e 's/\:/ /g'`
83 pkg_files_count=0
84 for pkg_path in $PKG_CONFIG_PATH_PROPER; do
85 for pkg_file in `find "$pkg_path" -name '*.pc' 2>/dev/null`; do
86 pkg_files_count=`expr $pkg_files_count + 1`
87 done
88 done
90 ## This line is important for the progress bar. Don't change it.
91 echo "Scanning $pkg_files_count packages"
93 for pkg_path in $PKG_CONFIG_PATH_PROPER; do
94 for pkg_file in `find "$pkg_path" -name '*.pc' 2>/dev/null`; do
95 # echo "Scanning package: $pkg_file"
96 PKG_CFLAGS=`grep -e '^\(\w\+=\|\s*Cflags:\)' "$pkg_file"|sed -e 's/Cflags:\s*"\?\(.*\)"\?\s*/echo "\1"/' -e 's/^\(\w\+\)=\("\([^"]*\)"\|\(.*\)\)/\1="\3\4"/'|sh`
97 # echo $PKG_CFLAGS
98 package=`basename "$pkg_file" '.pc'`
99 # if [ ! -e $BASEDIR/tags/$package.anjutatags.gz ] ; then
100 echo "Creating tags file: $XDG_CACHE_HOME/anjuta/tags/$package.anjutatags.gz ..."
101 anjuta_tags "$XDG_CACHE_HOME/anjuta/tags/$package.anjutatags" $PKG_CFLAGS > /dev/null
102 # fi
103 done
104 done
105 echo "Done"
106 echo "This is just a timestamp" > $XDG_CACHE_HOME/anjuta/system-tags.cache