~ubuntu-branches/ubuntu/maverick/python3.1/maverick

« back to all changes in this revision

Viewing changes to Tools/scripts/cvsfiles.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-03-23 00:01:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090323000127-5fstfxju4ufrhthq
Tags: upstream-3.1~a1+20090322
ImportĀ upstreamĀ versionĀ 3.1~a1+20090322

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 as msg:
 
24
        print(msg)
 
25
        print(__doc__, end=' ')
 
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
if __name__ == '__main__':
 
72
    main()