Guido van Rossum | 097c55a | 1995-04-27 18:07:07 +0000 | [diff] [blame] | 1 | #! /usr/local/bin/python |
| 2 | |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 3 | """Remote CVS -- command line interface""" |
Guido van Rossum | 097c55a | 1995-04-27 18:07:07 +0000 | [diff] [blame] | 4 | |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 5 | from cvslib import CVS, File |
Guido van Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 6 | import md5 |
| 7 | import os |
| 8 | import string |
| 9 | import sys |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 10 | from cmdfw import CommandFrameWork |
Guido van Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 11 | |
| 12 | |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 13 | class MyFile(File): |
Guido van Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 14 | |
Guido van Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 15 | def update(self): |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 16 | print self.file, '...' |
| 17 | if self.lsum == self.esum == self.rsum: |
| 18 | print '=', self.file |
Guido van Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 19 | return |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 20 | if self.lsum and not self.erev and not self.rrev: |
| 21 | print '?', self.file |
Guido van Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 22 | return |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 23 | print 'X', self.file |
| 24 | |
Guido van Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 25 | |
| 26 | |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 27 | class 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 | |
| 43 | class 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 Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 79 | |
| 80 | |
Guido van Rossum | deb627c | 1995-04-27 21:28:53 +0000 | [diff] [blame] | 81 | def main(): |
Guido van Rossum | c218a7e | 1995-04-27 23:33:43 +0000 | [diff] [blame^] | 82 | rcvs().run() |
Guido van Rossum | 097c55a | 1995-04-27 18:07:07 +0000 | [diff] [blame] | 83 | |
Guido van Rossum | 5f07b84 | 1995-04-26 22:57:11 +0000 | [diff] [blame] | 84 | |
| 85 | if __name__ == "__main__": |
Guido van Rossum | deb627c | 1995-04-27 21:28:53 +0000 | [diff] [blame] | 86 | main() |