blob: 9f9d8bd1b37458771bf22fbf42b1284d52f9e9f4 [file] [log] [blame]
Guido van Rossum097c55a1995-04-27 18:07:07 +00001#! /usr/local/bin/python
2
Guido van Rossumc218a7e1995-04-27 23:33:43 +00003"""Remote CVS -- command line interface"""
Guido van Rossum097c55a1995-04-27 18:07:07 +00004
Guido van Rossumc218a7e1995-04-27 23:33:43 +00005from cvslib import CVS, File
Guido van Rossum5f07b841995-04-26 22:57:11 +00006import md5
7import os
8import string
9import sys
Guido van Rossumc218a7e1995-04-27 23:33:43 +000010from cmdfw import CommandFrameWork
Guido van Rossum5f07b841995-04-26 22:57:11 +000011
12
Guido van Rossumc218a7e1995-04-27 23:33:43 +000013class MyFile(File):
Guido van Rossum5f07b841995-04-26 22:57:11 +000014
Guido van Rossum5f07b841995-04-26 22:57:11 +000015 def update(self):
Guido van Rossumc218a7e1995-04-27 23:33:43 +000016 print self.file, '...'
17 if self.lsum == self.esum == self.rsum:
18 print '=', self.file
Guido van Rossum5f07b841995-04-26 22:57:11 +000019 return
Guido van Rossumc218a7e1995-04-27 23:33:43 +000020 if self.lsum and not self.erev and not self.rrev:
21 print '?', self.file
Guido van Rossum5f07b841995-04-26 22:57:11 +000022 return
Guido van Rossumc218a7e1995-04-27 23:33:43 +000023 print 'X', self.file
24
Guido van Rossum5f07b841995-04-26 22:57:11 +000025
26
Guido van Rossumc218a7e1995-04-27 23:33:43 +000027class RCVS(CVS):
28
29 FileClass = MyFile
30
31 def __init__(self):
32 CVS.__init__(self)
33
34 def checkfiles(self, files):
35 if not files:
36 def ok(file, self=self):
37 e = self.entries[file]
38 return e.eseen or e.rseen
39 files[:] = filter(ok, self.entries.keys())
40 files.sort()
41
42
43class rcvs(CommandFrameWork):
44
45 GlobalFlags = 'd:h:p:qv'
46 UsageMessage = \
47 "usage: rcvs [-d directory] [-h host] [-p port] [-q] [-v] subcommand arg ..."
48
49 def __init__(self):
50 """Constructor."""
51 CommandFrameWork.__init__(self)
52 self.proxy = None
53 self.cvs = RCVS()
54
55 def options(self, opts):
56 self.opts = opts
57
58 def ready(self):
59 import rcsclient
60 self.proxy = rcsclient.openrcsclient(self.opts)
61 self.cvs.setproxy(self.proxy)
62 self.cvs.getentries()
63 self.cvs.getlocalfiles()
64 self.cvs.getremotefiles(self.proxy)
65
66 def default(self):
67 self.cvs.report()
68
69 def do_update(self, opts, files):
70 self.cvs.checkfiles(files)
71 if not files:
72 print "no files"
73 return
74 for file in files:
75 if not self.cvs.entries.has_key(file):
76 print "%s: not found" % file
77 else:
78 self.cvs.entries[file].update()
Guido van Rossum5f07b841995-04-26 22:57:11 +000079
80
Guido van Rossumdeb627c1995-04-27 21:28:53 +000081def main():
Guido van Rossumc218a7e1995-04-27 23:33:43 +000082 rcvs().run()
Guido van Rossum097c55a1995-04-27 18:07:07 +000083
Guido van Rossum5f07b841995-04-26 22:57:11 +000084
85if __name__ == "__main__":
Guido van Rossumdeb627c1995-04-27 21:28:53 +000086 main()