cpython/Tools/scripts/cvsfiles.py

73 lines
1.7 KiB
Python
Raw Normal View History

1997-08-14 20:14:54 +00:00
#! /usr/bin/env python
"""Print a list of files that are mentioned in CVS directories.
Usage: cvsfiles.py [-n file] [directory] ...
If the '-n file' option is given, only files under CVS that are newer
than the given file are printed; by default, all files under CVS are
printed. As a special case, if a file does not exist, it is always
printed.
"""
1997-08-14 20:14:54 +00:00
import os
import sys
import stat
import getopt
1997-08-14 20:14:54 +00:00
import string
cutofftime = 0
1997-08-14 20:14:54 +00:00
def main():
try:
1998-03-24 05:30:29 +00:00
opts, args = getopt.getopt(sys.argv[1:], "n:")
except getopt.error, msg:
1998-03-24 05:30:29 +00:00
print msg
print __doc__,
return 1
global cutofftime
newerfile = None
for o, a in opts:
1998-03-24 05:30:29 +00:00
if o == '-n':
cutofftime = getmtime(a)
1997-08-14 20:14:54 +00:00
if args:
1998-03-24 05:30:29 +00:00
for arg in args:
process(arg)
1997-08-14 20:14:54 +00:00
else:
1998-03-24 05:30:29 +00:00
process(".")
1997-08-14 20:14:54 +00:00
def process(dir):
cvsdir = 0
subdirs = []
names = os.listdir(dir)
for name in names:
1998-03-24 05:30:29 +00:00
fullname = os.path.join(dir, name)
if name == "CVS":
cvsdir = fullname
else:
if os.path.isdir(fullname):
if not os.path.islink(fullname):
subdirs.append(fullname)
1997-08-14 20:14:54 +00:00
if cvsdir:
1998-03-24 05:30:29 +00:00
entries = os.path.join(cvsdir, "Entries")
for e in open(entries).readlines():
words = string.split(e, '/')
if words[0] == '' and words[1:]:
name = words[1]
fullname = os.path.join(dir, name)
if cutofftime and getmtime(fullname) <= cutofftime:
pass
else:
print fullname
1997-08-14 20:14:54 +00:00
for sub in subdirs:
1998-03-24 05:30:29 +00:00
process(sub)
1997-08-14 20:14:54 +00:00
def getmtime(filename):
try:
1998-03-24 05:30:29 +00:00
st = os.stat(filename)
except os.error:
1998-03-24 05:30:29 +00:00
return 0
return st[stat.ST_MTIME]
sys.exit(main())