#!/usr/bin/env python
#使用方法 比如要生成一个TAGS文件包括当前目录下的include和src目录以及子目录下所有的.c .h文件
#命令行: python ezetags -d./include:./src -e.h,.c
import sys
from os import path
from getopt import *
from popen2 import *
def usage():
sys.stdout.write("usage: ezetags <-dpath2:path2...> <-e.ext1,.ext2....>\n")
def parse_opt():
opts,args = getopt(sys.argv[1:], "hd:e:", ["help"])
dlist = None
elist = None
for f,v in opts:
if f in ("-h", "--help"):
usage()
sys.exit()
if f=="-e":
elist = v.split(',')
if f=="-d":
dlist = v.split(':')
return dlist,elist
def visit(arg, dirname, names):
for n in names:
nm,e = path.splitext(n)
if e in arg[1]:
p = path.join(dirname,n)
p+="\n"
arg[0].write(p)
sys.stdout.write(p)
def main():
dlist,elist = parse_opt()
if dlist==None or elist==None:
usage()
sys.exit()
sys.stdout.write("dlist="+str(dlist)+" elist="+str(elist)+"\n")
fout,fin = popen2("etags -")
for d in dlist:
path.walk(d, visit, (fin,elist))
sys.stdout.write("Done.\n")
sys.exit()
if __name__ == "__main__":main()
|