Kiln » TortoiseHg » TortoiseHg
Clone URL:  
hgproc.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# # front-end for TortoiseHg dialogs # # Copyright (C) 2007 TK Soh <teekaysoh@gmail.com> # import os import sys from mercurial import ui from tortoise.thgutil import get_prog_root # always use hg exe installed with TortoiseHg thgdir = get_prog_root() try: os.environ['PATH'] = os.path.pathsep.join([thgdir, os.environ['PATH']]) except KeyError: os.environ['PATH'] = thgdir if not sys.stdin.isatty(): try: import win32traceutil # FIXME: quick workaround traceback caused by missing "closed" # attribute in win32trace. from mercurial import ui def write_err(self, *args): for a in args: sys.stderr.write(str(a)) ui.ui.write_err = write_err except ImportError: pass except pywintypes.error: pass # Map hgproc commands to dialog modules in hggtk/ from hggtk import commit, status, addremove, tagadd, tags, history, merge from hggtk import diff, revisions, update, serve, clone, synch, hgcmd, about from hggtk import recovery, thgconfig, datamine _dialogs = { 'commit' : commit, 'status' : status, 'revert' : status, 'add' : addremove, 'remove' : addremove, 'tag' : tagadd, 'tags' : tags, 'log' : history, 'history': history, 'diff' : diff, 'merge' : merge, 'tip' : revisions, 'parents': revisions, 'heads' : revisions, 'update' : update, 'clone' : clone, 'serve' : serve, 'synch' : synch, 'about' : about, 'config' : thgconfig, 'recovery': recovery, 'datamine': datamine } def get_list_from_file(filename): fd = open(filename, "r") lines = [ x.replace("\n", "") for x in fd.readlines() ] fd.close() return lines def get_option(args): import getopt long_opt_list = ('command=', 'exepath=', 'listfile=', 'root=', 'cwd=', 'deletelistfile', 'nogui') opts, args = getopt.getopt(args, "c:e:l:dR:", long_opt_list) # Set default options options = {} options['hgcmd'] = 'help' options['cwd'] = os.getcwd() options['files'] = [] options['gui'] = True listfile = None delfile = False for o, a in opts: if o in ("-c", "--command"): options['hgcmd'] = a elif o in ("-l", "--listfile"): listfile = a elif o in ("-d", "--deletelistfile"): delfile = True elif o in ("--nogui"): options['gui'] = False elif o in ("-R", "--root"): options['root'] = a elif o in ("--cwd"): options['cwd'] = a if listfile: options['files'] = get_list_from_file(listfile) if delfile: os.unlink(listfile) return (options, args) def parse(args): option, args = get_option(args) cmdline = ['hg', option['hgcmd']] if 'root' in option: cmdline.append('--repository') cmdline.append(option['root']) cmdline.extend(args) cmdline.extend(option['files']) option['cmdline'] = cmdline global _dialogs dialog = _dialogs.get(option['hgcmd'], hgcmd) dialog.run(**option) def run_trapped(args): try: dlg = parse(sys.argv[1:]) except: import traceback from hggtk.dialog import error_dialog tr = traceback.format_exc() print tr error_dialog(None, "Error executing hgproc", tr) if __name__=='__main__': #dlg = parse(['-c', 'help', '--', '-v']) #dlg = parse(['-c', 'log', '--root', 'c:\hg\h1', '--', '-l1']) #dlg = parse(['-c', 'status', '--root', 'c:\hg\h1', ]) #dlg = parse(['-c', 'add', '--root', 'c:\hg\h1', '--listfile', 'c:\\hg\\h1\\f1', '--notify']) #dlg = parse(['-c', 'rollback', '--root', 'c:\\hg\\h1']) print "hgproc sys.argv =", sys.argv dlg = run_trapped(sys.argv[1:])