home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / pythonwin / python.exe / CVSFILES.PY < prev    next >
Encoding:
Python Source  |  2002-09-11  |  1.8 KB  |  72 lines

  1. #! /usr/bin/env python
  2.  
  3. """Print a list of files that are mentioned in CVS directories.
  4.  
  5. Usage: cvsfiles.py [-n file] [directory] ...
  6.  
  7. If the '-n file' option is given, only files under CVS that are newer
  8. than the given file are printed; by default, all files under CVS are
  9. printed.  As a special case, if a file does not exist, it is always
  10. printed.
  11. """
  12.  
  13. import os
  14. import sys
  15. import stat
  16. import getopt
  17.  
  18. cutofftime = 0
  19.  
  20. def main():
  21.     try:
  22.         opts, args = getopt.getopt(sys.argv[1:], "n:")
  23.     except getopt.error, msg:
  24.         print msg
  25.         print __doc__,
  26.         return 1
  27.     global cutofftime
  28.     newerfile = None
  29.     for o, a in opts:
  30.         if o == '-n':
  31.             cutofftime = getmtime(a)
  32.     if args:
  33.         for arg in args:
  34.             process(arg)
  35.     else:
  36.         process(".")
  37.  
  38. def process(dir):
  39.     cvsdir = 0
  40.     subdirs = []
  41.     names = os.listdir(dir)
  42.     for name in names:
  43.         fullname = os.path.join(dir, name)
  44.         if name == "CVS":
  45.             cvsdir = fullname
  46.         else:
  47.             if os.path.isdir(fullname):
  48.                 if not os.path.islink(fullname):
  49.                     subdirs.append(fullname)
  50.     if cvsdir:
  51.         entries = os.path.join(cvsdir, "Entries")
  52.         for e in open(entries).readlines():
  53.             words = e.split('/')
  54.             if words[0] == '' and words[1:]:
  55.                 name = words[1]
  56.                 fullname = os.path.join(dir, name)
  57.                 if cutofftime and getmtime(fullname) <= cutofftime:
  58.                     pass
  59.                 else:
  60.                     print fullname
  61.     for sub in subdirs:
  62.         process(sub)
  63.  
  64. def getmtime(filename):
  65.     try:
  66.         st = os.stat(filename)
  67.     except os.error:
  68.         return 0
  69.     return st[stat.ST_MTIME]
  70.  
  71. sys.exit(main())
  72.