2012年11月12日 星期一

簡單的ctags/cscope/gtags script

~/gentags.sh.html
 1 #!/bin/bash
 2 c=false
 3 C=false
 4 java=false
 5 function usage
 6 {
 7   cat << EOF
 8 usage: $0 options
 9 This script generate tag files for C, C++ and JAVA files.
10 OPTIONS:
11 -h      Show this message
12 -c      generate tags for C files 
13 -C      generate tags for C++ files
14 -j      generate tags for JAVA files
15 EOF
16 }
17 
18 if [ $# = 0 ]
19 then
20   usage
21 fi
22 
23 while getopts "hcCj" opt;
24 do
25   case "$opt" in
26     c) c=true
27       ;;
28     C) C=true
29       ;;
30     j) java=true
31       ;;
32     h) usage
33       exit
34       ;;
35     *) echo  1>&2;
36       usage
37       exit 1
38       ;;
39   esac
40 done
41 
42 if [ $c = true ]
43 then
44   rm c.tags
45   rm c.cscope*
46   find . -name .svn -prune -o -name .repo -prune -o -name .git -prune -o  ! -type l -type f  -name '*.c' -o ! -type l -name '*.h' > c_files
47   ctags -f c.tags -L c_files &
48   cscope -bkq -i c_files -f c.cscope &
49 fi
50 if [ $C = true ]
51 then
52   rm cc.tags
53   rm cc.cscope*
54   find . -name .svn -prune -o -name .repo -prune -o -name .git -prune -o  ! -type l -type f  -name '*.cc' -o ! -type l -name '*.cpp' > cc_files
55   ctags -f cc.tags -L cc_files &
56   cscope -bkq -i cc_files -f cc.cscope &
57 fi
58 
59 if [ $java = true ]
60 then
61   rm java.tags
62   rm java.cscope*
63   find . -name .svn -prune -o -name .repo -prune -o -name .git -prune -o  ! -type l -type f -name "*.java" > java_files
64   ctags -f java.tags -L java_files &
65   cscope -bkq -i java_files -f java.cscope &
66 fi
67 
68 cat c_files > all_files
69 cat cc_files >> all_files
70 cat java_files >> all_files
71 gtags -f all_files &
72 for job in `jobs -p`
73 do
74     wait $job
75 done
76 echo "TAGS GENERATED"
77 

沒有留言:

張貼留言