annotate hg_status.py @ 4:f714a6a7842c

start new web view for hgand github syncing
author drewp@bigasterisk.com
date Fri, 24 Jul 2020 14:42:08 -0700
parents
children db4037285592
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
1 from dataclasses import dataclass, field
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
2 import datetime
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
3 import json
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
4 import logging
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
5 from pathlib import Path
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
6 import time
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
7 import traceback
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
8 from typing import Dict, Optional, Tuple
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
9
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
10 import cyclone.httpserver
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
11 import cyclone.sse
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
12 import cyclone.web
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
13 from cycloneerr import PrettyErrorHandler
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
14 from dateutil.parser import parse
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
15 from dateutil.tz import tzlocal
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
16 import docopt
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
17 from ruamel.yaml import YAML
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
18 from standardservice.logsetup import log, verboseLogging
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
19 import treq
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
20 from twisted.internet import reactor
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
21 from twisted.internet.defer import inlineCallbacks, returnValue
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
22 from twisted.internet.utils import getProcessOutput, _UnexpectedErrorOutput
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
23 import tzlocal
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
24
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
25 local = tzlocal.get_localzone()
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
26 githubOwner = 'drewp'
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
27
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
28
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
29 @inlineCallbacks
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
30 def runHg(cwd, args):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
31 if args[0] not in ['push']:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
32 args.extend(['-T', 'json'])
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
33 j = yield getProcessOutput('/usr/local/bin/hg', args, path=cwd)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
34 returnValue(json.loads(j) if j else None)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
35
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
36
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
37 @dataclass
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
38 class Repo:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
39 path: Path
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
40 github: bool
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
41 _cache: Dict[str, Tuple[float, object]] = field(default_factory=dict)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
42
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
43 def _isStale(self, group) -> Optional[object]:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
44 now = time.time()
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
45 if group not in self._cache:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
46 return True
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
47 if now > self._cache[group][0] + 86400:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
48 return True
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
49 print('fresh')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
50 return False
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
51
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
52 def _save(self, group, obj):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
53 now = time.time()
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
54 self._cache[group] = (now, obj)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
55
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
56 def _get(self, group):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
57 print('get')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
58 return self._cache[group][1]
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
59
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
60 @inlineCallbacks
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
61 def getStatus(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
62 if self._isStale('status'):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
63 try:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
64 statusResp = yield runHg(self.path, ['status'])
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
65 except Exception as e:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
66 status = {'error': repr(e)}
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
67 else:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
68 unknowns = len([row for row in statusResp if row['status'] == '?'])
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
69 status = {'unknown': unknowns, 'changed': len(statusResp) - unknowns}
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
70 self._save('status', status)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
71 returnValue(self._get('status'))
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
72
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
73 @inlineCallbacks
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
74 def getLatestHgCommit(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
75 if self._isStale('log'):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
76 rows = yield runHg(self.path, ['log', '--limit', '1'])
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
77 commit = rows[0]
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
78 sec = commit['date'][0]
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
79 t = datetime.datetime.fromtimestamp(sec, local)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
80 self._save('log', {'email': commit['user'], 't': t.isoformat(), 'message': commit['desc']})
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
81 returnValue(self._get('log'))
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
82
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
83 @inlineCallbacks
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
84 def getLatestGithubCommit(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
85 if self._isStale('github'):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
86 resp = yield treq.get(f'https://api.github.com/repos/{githubOwner}/{self.path.name}/commits?per_page=1',
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
87 timeout=5,
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
88 headers={
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
89 'User-agent': 'reposync by github.com/drewp',
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
90 'Accept': 'application/vnd.github.v3+json'
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
91 })
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
92 ret = yield treq.json_content(resp)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
93 commit = ret[0]['commit']
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
94 t = parse(commit['committer']['date']).astimezone(local).isoformat()
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
95 self._save('github', {'email': commit['committer']['email'], 't': t, 'message': commit['message']})
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
96 returnValue(self._get('github'))
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
97
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
98 @inlineCallbacks
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
99 def clearGithubMaster(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
100 '''bang(pts/13):/tmp/reset% git init
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
101 Initialized empty Git repository in /tmp/reset/.git/
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
102 then github set current to a new branch called 'clearing' with https://developer.github.com/v3/repos/#update-a-repository
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
103 bang(pts/13):/tmp/reset% git remote add origin git@github.com:drewp/href.git
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
104 bang(pts/13):/tmp/reset% git push origin :master
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
105 To github.com:drewp/href.git
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
106 - [deleted] master
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
107 maybe --set-upstream origin
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
108 bang(pts/13):/tmp/reset% git remote set-branches origin master
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
109 ?
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
110 then push
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
111 then github setdefault to master
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
112 then github delete clearing
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
113 '''
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
114
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
115 @inlineCallbacks
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
116 def pushToGithub(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
117 if not self.github:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
118 raise ValueError
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
119 yield runHg(self.path, ['bookmark', '--rev', 'default', 'master'])
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
120 out = yield runHg(self.path, ['push', f'git+ssh://git@github.com/{githubOwner}/{self.path.name}.git'])
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
121 print(f'out fompushh {out}')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
122
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
123
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
124 class GithubSync(PrettyErrorHandler, cyclone.web.RequestHandler):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
125
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
126 @inlineCallbacks
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
127 def post(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
128 try:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
129 path = self.get_argument('repo')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
130 repo = [r for r in self.settings.repos if str(r.path) == path][0]
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
131 yield repo.pushToGithub()
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
132 except Exception:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
133 traceback.print_exc()
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
134 raise
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
135
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
136
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
137 class Statuses(cyclone.sse.SSEHandler):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
138
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
139 def update(self, key, data):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
140 self.sendEvent(json.dumps({'key': key, 'update': data}).encode('utf8'))
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
141
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
142 def bind(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
143 self.toProcess = self.settings.repos[:]
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
144 reactor.callLater(0, self.runOne)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
145
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
146 @inlineCallbacks
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
147 def runOne(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
148 if not self.toProcess:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
149 print('done')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
150 return
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
151 repo = self.toProcess.pop(0)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
152
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
153 try:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
154 update = {
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
155 'path': str(repo.path),
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
156 'github': repo.github,
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
157 'status': (yield repo.getStatus()),
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
158 'hgLatest': (yield repo.getLatestHgCommit())
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
159 }
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
160 if repo.github:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
161 update['githubLatest'] = (yield repo.getLatestGithubCommit())
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
162 self.update(str(repo.path), update)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
163 except Exception:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
164 log.warn(f'not reporting on {repo}')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
165 traceback.print_exc()
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
166 reactor.callLater(0, self.runOne)
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
167
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
168
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
169 def main():
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
170 args = docopt.docopt('''
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
171 Usage:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
172 hg_status.py [options]
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
173
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
174 Options:
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
175 -v, --verbose more logging
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
176 ''')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
177 verboseLogging(args['--verbose'])
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
178
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
179 import sys
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
180 sys.path.append('/usr/lib/python3/dist-packages')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
181 import OpenSSL
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
182
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
183 yaml = YAML(typ='safe')
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
184 config = yaml.load(open('config.yaml'))
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
185 repos = [Repo(Path(row['dir']), row['github']) for row in config['hg_repos']]
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
186
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
187 class Application(cyclone.web.Application):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
188
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
189 def __init__(self):
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
190 handlers = [
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
191 (r"/()", cyclone.web.StaticFileHandler, {
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
192 'path': '.',
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
193 'default_filename': 'index.html'
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
194 }),
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
195 (r'/build/(bundle\.js)', cyclone.web.StaticFileHandler, {
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
196 'path': './build/'
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
197 }),
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
198 (r'/status/events', Statuses),
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
199 (r'/githubSync', GithubSync),
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
200 ]
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
201 cyclone.web.Application.__init__(
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
202 self,
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
203 handlers,
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
204 repos=repos,
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
205 debug=args['--verbose'],
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
206 template_path='.',
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
207 )
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
208
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
209 reactor.listenTCP(10001, Application())
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
210 reactor.run()
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
211
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
212
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
213 if __name__ == '__main__':
f714a6a7842c start new web view for hgand github syncing
drewp@bigasterisk.com
parents:
diff changeset
214 main()