Sat, 31 Dec 2022 16:23:21 +0100
Updated copyright for 2023.
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
9653
e67609152c5e
Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9576
diff
changeset
|
3 | # Copyright (c) 2011 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing an interface to the Mercurial command server. |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
10 | import io |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | import struct |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
13 | from PyQt6.QtCore import QByteArray, QCoreApplication, QObject, QProcess, QThread |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
14 | from PyQt6.QtWidgets import QDialog |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
15 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
16 | from .HgUtilities import getHgExecutable, prepareProcess |
2816
05aab5164d64
A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
17 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | class HgClient(QObject): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | Class implementing the Mercurial command server interface. |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
23 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | InputFormat = ">I" |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | OutputFormat = ">cI" |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | OutputFormatSize = struct.calcsize(OutputFormat) |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | ReturnFormat = ">i" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
28 | |
1325
8dd723182a16
Improved the Mercurial command server client fix to be more generic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1323
diff
changeset
|
29 | Channels = (b"I", b"L", b"o", b"e", b"r", b"d") |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
30 | |
3555
43473ba956ce
Fixed a bug in the Mercurial client exhibited by Mercurial 3.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3532
diff
changeset
|
31 | def __init__(self, repoPath, encoding, vcs, parent=None): |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | Constructor |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
34 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
35 | @param repoPath root directory of the repository |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
36 | @type str |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
37 | @param encoding encoding to be used by the command server |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
38 | @type str |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
39 | @param vcs reference to the VCS object |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
40 | @type Hg |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
41 | @param parent reference to the parent object |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
42 | @type QObject |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
44 | super().__init__(parent) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
45 | |
1261
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
46 | self.__server = None |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.__started = False |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | self.__version = None |
3555
43473ba956ce
Fixed a bug in the Mercurial client exhibited by Mercurial 3.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3532
diff
changeset
|
49 | self.__encoding = vcs.getEncoding() |
1242
dfb9609caf51
Continued implementing an interface to the Mercurial command server. Modified client all all dialogs done so far to provide a cancel capability..
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1241
diff
changeset
|
50 | self.__cancel = False |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
51 | self.__commandRunning = False |
1261
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
52 | self.__repoPath = repoPath |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
53 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | # generate command line and environment |
3555
43473ba956ce
Fixed a bug in the Mercurial client exhibited by Mercurial 3.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3532
diff
changeset
|
55 | self.__serverArgs = vcs.initCommand("serve") |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.__serverArgs.append("--cmdserver") |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | self.__serverArgs.append("pipe") |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | self.__serverArgs.append("--config") |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.__serverArgs.append("ui.interactive=True") |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | if repoPath: |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | self.__serverArgs.append("--repository") |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | self.__serverArgs.append(repoPath) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
63 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | if encoding: |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | self.__encoding = encoding |
3302
e92f0dd51979
Removed the Mercurial support for a command options dialog and added useable global options to the Mercurial config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3190
diff
changeset
|
66 | if "--encoding" in self.__serverArgs: |
e92f0dd51979
Removed the Mercurial support for a command options dialog and added useable global options to the Mercurial config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3190
diff
changeset
|
67 | # use the defined encoding via the environment |
e92f0dd51979
Removed the Mercurial support for a command options dialog and added useable global options to the Mercurial config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3190
diff
changeset
|
68 | index = self.__serverArgs.index("--encoding") |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
69 | del self.__serverArgs[index : index + 2] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
70 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | def startServer(self): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | Public method to start the command server. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
74 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
75 | @return tuple of flag indicating a successful start and an error |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
76 | message in case of failure |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
77 | @rtype tuple of (bool, str) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """ |
1261
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
79 | self.__server = QProcess() |
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
80 | self.__server.setWorkingDirectory(self.__repoPath) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
81 | |
1261
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
82 | # connect signals |
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
83 | self.__server.finished.connect(self.__serverFinished) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
84 | |
2816
05aab5164d64
A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
85 | prepareProcess(self.__server, self.__encoding) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
86 | |
8288
809d5d5ac2ba
Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8234
diff
changeset
|
87 | exe = getHgExecutable() |
809d5d5ac2ba
Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8234
diff
changeset
|
88 | self.__server.start(exe, self.__serverArgs) |
7399
7088860e4a00
HgClient: increased the wait time for starting the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7370
diff
changeset
|
89 | serverStarted = self.__server.waitForStarted(15000) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | if not serverStarted: |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
91 | return False, self.tr( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
92 | "The process {0} could not be started. " |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
93 | "Ensure, that it is in the search path." |
8288
809d5d5ac2ba
Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8234
diff
changeset
|
94 | ).format(exe) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
95 | |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7979
diff
changeset
|
96 | self.__server.setReadChannel(QProcess.ProcessChannel.StandardOutput) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | ok, error = self.__readHello() |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | self.__started = ok |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | return ok, error |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
100 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | def stopServer(self): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | Public method to stop the command server. |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | """ |
1550
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
105 | if self.__server is not None: |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
106 | self.__server.closeWriteChannel() |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
107 | res = self.__server.waitForFinished(5000) |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
108 | if not res: |
1550
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
109 | self.__server.terminate() |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
110 | res = self.__server.waitForFinished(3000) |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
111 | if not res: |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
112 | self.__server.kill() |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
113 | self.__server.waitForFinished(3000) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
114 | |
1550
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
115 | self.__started = False |
2318
3a3ee7cc2ad6
Changed some signal handlings (disconnect).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
116 | self.__server.deleteLater() |
1550
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
117 | self.__server = None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
118 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | def restartServer(self): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | Public method to restart the command server. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
122 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
123 | @return tuple of flag indicating a successful start and an error |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
124 | message in case of failure |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
125 | @rtype tuple of (bool, str) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | self.stopServer() |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | return self.startServer() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
129 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | def __readHello(self): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | Private method to read the hello message sent by the command server. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
133 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
134 | @return tuple of flag indicating success and an error message in case |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
135 | of failure |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
136 | @rtype tuple of (bool, str) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | ch, msg = self.__readChannel() |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | if not ch: |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
140 | return False, self.tr("Did not receive the 'hello' message.") |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | elif ch != "o": |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
142 | return False, self.tr("Received data on unexpected channel.") |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
143 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | msg = msg.split("\n") |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
145 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | if not msg[0].startswith("capabilities: "): |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
147 | return False, self.tr( |
9576
be9f8e7e42e0
Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
148 | "Bad 'hello' message, expected 'capabilities: ' but got '{0}'." |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
149 | ).format(msg[0]) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
150 | self.__capabilities = msg[0][len("capabilities: ") :] |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | if not self.__capabilities: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
152 | return False, self.tr( |
9576
be9f8e7e42e0
Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
153 | "'capabilities' message did not contain any capability." |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
154 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
155 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | self.__capabilities = set(self.__capabilities.split()) |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | if "runcommand" not in self.__capabilities: |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | return False, "'capabilities' did not contain 'runcommand'." |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
159 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | if not msg[1].startswith("encoding: "): |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
161 | return False, self.tr( |
9576
be9f8e7e42e0
Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
162 | "Bad 'hello' message, expected 'encoding: ' but got '{0}'." |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
163 | ).format(msg[1]) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
164 | encoding = msg[1][len("encoding: ") :] |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | if not encoding: |
9576
be9f8e7e42e0
Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
166 | return False, self.tr("'encoding' message did not contain any encoding.") |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | self.__encoding = encoding |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
168 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | return True, "" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
170 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | def __serverFinished(self, exitCode, exitStatus): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | Private slot connected to the finished signal. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
174 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
175 | @param exitCode exit code of the process |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
176 | @type int |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
177 | @param exitStatus exit status of the process |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
178 | @type QProcess.ExitStatus |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | self.__started = False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
181 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | def __readChannel(self): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | Private method to read data from the command server. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
185 | |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
186 | @return tuple of channel designator and channel data |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
187 | @rtype tuple of (str, int or str or bytes) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
189 | if self.__server.bytesAvailable() > 0 or self.__server.waitForReadyRead(10000): |
3518
1d681235c1b4
Fixed the Mercurial command server client handling large data chunks on slow machines.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3302
diff
changeset
|
190 | data = bytes(self.__server.peek(HgClient.OutputFormatSize)) |
1d681235c1b4
Fixed the Mercurial command server client handling large data chunks on slow machines.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3302
diff
changeset
|
191 | if not data or len(data) < HgClient.OutputFormatSize: |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | return "", "" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
193 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | channel, length = struct.unpack(HgClient.OutputFormat, data) |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | channel = channel.decode(self.__encoding) |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | if channel in "IL": |
3518
1d681235c1b4
Fixed the Mercurial command server client handling large data chunks on slow machines.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3302
diff
changeset
|
197 | self.__server.read(HgClient.OutputFormatSize) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | return channel, length |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | else: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
200 | if self.__server.bytesAvailable() < HgClient.OutputFormatSize + length: |
3518
1d681235c1b4
Fixed the Mercurial command server client handling large data chunks on slow machines.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3302
diff
changeset
|
201 | return "", "" |
1d681235c1b4
Fixed the Mercurial command server client handling large data chunks on slow machines.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3302
diff
changeset
|
202 | self.__server.read(HgClient.OutputFormatSize) |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
203 | data = self.__server.read(length) |
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
204 | if channel == "r": |
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
205 | return (channel, data) |
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
206 | else: |
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
207 | return (channel, str(data, self.__encoding, "replace")) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | else: |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | return "", "" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
210 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | def __writeDataBlock(self, data): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | Private slot to write some data to the command server. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
214 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
215 | @param data data to be sent |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
216 | @type str |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | if not isinstance(data, bytes): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | data = data.encode(self.__encoding) |
8322
b422b4e77d19
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8319
diff
changeset
|
220 | self.__server.write(struct.pack(HgClient.InputFormat, len(data))) |
b422b4e77d19
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8319
diff
changeset
|
221 | self.__server.write(data) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | self.__server.waitForBytesWritten() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
223 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | def __runcommand(self, args, inputChannels, outputChannels): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | Private method to run a command in the server (low level). |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
227 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
228 | @param args list of arguments for the command |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
229 | @type list of str |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | @param inputChannels dictionary of input channels. The dictionary must |
2962
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
231 | have the keys 'I' and 'L' and each entry must be a function |
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
232 | receiving the number of bytes to write. |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
233 | @type dict |
2962
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
234 | @param outputChannels dictionary of output channels. The dictionary |
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
235 | must have the keys 'o' and 'e' and each entry must be a function |
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
236 | receiving the data. |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
237 | @type dict |
2962
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
238 | @return result code of the command, -1 if the command server wasn't |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
239 | started or -10, if the command was canceled |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
240 | @rtype int |
2962
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
241 | @exception RuntimeError raised to indicate an unexpected command |
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
242 | channel |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | if not self.__started: |
1247
a6bedc641fcd
Fixed a bug in the Mercurial command server client causing it to return a wrong result code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1244
diff
changeset
|
245 | return -1 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
246 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
247 | self.__server.write(QByteArray(b"runcommand\n")) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
248 | self.__writeDataBlock("\0".join(args)) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
249 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | while True: |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | QCoreApplication.processEvents() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
252 | |
1242
dfb9609caf51
Continued implementing an interface to the Mercurial command server. Modified client all all dialogs done so far to provide a cancel capability..
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1241
diff
changeset
|
253 | if self.__cancel: |
1247
a6bedc641fcd
Fixed a bug in the Mercurial command server client causing it to return a wrong result code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1244
diff
changeset
|
254 | return -10 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
255 | |
1391
5acd6ee51956
A small refinement to the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1365
diff
changeset
|
256 | if self.__server is None: |
5acd6ee51956
A small refinement to the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1365
diff
changeset
|
257 | return -1 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
258 | |
8319
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
259 | if self.__server.bytesAvailable() == 0: |
1365
8f8cad8f989e
Slight enhancement to the Mercurial command line server client to make it more CPU usage friendly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1325
diff
changeset
|
260 | QThread.msleep(50) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | continue |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | channel, data = self.__readChannel() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
263 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | # input channels |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | if channel in inputChannels: |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
266 | if channel == "L": |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
267 | inputData, isPassword = inputChannels[channel](data) |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
268 | # echo the input to the output if it was a prompt |
4471
2dedc0c4a8fa
Fixed an issue causing a password being entered in visible and shown in the output of the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
269 | if not isPassword: |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
270 | outputChannels["o"](inputData) |
4471
2dedc0c4a8fa
Fixed an issue causing a password being entered in visible and shown in the output of the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
271 | else: |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
272 | inputData = inputChannels[channel](data) |
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
273 | self.__writeDataBlock(inputData) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
274 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | # output channels |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | elif channel in outputChannels: |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | outputChannels[channel](data) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
278 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | # result channel, command is finished |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | elif channel == "r": |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
281 | return struct.unpack(HgClient.ReturnFormat, data)[0] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
282 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | # unexpected but required channel |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | elif channel.isupper(): |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | raise RuntimeError( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
286 | "Unexpected but required channel '{0}'.".format(channel) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
287 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
288 | |
3518
1d681235c1b4
Fixed the Mercurial command server client handling large data chunks on slow machines.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3302
diff
changeset
|
289 | # optional channels or no channel at all |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | else: |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | pass |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
292 | |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
293 | def __prompt(self, size, message): |
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
294 | """ |
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
295 | Private method to prompt the user for some input. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
296 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
297 | @param size maximum length of the requested input |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
298 | @type int |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
299 | @param message message sent by the server |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
300 | @type str |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
301 | @return tuple containing data entered by the user and |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
302 | a flag indicating a password input |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
303 | @rtype tuple of (str, bool) |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
304 | """ |
2405
d4b5f3bd4720
Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2318
diff
changeset
|
305 | from .HgClientPromptDialog import HgClientPromptDialog |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
306 | |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
307 | inputData = "" |
4471
2dedc0c4a8fa
Fixed an issue causing a password being entered in visible and shown in the output of the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
308 | isPassword = False |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
309 | dlg = HgClientPromptDialog(size, message) |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7979
diff
changeset
|
310 | if dlg.exec() == QDialog.DialogCode.Accepted: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
311 | inputData = dlg.getInput() + "\n" |
4471
2dedc0c4a8fa
Fixed an issue causing a password being entered in visible and shown in the output of the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
312 | isPassword = dlg.isPassword() |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
313 | return inputData, isPassword |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
314 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
315 | def runcommand(self, args, prompt=None, inputData=None, output=None, error=None): |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | Public method to execute a command via the command server. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
318 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
319 | @param args list of arguments for the command |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
320 | @type list of str |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
321 | @param prompt function to reply to prompts by the server. It |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | receives the max number of bytes to return and the contents |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
323 | of the output channel received so far. If an output function is |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
324 | given as well, the prompt data is passed through the output |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
325 | function. The function must return the input data and a flag |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
326 | indicating a password input. |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
327 | @type func(int, str) -> (str, bool) |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
328 | @param inputData function to reply to bulk data requests by the |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
329 | server. It receives the max number of bytes to return. |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
330 | @type func(int) -> bytes |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
331 | @param output function receiving the data from the server. If a |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
332 | prompt function is given, it is assumed, that the prompt output |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
333 | is passed via this function. |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
334 | @type func(str) |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
335 | @param error function receiving error messages from the server |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
336 | @type func(str) |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
337 | @return tuple of output and errors of the command server. In case |
2962
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
338 | output and/or error functions were given, the respective return |
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
339 | value will be an empty string. |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
340 | @rtype tuple of (str, str) |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | """ |
7370
5fb53279f2df
Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
342 | if not self.__started: |
5fb53279f2df
Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
343 | # try to start the Mercurial command server |
5fb53279f2df
Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
344 | ok, startError = self.startServer() |
5fb53279f2df
Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
345 | if not ok: |
5fb53279f2df
Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
346 | return "", startError |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
347 | |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
348 | self.__commandRunning = True |
1266
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
349 | outputChannels = {} |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
350 | outputBuffer = None |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
351 | errorBuffer = None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
352 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
353 | if output is None: |
1266
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
354 | outputBuffer = io.StringIO() |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
355 | outputChannels["o"] = outputBuffer.write |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
356 | else: |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
357 | outputChannels["o"] = output |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
358 | if error: |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
359 | outputChannels["e"] = error |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
360 | else: |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
361 | errorBuffer = io.StringIO() |
ce8a103501a5
Modified Mercurial command server client to allow for passing it output and/or error callbacks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1261
diff
changeset
|
362 | outputChannels["e"] = errorBuffer.write |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
363 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | inputChannels = {} |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | if prompt is not None: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
366 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | def func(size): |
8234
fcb6b4b96274
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
368 | msg = "" if outputBuffer is None else outputBuffer.getvalue() |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
369 | reply, isPassword = prompt(size, msg) |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
370 | return reply, isPassword |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
371 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | inputChannels["L"] = func |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
373 | else: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
374 | |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
375 | def myprompt(size): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
376 | msg = ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
377 | self.tr("For message see output dialog.") |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
378 | if outputBuffer is None |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
379 | else outputBuffer.getvalue() |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
380 | ) |
4471
2dedc0c4a8fa
Fixed an issue causing a password being entered in visible and shown in the output of the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
381 | reply, isPassword = self.__prompt(size, msg) |
2dedc0c4a8fa
Fixed an issue causing a password being entered in visible and shown in the output of the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
382 | return reply, isPassword |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
383 | |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
384 | inputChannels["L"] = myprompt |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
385 | if inputData is not None: |
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
386 | inputChannels["I"] = inputData |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
387 | |
1242
dfb9609caf51
Continued implementing an interface to the Mercurial command server. Modified client all all dialogs done so far to provide a cancel capability..
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1241
diff
changeset
|
388 | self.__cancel = False |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | self.__runcommand(args, inputChannels, outputChannels) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
390 | |
8234
fcb6b4b96274
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
391 | out = outputBuffer.getvalue() if outputBuffer else "" |
fcb6b4b96274
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
392 | err = errorBuffer.getvalue() if errorBuffer else "" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
393 | |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
394 | self.__commandRunning = False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
395 | |
1240
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | return out, err |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
397 | |
1242
dfb9609caf51
Continued implementing an interface to the Mercurial command server. Modified client all all dialogs done so far to provide a cancel capability..
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1241
diff
changeset
|
398 | def cancel(self): |
dfb9609caf51
Continued implementing an interface to the Mercurial command server. Modified client all all dialogs done so far to provide a cancel capability..
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1241
diff
changeset
|
399 | """ |
dfb9609caf51
Continued implementing an interface to the Mercurial command server. Modified client all all dialogs done so far to provide a cancel capability..
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1241
diff
changeset
|
400 | Public method to cancel the running command. |
dfb9609caf51
Continued implementing an interface to the Mercurial command server. Modified client all all dialogs done so far to provide a cancel capability..
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1241
diff
changeset
|
401 | """ |
dfb9609caf51
Continued implementing an interface to the Mercurial command server. Modified client all all dialogs done so far to provide a cancel capability..
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1241
diff
changeset
|
402 | self.__cancel = True |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
403 | self.restartServer() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
404 | |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
405 | def wasCanceled(self): |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
406 | """ |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
407 | Public method to check, if the last command was canceled. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
408 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
409 | @return flag indicating the cancel state |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
410 | @rtype bool |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
411 | """ |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
412 | return self.__cancel |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
413 | |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
414 | def isExecuting(self): |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
415 | """ |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
416 | Public method to check, if the server is executing a command. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
417 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
418 | @return flag indicating the execution of a command |
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
419 | @rtype bool |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
420 | """ |
2962
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
421 | return self.__commandRunning |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
422 | |
7979
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
423 | def getRepository(self): |
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
424 | """ |
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
425 | Public method to get the repository path this client is serving. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
426 | |
7979
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
427 | @return repository path |
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
428 | @rtype str |
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
429 | """ |
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
430 | return self.__repoPath |