Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: third_party/twisted_8_1/twisted/news/tap.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
2 # See LICENSE for details.
3
4
5 from twisted.news import news, database
6 from twisted.application import strports
7 from twisted.python import usage, log
8
9 class DBOptions(usage.Options):
10 optParameters = [
11 ['module', None, 'pyPgSQL.PgSQL', "DB-API 2.0 module to use"],
12 ['dbhost', None, 'localhost', "Host where database manager is list ening"],
13 ['dbuser', None, 'news', "Username with which to connect to d atabase"],
14 ['database', None, 'news', "Database name to use"],
15 ['schema', None, 'schema.sql', "File to which to write SQL schema i nitialisation"],
16
17 # XXX - Hrm.
18 ["groups", "g", "groups.list", "File containing group list"],
19 ["servers", "s", "servers.list", "File containing server list"]
20 ]
21
22 def postOptions(self):
23 # XXX - Hmmm.
24 self['groups'] = [g.strip() for g in open(self['groups']).readlines() if not g.startswith('#')]
25 self['servers'] = [s.strip() for s in open(self['servers']).readlines() if not s.startswith('#')]
26
27 try:
28 __import__(self['module'])
29 except ImportError:
30 log.msg("Warning: Cannot import %s" % (self['module'],))
31
32 open(self['schema'], 'w').write(
33 database.NewsStorageAugmentation.schema + '\n' +
34 database.makeGroupSQL(self['groups']) + '\n' +
35 database.makeOverviewSQL()
36 )
37
38 info = {
39 'host': self['dbhost'], 'user': self['dbuser'],
40 'database': self['database'], 'dbapiName': self['module']
41 }
42 self.db = database.NewsStorageAugmentation(info)
43
44
45 class PickleOptions(usage.Options):
46 optParameters = [
47 ['file', None, 'news.pickle', "File to which to save pickle"],
48
49 # XXX - Hrm.
50 ["groups", "g", "groups.list", "File containing group list"],
51 ["servers", "s", "servers.list", "File containing server list"],
52 ["moderators", "m", "moderators.list",
53 "File containing moderators list"],
54 ]
55
56 subCommands = None
57
58 def postOptions(self):
59 # XXX - Hmmm.
60 filename = self['file']
61 self['groups'] = [g.strip() for g in open(self['groups']).readlines()
62 if not g.startswith('#')]
63 self['servers'] = [s.strip() for s in open(self['servers']).readlines()
64 if not s.startswith('#')]
65 self['moderators'] = [s.split()
66 for s in open(self['moderators']).readlines()
67 if not s.startswith('#')]
68 self.db = database.PickleStorage(filename, self['groups'],
69 self['moderators'])
70
71
72 class Options(usage.Options):
73 synopsis = "Usage: mktap news [options]"
74
75 groups = None
76 servers = None
77 subscriptions = None
78
79 optParameters = [
80 ["port", "p", "119", "Listen port"],
81 ["interface", "i", "", "Interface to which to bind"],
82 ["datadir", "d", "news.db", "Root data storage path"],
83 ["mailhost", "m", "localhost", "Host of SMTP server to use"]
84 ]
85 zsh_actions = {"datadir" : "_dirs", "mailhost" : "_hosts"}
86
87 def __init__(self):
88 usage.Options.__init__(self)
89 self.groups = []
90 self.servers = []
91 self.subscriptions = []
92
93
94 def opt_group(self, group):
95 """The name of a newsgroup to carry."""
96 self.groups.append([group, None])
97
98
99 def opt_moderator(self, moderator):
100 """The email of the moderator for the most recently passed group."""
101 self.groups[-1][1] = moderator
102
103
104 def opt_subscription(self, group):
105 """A newsgroup to list as a recommended subscription."""
106 self.subscriptions.append(group)
107
108
109 def opt_server(self, server):
110 """The address of a Usenet server to pass messages to and receive messag es from."""
111 self.servers.append(server)
112
113
114 def makeService(config):
115 if not len(config.groups):
116 raise usage.UsageError("No newsgroups specified")
117
118 db = database.NewsShelf(config['mailhost'], config['datadir'])
119 for (g, m) in config.groups:
120 if m:
121 db.addGroup(g, 'm')
122 db.addModerator(g, m)
123 else:
124 db.addGroup(g, 'y')
125 for s in config.subscriptions:
126 print s
127 db.addSubscription(s)
128 s = config['port']
129 if config['interface']:
130 # Add a warning here
131 s += ':interface='+config['interface']
132 return strports.service(s, news.UsenetServerFactory(db, config.servers))
OLDNEW
« no previous file with comments | « third_party/twisted_8_1/twisted/news/nntp.py ('k') | third_party/twisted_8_1/twisted/news/test/__init__.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698