cobalt.py

Mon, 10 Nov 2014 02:07:08 +0200

author
Teemu Piippo <crimsondusk64@gmail.com>
date
Mon, 10 Nov 2014 02:07:08 +0200
changeset 71
5ac56e71d820
parent 70
3fd78ed9a19f
permissions
-rwxr-xr-x

- closed old unneeded branch

0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
2 '''
25
9fa1df6113c4 - changed the copyright line to use my proper legal name instead of my common calling name
Santeri Piippo <crimsondusk64@gmail.com>
parents: 24
diff changeset
3 Copyright 2014 Teemu Piippo
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
4 All rights reserved.
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
5
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
6 Redistribution and use in source and binary forms, with or without
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
7 modification, are permitted provided that the following conditions
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
8 are met:
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
9
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
10 1. Redistributions of source code must retain the above copyright
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
11 notice, this list of conditions and the following disclaimer.
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
12 2. Redistributions in binary form must reproduce the above copyright
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
13 notice, this list of conditions and the following disclaimer in the
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
14 documentation and/or other materials provided with the distribution.
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
15 3. The name of the author may not be used to endorse or promote products
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
16 derived from this software without specific prior written permission.
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
17
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
18 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
19 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
20 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
21 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
22 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
23 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
24 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
25 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
26 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
27 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
28 '''
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
29
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
30 import asyncore
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
31 import socket
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
32 import time
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
33 import sys
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
34 import traceback
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
35 import re
2
1a24dd2d598e - added a basic /idgames search
Santeri Piippo <crimsondusk64@gmail.com>
parents: 1
diff changeset
36 import urllib
1a24dd2d598e - added a basic /idgames search
Santeri Piippo <crimsondusk64@gmail.com>
parents: 1
diff changeset
37 import urllib2
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
38 import hgapi
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
39 import os
15
e7999383db5a - don't crash if utf parsing yields an UnicodeDecodeError
Santeri Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
40 import suds
23
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
41 import math
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
42 import json
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
43 from datetime import datetime
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
44 import modulecore as ModuleCore
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
45 import configfile
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
46 from configfile import Config
62
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
47
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
48 ModuleCore.init_data()
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
49
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
50 try:
20
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
51 uid = os.geteuid()
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
52 except:
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
53 uid = -1
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
54
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
55 if uid == 0 and raw_input ('Do you seriously want to run cobalt as root? [y/N] ') != 'y':
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
56 quit()
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
57
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
58 configfile.init()
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
59 g_admins = Config.get_value ('admins', default=[])
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
60 g_mynick = Config.get_value ('nickname', default='cobalt')
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
61 g_BotActive = False
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
62 g_needCommitsTxtRebuild = True
2
1a24dd2d598e - added a basic /idgames search
Santeri Piippo <crimsondusk64@gmail.com>
parents: 1
diff changeset
63
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
64 #
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
65 # SOAP stuff
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
66 #
3
53486417a8e5 - handle the case where the mantisbt is not available
Santeri Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
67 suds_active = False
53486417a8e5 - handle the case where the mantisbt is not available
Santeri Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
68
53486417a8e5 - handle the case where the mantisbt is not available
Santeri Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
69 try:
20
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
70 print 'Initializing MantisBT connection...'
15
e7999383db5a - don't crash if utf parsing yields an UnicodeDecodeError
Santeri Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
71 suds_import = suds.xsd.doctor.Import ('http://schemas.xmlsoap.org/soap/encoding/', 'http://schemas.xmlsoap.org/soap/encoding/')
e7999383db5a - don't crash if utf parsing yields an UnicodeDecodeError
Santeri Piippo <crimsondusk64@gmail.com>
parents: 14
diff changeset
72 suds_client = suds.client.Client ('https://zandronum.com/tracker/api/soap/mantisconnect.php?wsdl', plugins=[suds.xsd.doctor.ImportDoctor (suds_import)])
3
53486417a8e5 - handle the case where the mantisbt is not available
Santeri Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
73 suds_active = True
20
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
74 except Exception as e:
2603faf5f91b - don't run as root without asking first, added more startup messages
Santeri Piippo <crimsondusk64@gmail.com>
parents: 19
diff changeset
75 print 'Failed to establish MantisBT connection: ' + `e`
3
53486417a8e5 - handle the case where the mantisbt is not available
Santeri Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
76 pass
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
77
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
78 btannounce_active = False
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
79 btannounce_timeout = 0
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
80
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
81 def bt_updatechecktimeout():
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
82 global btannounce_timeout
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
83 btannounce_timeout = time.time() + (Config.get_node ('bt').get_value ('checkinterval', default=5) * 60)
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
84
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
85 def bt_credentials():
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
86 bt = Config.get_node ('bt')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
87 user = bt.get_value ('username', '')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
88 password = bt.get_value ('password', '')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
89 return [user, password]
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
90
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
91 if suds_active:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
92 sys.stdout.write ('Retrieving latest tracker ticket... ')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
93 user, password = bt_credentials()
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
94 btannounce_id = suds_client.service.mc_issue_get_biggest_id (user, password, 0)
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
95 btannounce_active = True
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
96 bt_updatechecktimeout()
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
97 print btannounce_id
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
98
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
99 def bt_getissue(ticket):
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
100 global suds_client
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
101 user, password = bt_credentials()
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
102 return suds_client.service.mc_issue_get (user, password, ticket)
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
103
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
104 def bt_checklatest():
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
105 global btannounce_timeout
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
106 global btannounce_id
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
107
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
108 if time.time() >= btannounce_timeout:
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
109 bt_updatechecktimeout()
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
110 newid = btannounce_id
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
111 try:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
112 user, password = bt_credentials()
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
113 newid = suds_client.service.mc_issue_get_biggest_id (user, password, 0)
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
114 except Exception as e:
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
115 pass
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
116
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
117 while newid > btannounce_id:
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
118 try:
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
119 btannounce_id += 1
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
120 data = bt_getissue (btannounce_id)
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
121
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
122 for client in g_clients:
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
123 client.announce_ticket (data)
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
124 except Exception as e:
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
125 pass
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
126
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
127 #
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
128 # irc_client flags
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
129 #
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
130 CLIF_CONNECTED = (1 << 1)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
131
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
132 #
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
133 # List of all clients
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
134 #
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
135 g_clients = []
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
136
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
137 class channel (object):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
138 name = ""
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
139 password = ""
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
140
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
141 def __init__ (self, name):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
142 self.name = name
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
143
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
144 #
19
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
145 # Prints a line to log channel(s)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
146 #
19
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
147 def chanlog (line):
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
148 for client in g_clients:
19
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
149 if not client.flags & CLIF_CONNECTED:
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
150 continue
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
151
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
152 for channel in client.channels:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
153 if channel.get_value ('logchannel', default=False):
68
ecc161d4a6fa - fixed bad channel config addressing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
154 client.write ("PRIVMSG %s :%s" % (channel.get_value ('name'), line))
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
155
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
156 #
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
157 # Exception handling
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
158 #
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
159 def handle_exception(excType, excValue, trace):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
160 excepterm (traceback.format_exception(excType, excValue, trace))
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
161
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
162 def excepterm(data):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
163 for segment in data:
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
164 for line in segment.splitlines():
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
165 print line
19
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
166 chanlog (line)
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
167
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
168 for client in g_clients:
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
169 if len(data) > 0:
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
170 client.exceptdie()
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
171 else:
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
172 client.quit_irc()
19
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
173
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
174 if g_BotActive:
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
175 restart_self()
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
176 else:
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
177 quit()
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
178
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
179 sys.excepthook = handle_exception
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
180
1
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
181 def check_admin (sender, ident, host, command):
16
6672cecf3ed1 - don't crash if unicode parsing fails, don't require nickname for admin masks
Santeri Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
182 if not "%s@%s" % (ident, host) in g_admins:
1
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
183 raise logical_exception (".%s requires admin access" % command)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
184
1
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
185 class logical_exception (Exception):
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
186 def __init__ (self, value):
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
187 self.value = value
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
188 def __str__ (self):
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
189 return self.value
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
190
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
191 # from http://www.daniweb.com/software-development/python/code/260268/restart-your-python-program
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
192 def restart_self():
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
193 python = sys.executable
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
194 os.execl (python, python, * sys.argv)
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
195
59
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
196 def make_commits_txt():
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
197 global g_needCommitsTxtRebuild
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
198
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
199 if g_needCommitsTxtRebuild == False:
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
200 return
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
201
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
202 print 'Building commits.txt...'
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
203 # Update zandronum-everything
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
204 repo = hgapi.Repo ('zandronum-everything')
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
205 repo.hg_command ('pull', '../zandronum-sandbox')
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
206 repo.hg_command ('pull', '../zandronum-sandbox-stable')
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
207
63
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
208 data = repo.hg_command ('log', '--template', '{node} {date|hgdate}\n')
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
209
59
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
210 f = open ('commits.txt', 'w')
63
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
211
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
212 for line in data.split ('\n'):
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
213 if line == '':
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
214 continue
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
215
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
216 words = line.split (' ')
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
217 timestamp = int (words[1])
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
218 f.write ('%s %s\n' % (words[0], datetime.utcfromtimestamp (timestamp).strftime ('%y%m%d-%H%M')))
59
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
219 f.close()
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
220 g_needCommitsTxtRebuild = False
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
221 #enddef
6a7199a714a1 - make_commits_txt must be higher up..
Teemu Piippo <crimsondusk64@gmail.com>
parents: 58
diff changeset
222
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
223 ' Check if a repository exists '
48
dbef418cc1c8 - now clones sandbox correctly
Teemu Piippo <crimsondusk64@gmail.com>
parents: 47
diff changeset
224 def check_repo_exists (repo_name, repo_owner):
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
225 print 'Checking that %s exists...' % repo_name
48
dbef418cc1c8 - now clones sandbox correctly
Teemu Piippo <crimsondusk64@gmail.com>
parents: 47
diff changeset
226 repo_url = 'https://bitbucket.org/%s/%s' % (repo_owner, repo_name)
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
227 zanrepo = hgapi.Repo (repo_name)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
228
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
229 try:
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
230 zanrepo.hg_command ('id', '.')
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
231 except hgapi.hgapi.HgException:
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
232 # If the repo does not exist, clone it. zandronum-everything can be spawned off other repos though
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
233 if repo_name == 'zandronum-everything':
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
234 if not os.path.exists (repo_name):
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
235 os.makedirs (repo_name)
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
236
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
237 global g_needCommitsTxtRebuild
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
238 g_needCommitsTxtRebuild = True
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
239 print 'Init %s' % repo_name
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
240 zanrepo.hg_command ('init')
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
241 print 'Cloning zandronum-sandbox into %s' % repo_name
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
242 zanrepo.hg_command ('pull', '../zandronum-sandbox')
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
243 print 'Cloning zandronum-sandbox-stable into %s' % repo_name
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
244 zanrepo.hg_command ('pull', '../zandronum-sandbox-stable')
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
245 print 'Done'
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
246 make_commits_txt()
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
247 return
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
248 #fi
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
249
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
250 try:
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
251 print 'Cloning %s...' % repo_name
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
252 zanrepo.hg_clone (repo_url, repo_name)
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
253 print 'Cloning done.'
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
254 except Exception as e:
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
255 print 'Unable to clone %s from %s: %s' % (repo_name, repo_url, str (`e`))
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
256 quit(1)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
257 #tried
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
258 #enddef
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
259
48
dbef418cc1c8 - now clones sandbox correctly
Teemu Piippo <crimsondusk64@gmail.com>
parents: 47
diff changeset
260 check_repo_exists ('zandronum', 'Torr_Samaho')
dbef418cc1c8 - now clones sandbox correctly
Teemu Piippo <crimsondusk64@gmail.com>
parents: 47
diff changeset
261 check_repo_exists ('zandronum-stable', 'Torr_Samaho')
dbef418cc1c8 - now clones sandbox correctly
Teemu Piippo <crimsondusk64@gmail.com>
parents: 47
diff changeset
262 check_repo_exists ('zandronum-sandbox', 'crimsondusk')
51
b0209b707fa2 - now also tracks sandbox-stable
Teemu Piippo <crimsondusk64@gmail.com>
parents: 50
diff changeset
263 check_repo_exists ('zandronum-sandbox-stable', 'crimsondusk')
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
264 check_repo_exists ('zandronum-everything', '')
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
265
66
74d8ca04ff01 - reworked repocheck timeout
Teemu Piippo <crimsondusk64@gmail.com>
parents: 65
diff changeset
266 repocheck_timeout = (time.time()) + 15
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
267
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
268 def get_commit_data (zanrepo, rev, template):
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
269 return zanrepo.hg_command ('log', '-l', '1', '-r', rev, '--template', template)
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
270 #enddef
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
271
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
272 def decipher_hgapi_error (e):
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
273 # Blah, hgapi, why must your error messages be so mangled?
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
274 try:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
275 rawmsg = e.message.replace('\n', '').replace('" +','').replace('\t','')
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
276 errmsg = re.compile (r'.*: tErr: (.*)Out:.*').match (rawmsg).group (1)
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
277 return [True, errmsg]
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
278 except:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
279 return [False, '']
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
280 #endtry
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
281 #enddef
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
282
46
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
283 def bbcodify(commit_diffstat):
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
284 result=''
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
285 for line in commit_diffstat.split('\n'):
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
286 # Add green color-tags for the ++++++++++ stream
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
287 rex = re.compile (r'^(.*)\|(.*) (\+*)(-*)(.*)$')
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
288 match = rex.match (line)
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
289 if match:
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
290 line = '%s|%s [color=#5F7]%s[/color][color=#F53]%s[/color]%s\n' \
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
291 % (match.group (1), match.group (2), match.group (3), match.group (4), match.group (5))
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
292
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
293 # Tracker doesn't seem to like empty color tags
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
294 line = line.replace ('[color=#5F7][/color]', '').replace ('[color=#F53][/color]', '')
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
295 #else:
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
296 #rex = re.compile (r'^(.*) ([0-9]+) insertions\(\+\), ([0-9]+) deletions\(\-\)$')
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
297 #match = rex.match (line)
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
298 #if match:
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
299 #line = '%s [b][color=green]%s[/color][/b] insertions, [b][color=red]%s[/color][/b] deletions\n' \
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
300 #% (match.group (1), match.group (2), match.group (3))
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
301
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
302 result += line
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
303 #done
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
304
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
305 return result
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
306 #enddef
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
307
50
d9ec5928759e - goddamnit
Teemu Piippo <crimsondusk64@gmail.com>
parents: 49
diff changeset
308 def find_developer_by_email (commit_email):
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
309 for developer, emails in Config.get_value ('developer_emails', default={}).iteritems():
49
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
310 for email in emails:
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
311 if commit_email == email:
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
312 return developer
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
313 #fi
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
314 #done
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
315 #done
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
316
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
317 return ''
49
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
318 #enddef
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
319
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
320 ' Retrieves and processes commits for zandronum repositories '
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
321 ' Ensure both repositories are OK before using this! '
66
74d8ca04ff01 - reworked repocheck timeout
Teemu Piippo <crimsondusk64@gmail.com>
parents: 65
diff changeset
322 def process_zan_repo_updates():
69
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
323 global repocheck_timeout
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
324 if time.time() < repocheck_timeout:
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
325 return
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
326
66
74d8ca04ff01 - reworked repocheck timeout
Teemu Piippo <crimsondusk64@gmail.com>
parents: 65
diff changeset
327 for n in ['zandronum-stable', 'zandronum', 'zandronum-sandbox', 'zandronum-sandbox-stable']:
67
Teemu Piippo <crimsondusk64@gmail.com>
parents: 66
diff changeset
328 process_one_repo (n)
69
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
329
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
330 hgns = Config.get_node ('hg')
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
331 repocheck_timeout = time.time() + hgns.get_value ('checkinterval', default=15) * 60
66
74d8ca04ff01 - reworked repocheck timeout
Teemu Piippo <crimsondusk64@gmail.com>
parents: 65
diff changeset
332
74d8ca04ff01 - reworked repocheck timeout
Teemu Piippo <crimsondusk64@gmail.com>
parents: 65
diff changeset
333 def process_one_repo (repo_name):
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
334 global repocheck_timeout
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
335 global suds_client
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
336 global g_clients
69
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
337
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
338 hgns = Config.get_node ('hg')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
339
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
340 if not hgns.get_value ('track', default=True):
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
341 return
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
342
34
1a1ee9e8bda6 - be more verbose when .checkhg is used
Teemu Piippo <crimsondusk64@gmail.com>
parents: 33
diff changeset
343 usestable = repo_name == 'zandronum-stable'
51
b0209b707fa2 - now also tracks sandbox-stable
Teemu Piippo <crimsondusk64@gmail.com>
parents: 50
diff changeset
344 usesandbox = repo_name == 'zandronum-sandbox' or repo_name == 'zandronum-sandbox-stable'
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
345 repo_owner = 'Torr_Samaho' if not usesandbox else 'crimsondusk'
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
346 repo_url = 'https://bitbucket.org/%s/%s' % (repo_owner, repo_name)
34
1a1ee9e8bda6 - be more verbose when .checkhg is used
Teemu Piippo <crimsondusk64@gmail.com>
parents: 33
diff changeset
347 num_commits = 0
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
348 btuser, btpassword = bt_credentials()
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
349 zanrepo = hgapi.Repo (repo_name)
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
350 commit_data = []
42
adbf42ede463 - use a specific delimeter string '@@@@@@@@@@@' for hg incoming data as some commit messages are multi-line
Teemu Piippo <crimsondusk64@gmail.com>
parents: 41
diff changeset
351 delimeter = '@@@@@@@@@@'
69
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
352 print 'Checking %s for updates' % repo_name
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
353
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
354 try:
42
adbf42ede463 - use a specific delimeter string '@@@@@@@@@@@' for hg incoming data as some commit messages are multi-line
Teemu Piippo <crimsondusk64@gmail.com>
parents: 41
diff changeset
355 data = zanrepo.hg_command ('incoming', '--quiet', '--template',
adbf42ede463 - use a specific delimeter string '@@@@@@@@@@@' for hg incoming data as some commit messages are multi-line
Teemu Piippo <crimsondusk64@gmail.com>
parents: 41
diff changeset
356 '{node|short} {desc}' + delimeter)
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
357 except hgapi.hgapi.HgException as e:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
358 deciphered = decipher_hgapi_error (e)
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
359
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
360 if deciphered[0] and len(deciphered[1]) > 0:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
361 chanlog ("error while using hg import on %s: %s" % (repo_name, deciphered[1]))
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
362 #fi
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
363
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
364 return
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
365 except Exception as e:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
366 chanlog ("%s" % `e`)
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
367 return
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
368 #tried
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
369
42
adbf42ede463 - use a specific delimeter string '@@@@@@@@@@@' for hg incoming data as some commit messages are multi-line
Teemu Piippo <crimsondusk64@gmail.com>
parents: 41
diff changeset
370 for line in data.split (delimeter):
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
371 if line == '':
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
372 continue
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
373 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
374
43
637cee1d89f0 - removed line delimeters from hg incoming regex parser
Teemu Piippo <crimsondusk64@gmail.com>
parents: 42
diff changeset
375 rex = re.compile (r'([^ ]+) (.+)')
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
376 match = rex.match (line)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
377 failed = False
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
378
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
379 if not match:
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
380 chanlog ('malformed hg data: %s' % line)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
381 continue
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
382 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
383
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
384 commit_node = match.group (1)
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
385 commit_message = match.group (2)
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
386 commit_data.append ([commit_node, commit_message])
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
387 #done
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
388
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
389 if len (commit_data) > 0:
53
e2b958a7e083 - damnit
Teemu Piippo <crimsondusk64@gmail.com>
parents: 52
diff changeset
390 pull_args = [];
e2b958a7e083 - damnit
Teemu Piippo <crimsondusk64@gmail.com>
parents: 52
diff changeset
391
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
392 for commit in commit_data:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
393 pull_args.append ('-r');
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
394 pull_args.append (commit[0]);
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
395 #done
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
396
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
397 try:
52
24ca8de770ac - fixed pull logic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 51
diff changeset
398 zanrepo.hg_command ('pull', *pull_args)
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
399
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
400 # Also pull these commits to the zandronum main repository
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
401 if usestable:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
402 devrepo = hgapi.Repo ('zandronum')
52
24ca8de770ac - fixed pull logic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 51
diff changeset
403 devrepo.hg_command ('pull', '../zandronum-stable', *pull_args)
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
404 #fi
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
405
51
b0209b707fa2 - now also tracks sandbox-stable
Teemu Piippo <crimsondusk64@gmail.com>
parents: 50
diff changeset
406 # Pull everything into sandboxes too
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
407 if not usesandbox:
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
408 devrepo = hgapi.Repo ('zandronum-sandbox')
52
24ca8de770ac - fixed pull logic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 51
diff changeset
409 devrepo.hg_command ('pull', '../%s' % repo_name, *pull_args)
51
b0209b707fa2 - now also tracks sandbox-stable
Teemu Piippo <crimsondusk64@gmail.com>
parents: 50
diff changeset
410
b0209b707fa2 - now also tracks sandbox-stable
Teemu Piippo <crimsondusk64@gmail.com>
parents: 50
diff changeset
411 devrepo = hgapi.Repo ('zandronum-sandbox-stable')
52
24ca8de770ac - fixed pull logic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 51
diff changeset
412 devrepo.hg_command ('pull', '../%s' % repo_name, *pull_args)
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
413 #fi
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
414
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
415 devrepo = hgapi.Repo ('zandronum-everything')
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
416 devrepo.hg_command ('pull', '../%s' % repo_name, *pull_args)
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
417
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
418 global g_needCommitsTxtRebuild
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
419 g_needCommitsTxtRebuild = True
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
420 except Exception as e:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
421 chanlog ('Warning: unable to pull: %s' % `e`)
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
422 return
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
423 #tried
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
424 #fi
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
425
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
426 for commit in commit_data:
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
427 commit_node = commit[0]
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
428 commit_message = commit[1]
69
1b84de3e0d29 - fixed commit processing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
429 print 'Processing new commit: %s' % commit_node
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
430
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
431 try:
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
432 if usesandbox:
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
433 commit_author = get_commit_data (zanrepo, commit_node, '{author}')
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
434 commit_url = '%s/commits/%s' % (repo_url, commit_node)
49
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
435 commit_email = ''
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
436
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
437 # Remove the email address from the author if possible
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
438 rex = re.compile (r'^(.+) <([^>]+)>$.*')
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
439 match = rex.match (commit_author)
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
440 if match:
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
441 commit_author = match.group (1)
49
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
442 commit_email = match.group (2)
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
443 #fi
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
444
49
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
445 commit_trackeruser = find_developer_by_email (commit_email)
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
446 committer = commit_trackeruser if commit_trackeruser != '' else commit_author
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
447
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
448 for irc_client in g_clients:
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
449 for channel in irc_client.cfg['channels']:
68
ecc161d4a6fa - fixed bad channel config addressing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
450 if channel.get_value ('btprivate', False):
ecc161d4a6fa - fixed bad channel config addressing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
451 irc_client.privmsg (channel.get_value ('name'),
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
452 "%s: new commit %s by %s: %s"
49
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
453 % (repo_name, commit_node, committer, commit_url))
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
454
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
455 for line in commit_message.split ('\n'):
68
ecc161d4a6fa - fixed bad channel config addressing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
456 irc_client.privmsg (channel.get_value ('name'), line)
47
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
457 #fi
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
458 #done
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
459 #done
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
460
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
461 num_commits += 1
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
462 continue
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
463 #fi
103f184951bb - added sandbox support
Teemu Piippo <crimsondusk64@gmail.com>
parents: 46
diff changeset
464
54
180ae24d46f2 - also check for 'should fix' in commit messages
Teemu Piippo <crimsondusk64@gmail.com>
parents: 53
diff changeset
465 rex = re.compile (r'^.*(fixes|resolves|addresses|should fix) ([0-9]+).*$')
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
466 match = rex.match (commit_message)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
467
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
468 if not match:
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
469 continue # no "fixes" message in the commit
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
470 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
471
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
472 ticket_id = int (match.group (2))
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
473
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
474 # Acquire additional data
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
475 moredata = get_commit_data (zanrepo, commit_node,
46
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
476 '{author|nonempty}\n{date(date, \'%A %d %B %Y %T\')}').split('\n')
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
477
46
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
478 if len (moredata) != 2:
40
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
479 chanlog ('error while processing %s: malformed hg data' % commit_node)
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
480 continue
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
481 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
482
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
483 commit_author = moredata[0]
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
484 commit_date = moredata[1]
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
485 commit_email = ""
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
486
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
487 try:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
488 ticket_data = suds_client.service.mc_issue_get (btuser, btpassword, ticket_id)
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
489 except Exception as e:
40
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
490 chanlog ('error while processing %s: %s' % (commit_node, `e`))
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
491 continue
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
492 #tried
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
493
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
494 # Remove the email address from the author if possible
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
495 rex = re.compile (r'^(.+) <([^>]+)>$.*')
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
496 match = rex.match (commit_author)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
497 if match:
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
498 commit_author = match.group (1)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
499 commit_email = match.group (2)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
500 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
501
46
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
502 commit_diffstat = zanrepo.hg_command ('diff', '--change', commit_node, '--stat')
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
503
46
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
504 if len(commit_diffstat) > 0:
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
505 # commit_diffstat = 'Changes in files:\n[code]\n' + commit_diffstat + '\n[/code]'
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
506 commit_diffstat = 'Changes in files:\n' + bbcodify(commit_diffstat)
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
507 else:
c4d231fdf1c0 - now with a more detailed diffstat, in color!
Teemu Piippo <crimsondusk64@gmail.com>
parents: 45
diff changeset
508 commit_diffstat = 'No changes in files.'
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
509
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
510 # Compare the email addresses against known developer usernames
49
2df3d5b2f364 - print username when possible
Teemu Piippo <crimsondusk64@gmail.com>
parents: 48
diff changeset
511 commit_trackeruser = find_developer_by_email (commit_email)
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
512
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
513 if commit_trackeruser != '':
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
514 commit_author += ' [%s]' % commit_trackeruser
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
515 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
516
37
3399d716b3ae - fixed: the [url] tags in BT messages had unnecessary quotes
Teemu Piippo <crimsondusk64@gmail.com>
parents: 36
diff changeset
517 message = 'Issue addressed by commit %s: [b][url=%s/commits/%s]%s[/url][/b]' \
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
518 % (commit_node, repo_url, commit_node, commit_message)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
519 message += "\nCommitted by %s on %s\n\n%s" \
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
520 % (commit_author, commit_date, commit_diffstat)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
521
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
522 need_update = False
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
523
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
524 # If not already set, set handler
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
525 if not 'handler' in ticket_data:
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
526 ticket_data['handler'] = {'name': commit_trackeruser}
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
527 need_update = True
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
528 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
529
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
530 # Find out the status level of the ticket
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
531 needs_testing_level = 70
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
532
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
533 if ticket_data['status']['id'] < needs_testing_level:
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
534 ticket_data.status['id'] = needs_testing_level
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
535 need_update = True
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
536 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
537
35
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
538 # Set target version if not set
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
539 if not 'target_version' in ticket_data:
45
fdfcdf405b16 - bump interpreted version number of zandronum-stable from 1.3 to 1.4
Teemu Piippo <crimsondusk64@gmail.com>
parents: 44
diff changeset
540 ticket_data['target_version'] = '1.4' if repo_name == 'zandronum-stable' else '2.0'
35
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
541 need_update = True
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
542 elif (ticket_data['target_version'] == '2.0' or ticket_data['target_version'] == '2.0-beta') \
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
543 and repo_name == 'zandronum-stable':
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
544 # Target version was 2.0 but this was just committed to zandronum-stable, adjust
45
fdfcdf405b16 - bump interpreted version number of zandronum-stable from 1.3 to 1.4
Teemu Piippo <crimsondusk64@gmail.com>
parents: 44
diff changeset
545 ticket_data['target_version'] = '1.4'
35
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
546 need_update = True
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
547 elif ticket_data['target_version'] == '2.0-beta':
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
548 # Fix target version from 2.0-beta to 2.0
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
549 ticket_data['target_version'] = '2.0'
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
550 need_update = True
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
551 #fi
237e82bcd02f - update target version in tickets when acting upon commit data
Teemu Piippo <crimsondusk64@gmail.com>
parents: 34
diff changeset
552
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
553 # Announce on IRC
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
554 for irc_client in g_clients:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
555 for channel in irc_client.channels:
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
556 if channel.get_value ('btannounce', default=True):
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
557 irc_client.privmsg (channel.get_value ('name'),
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
558 "%s: commit %s fixes issue %d: %s"
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
559 % (repo_name, commit_node, ticket_id, commit_message))
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
560 irc_client.privmsg (channel.get_value ('name'),
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
561 "Read all about it here: " + irc_client.get_ticket_url (ticket_id))
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
562 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
563 #done
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
564 #done
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
565
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
566 if need_update:
36
543d7a5e3b8b - when updating BT tickets, the note data must be cleared in order to not update all the tickets in the ticket. WTF is MantisBT smoking?
Teemu Piippo <crimsondusk64@gmail.com>
parents: 35
diff changeset
567 # We need to remove the note data, otherwise the ticket notes
543d7a5e3b8b - when updating BT tickets, the note data must be cleared in order to not update all the tickets in the ticket. WTF is MantisBT smoking?
Teemu Piippo <crimsondusk64@gmail.com>
parents: 35
diff changeset
568 # will get unnecessary updates. WTF, MantisBT?
543d7a5e3b8b - when updating BT tickets, the note data must be cleared in order to not update all the tickets in the ticket. WTF is MantisBT smoking?
Teemu Piippo <crimsondusk64@gmail.com>
parents: 35
diff changeset
569 ticket_data.notes = []
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
570 suds_client.service.mc_issue_update (btuser, btpassword, ticket_id, ticket_data)
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
571 #fi
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
572
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
573 suds_client.service.mc_issue_note_add (btuser, btpassword, ticket_id, { 'text': message })
34
1a1ee9e8bda6 - be more verbose when .checkhg is used
Teemu Piippo <crimsondusk64@gmail.com>
parents: 33
diff changeset
574 num_commits += 1
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
575 except Exception as e:
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
576 chanlog ('Error while processing %s: %s' % (commit_node, `e`))
39
afd590258a93 - reworked repository watching. Now uses incoming only once to get a list of commits, then pulls, then operates on pulled data. The incoming command doesn't seem to support the '-r' switch properly? Should also be a bit faster now and should use less networking.
Teemu Piippo <crimsondusk64@gmail.com>
parents: 38
diff changeset
577 continue
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
578 #tried
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
579 #done
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
580 #enddef
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
581
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
582 def plural (a):
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
583 return '' if a == 1 else 's'
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
584
1
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
585 #
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
586 # Main IRC client class
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
587 #
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
588 class irc_client (asyncore.dispatcher):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
589 def __init__ (self, cfg, flags):
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
590 self.name = cfg.get_value ('name')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
591 self.host = cfg.get_value ('address')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
592 self.port = cfg.get_value ('port', default=6667)
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
593 self.password = cfg.get_value ('password', default='')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
594 self.channels = cfg.get_nodelist ('channels')
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
595 self.flags = flags
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
596 self.send_buffer = []
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
597 self.umode = cfg.get_value ('umode', default='')
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
598 self.cfg = cfg
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
599 self.desired_name = Config.get_value ('nickname', default='cobalt')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
600 self.mynick = self.desired_name
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
601 self.verbose = Config.get_value ('verbose', default=False)
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
602 self.commandprefix = Config.get_value ('commandprefix', default='.')
8
dd467db4b18e - made conflictsuffix configurable
Santeri Piippo <crimsondusk64@gmail.com>
parents: 7
diff changeset
603
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
604 g_clients.append (self)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
605 asyncore.dispatcher.__init__ (self)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
606 self.create_socket (socket.AF_INET, socket.SOCK_STREAM)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
607 self.connect ((self.host, self.port))
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
608
7
438dc247ceb9 - handle nickname shenanigans: handle 433 message and try reclaim nickname if someone who has taken it (possibly our own ghost) disconnected
Santeri Piippo <crimsondusk64@gmail.com>
parents: 6
diff changeset
609 def register_to_irc (self):
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
610 ident = Config.get_value ('ident', default='cobalt')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
611 gecos = Config.get_value ('gecos', default='cobalt')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
612 self.write ("PASS %s" % self.password)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
613 self.write ("USER %s * * :%s" % (ident, gecos))
7
438dc247ceb9 - handle nickname shenanigans: handle 433 message and try reclaim nickname if someone who has taken it (possibly our own ghost) disconnected
Santeri Piippo <crimsondusk64@gmail.com>
parents: 6
diff changeset
614 self.write ("NICK %s" % self.mynick)
438dc247ceb9 - handle nickname shenanigans: handle 433 message and try reclaim nickname if someone who has taken it (possibly our own ghost) disconnected
Santeri Piippo <crimsondusk64@gmail.com>
parents: 6
diff changeset
615
438dc247ceb9 - handle nickname shenanigans: handle 433 message and try reclaim nickname if someone who has taken it (possibly our own ghost) disconnected
Santeri Piippo <crimsondusk64@gmail.com>
parents: 6
diff changeset
616 def handle_connect (self):
438dc247ceb9 - handle nickname shenanigans: handle 433 message and try reclaim nickname if someone who has taken it (possibly our own ghost) disconnected
Santeri Piippo <crimsondusk64@gmail.com>
parents: 6
diff changeset
617 print "Connected to [%s] %s:%d" % (self.name, self.host, self.port)
438dc247ceb9 - handle nickname shenanigans: handle 433 message and try reclaim nickname if someone who has taken it (possibly our own ghost) disconnected
Santeri Piippo <crimsondusk64@gmail.com>
parents: 6
diff changeset
618 self.register_to_irc()
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
619
17
f604687dd35b - don't try to send stuff we cannot convert to ascii.. I don't like it but it's better than a crash
Santeri Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
620 def write (self, utfdata):
f604687dd35b - don't try to send stuff we cannot convert to ascii.. I don't like it but it's better than a crash
Santeri Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
621 try:
f604687dd35b - don't try to send stuff we cannot convert to ascii.. I don't like it but it's better than a crash
Santeri Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
622 self.send_buffer.append ("%s" % utfdata.decode("utf-8","ignore").encode("ascii","ignore"))
f604687dd35b - don't try to send stuff we cannot convert to ascii.. I don't like it but it's better than a crash
Santeri Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
623 except UnicodeEncodeError:
f604687dd35b - don't try to send stuff we cannot convert to ascii.. I don't like it but it's better than a crash
Santeri Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
624 pass
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
625
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
626 def handle_close (self):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
627 print "Connection to [%s] %s:%d terminated." % (self.name, self.host, self.port)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
628 self.close()
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
629
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
630 def handle_write (self):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
631 self.send_all_now()
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
632
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
633 def readable (self):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
634 return True
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
635
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
636 def writable (self):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
637 return len (self.send_buffer) > 0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
638
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
639 def send_all_now (self):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
640 for line in self.send_buffer:
9
0604f6b9f781 - added verbosity setting
Santeri Piippo <crimsondusk64@gmail.com>
parents: 8
diff changeset
641 if self.verbose:
0604f6b9f781 - added verbosity setting
Santeri Piippo <crimsondusk64@gmail.com>
parents: 8
diff changeset
642 print "[%s] <- %s" % (self.name, line)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
643 self.send ("%s\n" % line)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
644 self.send_buffer = []
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
645
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
646 def handle_read (self):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
647 lines = self.recv (4096).splitlines()
2
1a24dd2d598e - added a basic /idgames search
Santeri Piippo <crimsondusk64@gmail.com>
parents: 1
diff changeset
648 for utfline in lines:
16
6672cecf3ed1 - don't crash if unicode parsing fails, don't require nickname for admin masks
Santeri Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
649 try:
17
f604687dd35b - don't try to send stuff we cannot convert to ascii.. I don't like it but it's better than a crash
Santeri Piippo <crimsondusk64@gmail.com>
parents: 16
diff changeset
650 line = utfline.decode("utf-8","ignore").encode("ascii","ignore")
16
6672cecf3ed1 - don't crash if unicode parsing fails, don't require nickname for admin masks
Santeri Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
651 except UnicodeDecodeError:
6672cecf3ed1 - don't crash if unicode parsing fails, don't require nickname for admin masks
Santeri Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
652 continue
6672cecf3ed1 - don't crash if unicode parsing fails, don't require nickname for admin masks
Santeri Piippo <crimsondusk64@gmail.com>
parents: 15
diff changeset
653
9
0604f6b9f781 - added verbosity setting
Santeri Piippo <crimsondusk64@gmail.com>
parents: 8
diff changeset
654 if self.verbose:
0604f6b9f781 - added verbosity setting
Santeri Piippo <crimsondusk64@gmail.com>
parents: 8
diff changeset
655 print "[%s] -> %s" % (self.name, line)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
656
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
657 if line.startswith ("PING :"):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
658 self.write ("PONG :%s" % line[6:])
14
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
659 else:
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
660 words = line.split(" ")
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
661 if len(words) >= 2:
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
662 if words[1] == "001":
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
663 self.flags |= CLIF_CONNECTED
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
664
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
665 for channel in self.channels:
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
666 self.write ("JOIN %s %s" % (channel.get_value ('name'), channel.get_value ('password', default='')))
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
667
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
668 umode = self.cfg.get_value ('umode', '')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
669
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
670 if umode != '':
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
671 self.write ('MODE %s %s' % (self.mynick, self.cfg.get_value ('umode', '')))
14
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
672 elif words[1] == "PRIVMSG":
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
673 self.handle_privmsg (line)
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
674 elif words[1] == 'QUIT':
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
675 rex = re.compile (r'^:([^!]+)!([^@]+)@([^ ]+) QUIT')
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
676 match = rex.match (line)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
677
14
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
678 # Try reclaim our nickname if possible
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
679 if match and match.group(1) == self.desired_name:
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
680 self.mynick = self.desired_name
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
681 self.write ("NICK %s" % self.mynick)
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
682 elif words[1] == "433":
558379fd6d6a - heartbeat the issue announcer even if we just get a ping
Santeri Piippo <crimsondusk64@gmail.com>
parents: 13
diff changeset
683 #:irc.localhost 433 * cobalt :Nickname is already in use.
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
684 self.mynick += self.cfg.get_value ('conflictsuffix', default='`')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
685 self.write ("NICK " + self.mynick)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
686
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
687 # Check for new issues on the bugtracker
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
688 bt_checklatest()
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
689
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
690 # Check for new commits in the repositories
66
74d8ca04ff01 - reworked repocheck timeout
Teemu Piippo <crimsondusk64@gmail.com>
parents: 65
diff changeset
691 process_zan_repo_updates()
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
692
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
693 def channel_by_name (self, name):
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
694 for channel in self.channels:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
695 if channel.get_value ('name').upper() == args[0].upper():
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
696 return channel
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
697 else:
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
698 raise logical_exception ('unknown channel ' + args[0])
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
699
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
700 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
701 #
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
702 # Handle a PRIVMSG line from the IRC server
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
703 #
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
704 def handle_privmsg (self, line):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
705 rex = re.compile (r'^:([^!]+)!([^@]+)@([^ ]+) PRIVMSG ([^ ]+) :(.+)$')
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
706 match = rex.match (line)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
707 if match:
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
708 sender = match.group (1)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
709 user = match.group (2)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
710 host = match.group (3)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
711 channel = match.group (4)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
712 message = match.group (5)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
713 replyto = channel if channel != g_mynick else sender
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
714
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
715 # Check for tracker url in the message
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
716 url = Config.get_node ('bt').get_value ('url')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
717 http_regex = re.compile (r'.*http(s?)://%s/view\.php\?id=([0-9]+).*' % url)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
718 http_match = http_regex.match (line)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
719
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
720 # Check for command.
10
1b726db7b0ec - respect the commandprefix option
Santeri Piippo <crimsondusk64@gmail.com>
parents: 9
diff changeset
721 if len(message) >= 2 and message[0] == self.commandprefix and message[1] != self.commandprefix:
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
722 stuff = message[1:].split(' ')
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
723 command = stuff[0]
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
724 args = stuff[1:]
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
725 try:
62
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
726 self.handle_command (sender, user, host, replyto, command, args, message)
21
8c389f46a056 - handle hg errors better
Santeri Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
727 except logical_exception as e:
8c389f46a056 - handle hg errors better
Santeri Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
728 for line in e.value.split ('\n'):
8c389f46a056 - handle hg errors better
Santeri Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
729 if len(line) > 0:
8c389f46a056 - handle hg errors better
Santeri Piippo <crimsondusk64@gmail.com>
parents: 20
diff changeset
730 self.privmsg (replyto, "error: %s" % line)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
731 elif http_match:
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
732 self.get_ticket_data (replyto, http_match.group (2), False)
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
733 else:
19
ca618214fd07 - control connections turned into log channels
Santeri Piippo <crimsondusk64@gmail.com>
parents: 18
diff changeset
734 chanlog ("Recieved bad PRIVMSG: %s" % line)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
735
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
736 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
737 #
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
738 # Get the URL for a specified ticket
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
739 #
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
740 def get_ticket_url (self, ticket):
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
741 url = Config.get_node ('bt').get_value ('url')
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
742 return 'https://%s/view.php?id=%s' % (url, ticket)
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
743
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
744 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
745 #
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
746 # Retrieve a ticket from mantisbt
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
747 #
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
748 def get_ticket_data (self, replyto, ticket, withlink):
3
53486417a8e5 - handle the case where the mantisbt is not available
Santeri Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
749 if suds_active == False:
53486417a8e5 - handle the case where the mantisbt is not available
Santeri Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
750 return
53486417a8e5 - handle the case where the mantisbt is not available
Santeri Piippo <crimsondusk64@gmail.com>
parents: 2
diff changeset
751
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
752 data = {}
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
753 try:
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
754 data = bt_getissue (ticket)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
755 except Exception, e:
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
756 self.privmsg (replyto, "Failed to get info for issue %s: %s" % (ticket, `e`))
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
757
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
758 if data:
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
759 if data['view_state']['name'] == 'private':
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
760 allowprivate = False
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
761
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
762 for channel in self.channels:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
763 if channel.get_value ('name') == replyto and channel.get_value ('btprivate', False):
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
764 allowprivate = True
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
765 break
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
766 #fi
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
767 #done
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
768
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
769 if not allowprivate:
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
770 self.privmsg (replyto, 'Error: ticket %s is private' % ticket)
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
771 return
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
772 #fi
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
773 #fi
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
774
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
775 self.privmsg (replyto, "Issue %s: %s: Reporter: %s, assigned to: %s, status: %s (%s)" % \
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
776 (ticket, \
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
777 data.summary, \
4
bd9508f8a10f - don't crash if ticket data doesn't have a reporter name (can happen if the reporter is banned)
Santeri Piippo <crimsondusk64@gmail.com>
parents: 3
diff changeset
778 data.reporter.name if hasattr (data.reporter, 'name') else "<unknown>", \
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
779 data.handler.name if hasattr (data, 'handler') else "nobody", \
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
780 data.status.name, \
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
781 data.resolution.name))
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
782
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
783 if withlink:
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
784 self.privmsg (replyto, "Read all about it here: " + self.get_ticket_url (ticket))
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
785 #fi
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
786 #fi
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
787 #enddef
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
788
62
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
789 def is_admin (self, ident, host):
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
790 return ("%s@%s" % (ident, host)) in g_admins
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
791
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
792 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
793 #
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
794 # Process an IRC command
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
795 #
62
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
796 def handle_command (self, sender, ident, host, replyto, command, args, message):
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
797 kvargs = {'sender': sender, 'ident': ident, 'host': host, 'replyto': replyto, 'cmdname': command, 'message': message}
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
798
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
799 try:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
800 result = ModuleCore.call_command (self, **kvargs)
62
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
801
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
802 if result:
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
803 return
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
804 except ModuleCore.CommandError as e:
62
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
805 lines = str (e).split ('\n')
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
806 self.privmsg (replyto, 'error: %s' % lines[0])
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
807
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
808 for line in lines[1:]:
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
809 self.privmsg (replyto, ' ' + line)
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
810 return
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
811 #tried
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
812
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
813 if command == 'ticket':
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
814 if len(args) != 1:
1
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
815 raise logical_exception ("usage: .%s <ticket>" % command)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
816 self.get_ticket_data (replyto, args[0], True)
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
817 elif command == 'testannounce':
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
818 check_admin (sender, ident, host, command)
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
819 if len(args) != 1:
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
820 raise logical_exception ("usage: .%s <ticket>" % command)
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
821 self.announce_ticket (bt_getissue (args[0]))
29
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
822 elif command == 'checkhg':
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
823 check_admin (sender, ident, host, command)
5767ee263b12 - now is able to track zandronum mercurial repositories and react to 'fixes 0001234' trigger messages in them
Teemu Piippo <crimsondusk64@gmail.com>
parents: 28
diff changeset
824 global repocheck_timeout
66
74d8ca04ff01 - reworked repocheck timeout
Teemu Piippo <crimsondusk64@gmail.com>
parents: 65
diff changeset
825 repocheck_timeout = 0
67
Teemu Piippo <crimsondusk64@gmail.com>
parents: 66
diff changeset
826 process_zan_repo_updates()
6
2c6265a99d32 - added .die
Santeri Piippo <crimsondusk64@gmail.com>
parents: 5
diff changeset
827 elif command == 'die':
2c6265a99d32 - added .die
Santeri Piippo <crimsondusk64@gmail.com>
parents: 5
diff changeset
828 check_admin (sender, ident, host, command)
2c6265a99d32 - added .die
Santeri Piippo <crimsondusk64@gmail.com>
parents: 5
diff changeset
829 quit()
23
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
830 elif command == 'convert':
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
831 if len(args) != 3 or args[1] != 'as':
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
832 raise logical_exception ("usage: .%s <value> as <valuetype>" % command)
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
833
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
834 value = float (args[0])
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
835 valuetype = args[2]
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
836
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
837 if valuetype in ['radians', 'degrees']:
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
838 if valuetype == 'radians':
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
839 radvalue = value
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
840 degvalue = (value * 180.) / math.pi
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
841 else:
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
842 radvalue = (value * math.pi) / 180.
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
843 degvalue = value
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
844
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
845 self.privmsg (replyto, '%s radians, %s degrees (%s)' %(radvalue, degvalue, degvalue % 360.))
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
846 elif valuetype in ['celsius', 'fahrenheit']:
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
847 if valuetype == 'celsius':
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
848 celvalue = value
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
849 fahrvalue = value * 1.8 + 32
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
850 else:
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
851 celvalue = (value - 32) / 1.8
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
852 fahrvalue = value
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
853
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
854 self.privmsg (replyto, '%s degrees celsius, %s degrees fahrenheit' %(celvalue, fahrvalue))
c25944cac3e6 - added .convert with angle and temperature conversions
Santeri Piippo <crimsondusk64@gmail.com>
parents: 21
diff changeset
855 else:
24
3ef436e7d7c1 - updated error
Santeri Piippo <crimsondusk64@gmail.com>
parents: 23
diff changeset
856 raise logical_exception ('unknown valuetype, expected one of: degrees, radians (angle conversion), ' +
3ef436e7d7c1 - updated error
Santeri Piippo <crimsondusk64@gmail.com>
parents: 23
diff changeset
857 'celsius, fahrenheit (temperature conversion)')
28
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
858 elif command == 'urban' or command == 'ud':
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
859 try:
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
860 if len(args) < 1:
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
861 raise logical_exception ('usage: %s <word>' % command)
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
862
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
863 url = 'http://api.urbandictionary.com/v0/define?term=%s' % ('%20'.join (args))
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
864 response = urllib2.urlopen (url).read()
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
865 data = json.loads (response)
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
866
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
867 if 'list' in data and len(data['list']) > 0 and 'word' in data['list'][0] and 'definition' in data['list'][0]:
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
868 word = data['list'][0]['word']
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
869 definition = data['list'][0]['definition'].replace ('\r', ' ').replace ('\n', ' ').replace (' ', ' ')
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
870 up = data['list'][0]['thumbs_up']
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
871 down = data['list'][0]['thumbs_down']
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
872 self.privmsg (replyto, "\002%s\002: %s\0033 %d\003 up,\0035 %d\003 down" % (word, definition, up, down))
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
873 else:
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
874 self.privmsg (replyto, "couldn't find a definition of \002%s\002" % args[0])
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
875 except logical_exception as e:
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
876 raise e
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
877 except Exception as e:
30257c78904f - added urban dictionary lookup
Teemu Piippo <crimsondusk64@gmail.com>
parents: 27
diff changeset
878 raise logical_exception ('Urban dictionary lookup failed: %s' % `e`)
40
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
879 elif command == 'hg':
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
880 check_admin (sender, ident, host, command)
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
881
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
882 if len(args) < 2:
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
883 raise logical_exception ('usage: %s <repo> <command...>' % command)
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
884
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
885 try:
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
886 repo = hgapi.Repo (args[0])
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
887 result = repo.hg_command (*args[1:])
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
888 self.privmsg (replyto, result)
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
889 except hgapi.hgapi.HgException as e:
41
aa214b9504de - refactor
Teemu Piippo <crimsondusk64@gmail.com>
parents: 40
diff changeset
890 result = decipher_hgapi_error (e)
aa214b9504de - refactor
Teemu Piippo <crimsondusk64@gmail.com>
parents: 40
diff changeset
891
aa214b9504de - refactor
Teemu Piippo <crimsondusk64@gmail.com>
parents: 40
diff changeset
892 if result[0]:
aa214b9504de - refactor
Teemu Piippo <crimsondusk64@gmail.com>
parents: 40
diff changeset
893 self.privmsg (replyto, 'error: %s' % result[1])
aa214b9504de - refactor
Teemu Piippo <crimsondusk64@gmail.com>
parents: 40
diff changeset
894 else:
44
616743868d4a - post the raw-form error if unable to decipher
Teemu Piippo <crimsondusk64@gmail.com>
parents: 43
diff changeset
895 self.privmsg (replyto, 'error: %s' % `e`)
41
aa214b9504de - refactor
Teemu Piippo <crimsondusk64@gmail.com>
parents: 40
diff changeset
896 #fi
40
f6512aacb114 - fine tuning, added .hg command
Teemu Piippo <crimsondusk64@gmail.com>
parents: 39
diff changeset
897 #tried
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
898 elif command == 'changeset' or command == 'cset' or command == 'rev':
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
899 if len(args) != 1:
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
900 raise logical_exception ('usage: %s <changeset>' % command)
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
901
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
902 repo = hgapi.Repo ('zandronum-everything')
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
903 data = ""
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
904 node = args[0]
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
905
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
906 # Possibly we're passed a date version instead. Try find the node for this.
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
907 try:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
908 datetime.strptime (args[0], '%y%m%d-%H%M')
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
909 make_commits_txt()
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
910 commits_txt = open ('commits.txt', 'r')
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
911
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
912 for line in commits_txt:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
913 data = line.replace ('\n', '').split (' ')
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
914 if data[1] == args[0]:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
915 node = data[0]
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
916 break
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
917 else:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
918 self.privmsg (replyto, 'couldn\'t find changset for date %s' % args[0])
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
919 return
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
920 #done
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
921 except ValueError:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
922 pass
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
923 #tried
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
924
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
925 # The sandboxes contain all revisions in zandronum and zandronum-stable.
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
926 # Thus we only need to try find the revision in the sandbox repos.
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
927 try:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
928 repo.hg_command ("log", "-r", node, "--template", " ")
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
929 except hgapi.hgapi.HgException:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
930 self.privmsg (replyto, 'couldn\'t find changeset %s' % (node))
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
931 return
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
932 #tried
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
933
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
934 try:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
935 data = repo.hg_command ("log", "-r", node, "--template",
63
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
936 "{node|short}@@@@@@@{desc}@@@@@@@{author}@@@@@@@{diffstat}@@@@@@@{date|hgdate}")
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
937 data = data.split ('@@@@@@@')
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
938
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
939 node = data[0]
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
940 message = data[1]
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
941 author = data[2]
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
942 diffstat = data[3]
63
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
943 date = datetime.utcfromtimestamp (int (data[4].split (' ')[0]))
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
944 delta = datetime.now() - date
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
945 datestring = ''
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
946
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
947 # Remove the email address from the author if possible
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
948 match = re.compile (r'^(.+) <([^>]+)>$.*').match (author)
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
949 if match:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
950 author = match.group (1)
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
951 email = match.group (2)
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
952
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
953 username = find_developer_by_email (email)
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
954
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
955 if username != '':
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
956 author = username
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
957
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
958 if delta.days < 4:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
959 if delta.days == 0:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
960 if delta.seconds < 60:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
961 datestring = 'just now'
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
962 elif delta.seconds < 3600:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
963 minutes = delta.seconds / 60
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
964 datestring = '%d minute%s ago' % (minutes, plural (minutes))
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
965 else:
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
966 hours = delta.seconds / 3600
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
967 datestring = '%d hour%s ago' % (hours, plural (hours))
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
968 else:
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
969 datestring = '%d day%s ago' % (delta.days, plural (delta.days))
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
970 else:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
971 datestring = 'on %s' % (str (date))
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
972 #fi
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
973
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
974 self.privmsg (replyto, 'changeset %s (%s): committed by %s %s (%s)' % \
63
a1a864c25e42 - fixed: .cset didn't operate properly with dates
Teemu Piippo <crimsondusk64@gmail.com>
parents: 62
diff changeset
975 (node, date.strftime ('%y%m%d-%H%M'), author, datestring, diffstat))
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
976
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
977 for line in message.split ('\n'):
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
978 self.privmsg (replyto, ' ' + line)
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
979 except hgapi.hgapi.HgException as e:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
980 result = decipher_hgapi_error (e)
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
981
58
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
982 if result[0]:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
983 self.privmsg (replyto, 'error: %s' % result[1])
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
984 else:
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
985 self.privmsg (replyto, 'error: %s' % `e`)
577cecfea94e - now able to get changeset by date
Teemu Piippo <crimsondusk64@gmail.com>
parents: 57
diff changeset
986 #tried
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
987 # else:
55
441a04262cb4 - added the .changeset (aka .cset or .rev) command to get revision info
Teemu Piippo <crimsondusk64@gmail.com>
parents: 54
diff changeset
988 # raise logical_exception ("unknown command `.%s`" % command)
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
989
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
990 #
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
991 # Print a ticket announce to appropriate channels
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
992 #
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
993 def announce_ticket (self, data):
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
994 idstring = "%d" % data.id
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
995 while len(idstring) < 7:
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
996 idstring = "0" + idstring
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
997
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
998 isprivate = data['view_state']['name'] == 'private'
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
999 reporter = data['reporter']['name'] if hasattr (data['reporter'], 'name') else '<nobody>'
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
1000
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1001 for channel in self.channels:
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1002 if channel.get_value ('btannounce', False):
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1003 if not isprivate or (channel.get_value ('btprivate', False)):
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
1004 self.write ("PRIVMSG %s :[%s] New issue %s, reported by %s: %s: %s" % \
68
ecc161d4a6fa - fixed bad channel config addressing
Teemu Piippo <crimsondusk64@gmail.com>
parents: 67
diff changeset
1005 (channel.get_value ('name'), data['project']['name'], idstring, reporter,
32
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
1006 data['summary'], self.get_ticket_url (idstring)))
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
1007 #fi
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
1008 #fi
88899b43810b - corrected repository handling on error: print errors with commit node and pull even when processing fails
Teemu Piippo <crimsondusk64@gmail.com>
parents: 31
diff changeset
1009 #done
12
e843c08ee51e - added mantisbt new ticket announcing
Santeri Piippo <crimsondusk64@gmail.com>
parents: 11
diff changeset
1010
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1011 def handle_error(self):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1012 excepterm (traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1013
62
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
1014 def restart(self):
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
1015 excepterm('')
052a8a1e3d7d - revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents: 60
diff changeset
1016
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1017 def privmsg (self, channel, msg):
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1018 self.write ("PRIVMSG %s :%s" % (channel, msg))
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1019
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1020 def close_connection (self, message):
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
1021 if self.flags & CLIF_CONNECTED:
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1022 self.write ("QUIT :" + message)
5
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
1023 self.send_all_now()
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
1024 self.close()
b6d2b7de0a6d - added .restart and .update
Santeri Piippo <crimsondusk64@gmail.com>
parents: 4
diff changeset
1025
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1026 def quit_irc (self):
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1027 self.close_connection ('Leaving')
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1028
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1029 def exceptdie (self):
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1030 self.close_connection ('Caught exception')
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1031
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1032 def keyboardinterrupt (self):
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1033 self.close_connection ('KeyboardInterrupt')
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1034
1
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
1035 #
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
1036 # Main procedure:
29c7e9d13a30 - fixed up exception handling, no longer connects to every possible connection, rather uses the autoconnect config entry
Santeri Piippo <crimsondusk64@gmail.com>
parents: 0
diff changeset
1037 #
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1038 try:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1039 autoconnects = Config.get_value ('autoconnect', [])
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1040
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1041 if len (autoconnects) == 0:
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1042 print "Nowhere to connect."
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1043 quit()
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1044
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1045 for aconn in autoconnects:
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1046 for conndata in Config.get_nodelist ('connections'):
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1047 if conndata.get_value ('name') == aconn:
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1048 irc_client (conndata, 0)
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1049 break
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1050 else:
65
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1051 raise ValueError ("unknown autoconnect entry %s" % (aconn))
20bd76353eb5 - modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents: 63
diff changeset
1052
26
580a2a9fd2e5 - made cobalt die if autoconnect entries cannot be found plus other stuff
Teemu Piippo <crimsondusk64@gmail.com>
parents: 25
diff changeset
1053 g_BotActive = True
0
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1054 asyncore.loop()
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1055 except KeyboardInterrupt:
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1056 for client in g_clients:
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1057 client.keyboardinterrupt()
4904744b40eb - initial commit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff changeset
1058 quit()

mercurial