Sat, 26 Apr 2025 12:34:32 +0200
MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.
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 | |
11090
f5f5f5803935
Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11080
diff
changeset
|
3 | # Copyright (c) 2011 - 2025 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 | |
10069
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
13 | from PyQt6.QtCore import ( |
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
14 | QByteArray, |
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
15 | QCoreApplication, |
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
16 | QObject, |
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
17 | QProcess, |
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
18 | QThread, |
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
19 | pyqtSlot, |
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
20 | ) |
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
|
21 | 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
|
22 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
23 | from .HgUtilities import getHgExecutable, prepareProcess |
2816
05aab5164d64
A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
24 | |
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
|
25 | |
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 | 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
|
27 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | 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
|
29 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
30 | |
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
|
31 | 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
|
32 | 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
|
33 | 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
|
34 | ReturnFormat = ">i" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
35 | |
1325
8dd723182a16
Improved the Mercurial command server client fix to be more generic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1323
diff
changeset
|
36 | 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
|
37 | |
3555
43473ba956ce
Fixed a bug in the Mercurial client exhibited by Mercurial 3.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3532
diff
changeset
|
38 | 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
|
39 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | Constructor |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
41 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
42 | @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
|
43 | @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
|
44 | @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
|
45 | @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
|
46 | @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
|
47 | @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
|
48 | @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
|
49 | @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
|
50 | """ |
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
|
51 | super().__init__(parent) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
52 | |
1261
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
53 | 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
|
54 | 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
|
55 | 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
|
56 | 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
|
57 | self.__cancel = False |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
58 | self.__commandRunning = False |
1261
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
59 | self.__repoPath = repoPath |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
60 | |
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
|
61 | # 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
|
62 | self.__serverArgs = vcs.initCommand("serve") |
11080
92cd5f094e7a
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10690
diff
changeset
|
63 | self.__serverArgs.extend(["--cmdserver", "pipe"]) |
92cd5f094e7a
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10690
diff
changeset
|
64 | self.__serverArgs.extend(["--config", "ui.interactive=True"]) |
92cd5f094e7a
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10690
diff
changeset
|
65 | self.__serverArgs.extend(["--config", "progress.assume-tty=True"]) |
92cd5f094e7a
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10690
diff
changeset
|
66 | self.__serverArgs.extend( |
92cd5f094e7a
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10690
diff
changeset
|
67 | ["--config", "progress.format=topic bar number estimate"] |
92cd5f094e7a
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10690
diff
changeset
|
68 | ) |
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
|
69 | 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
|
70 | 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
|
71 | self.__serverArgs.append(repoPath) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
72 | |
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
|
73 | 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
|
74 | 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
|
75 | 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
|
76 | # 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
|
77 | 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
|
78 | 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
|
79 | |
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
|
80 | 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
|
81 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | 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
|
83 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
84 | @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
|
85 | 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
|
86 | @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
|
87 | """ |
1261
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
88 | self.__server = QProcess() |
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
89 | 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
|
90 | |
1261
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
91 | # connect signals |
bb9ce68a0236
Change the Mercurial client to terminate more reliably.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1260
diff
changeset
|
92 | 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
|
93 | |
2816
05aab5164d64
A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
94 | 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
|
95 | |
8288
809d5d5ac2ba
Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8234
diff
changeset
|
96 | exe = getHgExecutable() |
809d5d5ac2ba
Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8234
diff
changeset
|
97 | 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
|
98 | 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
|
99 | 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
|
100 | return False, self.tr( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
101 | "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
|
102 | "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
|
103 | ).format(exe) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
104 | |
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
|
105 | 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
|
106 | 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
|
107 | 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
|
108 | return ok, error |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
109 | |
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
|
110 | 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
|
111 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | 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
|
113 | """ |
1550
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
114 | 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
|
115 | self.__server.closeWriteChannel() |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
116 | res = self.__server.waitForFinished(5000) |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
117 | if not res: |
1550
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
118 | self.__server.terminate() |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
119 | res = self.__server.waitForFinished(3000) |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
120 | if not res: |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
121 | self.__server.kill() |
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
122 | self.__server.waitForFinished(3000) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
123 | |
1550
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
124 | self.__started = False |
2318
3a3ee7cc2ad6
Changed some signal handlings (disconnect).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
125 | self.__server.deleteLater() |
1550
0550f9915d65
Fixed an issue stopping the Mercurial commandline server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
126 | self.__server = None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
127 | |
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
|
128 | 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
|
129 | """ |
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 | 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
|
131 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
132 | @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
|
133 | 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
|
134 | @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
|
135 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | 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
|
137 | return self.startServer() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
138 | |
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
|
139 | 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
|
140 | """ |
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 | 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
|
142 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
143 | @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
|
144 | 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
|
145 | @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
|
146 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | 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
|
148 | 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
|
149 | 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
|
150 | 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
|
151 | 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
|
152 | |
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
|
153 | msg = msg.split("\n") |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
154 | |
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
|
155 | 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
|
156 | 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
|
157 | "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
|
158 | ).format(msg[0]) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
159 | 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
|
160 | if not self.__capabilities: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
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 | "'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
|
163 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
164 | |
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 | 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
|
166 | 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
|
167 | 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
|
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 | 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
|
170 | 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
|
171 | "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
|
172 | ).format(msg[1]) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
173 | 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
|
174 | 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
|
175 | 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
|
176 | self.__encoding = encoding |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
177 | |
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
|
178 | return True, "" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
179 | |
10069
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
180 | @pyqtSlot(int, QProcess.ExitStatus) |
10690
fab36645aa7d
Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
181 | def __serverFinished(self, _exitCode, _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
|
182 | """ |
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 | 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
|
184 | |
10690
fab36645aa7d
Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
185 | @param _exitCode exit code of the process (unused) |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
186 | @type int |
10690
fab36645aa7d
Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
187 | @param _exitStatus exit status of the process (unused) |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
188 | @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
|
189 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | self.__started = False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
191 | |
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 | 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
|
193 | """ |
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 | 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
|
195 | |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
196 | @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
|
197 | @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
|
198 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
199 | 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
|
200 | 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
|
201 | 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
|
202 | return "", "" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
203 | |
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
|
204 | 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
|
205 | 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
|
206 | 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
|
207 | 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
|
208 | 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
|
209 | else: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
210 | 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
|
211 | 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
|
212 | self.__server.read(HgClient.OutputFormatSize) |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
213 | data = self.__server.read(length) |
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
214 | if channel == "r": |
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
215 | return (channel, data) |
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
216 | else: |
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
217 | 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
|
218 | 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
|
219 | return "", "" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
220 | |
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
|
221 | 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
|
222 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | 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
|
224 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
225 | @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
|
226 | @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
|
227 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | 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
|
229 | data = data.encode(self.__encoding) |
8322
b422b4e77d19
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8319
diff
changeset
|
230 | 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
|
231 | 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
|
232 | self.__server.waitForBytesWritten() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
233 | |
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
|
234 | 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
|
235 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | 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
|
237 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
238 | @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
|
239 | @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
|
240 | @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
|
241 | 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
|
242 | 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
|
243 | @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
|
244 | @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
|
245 | 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
|
246 | 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
|
247 | @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
|
248 | @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
|
249 | 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
|
250 | @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
|
251 | @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
|
252 | 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
|
253 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | 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
|
255 | return -1 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
256 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
257 | 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
|
258 | self.__writeDataBlock("\0".join(args)) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
259 | |
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
|
260 | 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
|
261 | QCoreApplication.processEvents() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
262 | |
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
|
263 | 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
|
264 | return -10 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
265 | |
1391
5acd6ee51956
A small refinement to the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1365
diff
changeset
|
266 | 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
|
267 | return -1 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
268 | |
8319
ea11a3948f40
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8318
diff
changeset
|
269 | 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
|
270 | 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
|
271 | 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
|
272 | channel, data = self.__readChannel() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
273 | |
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
|
274 | # 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
|
275 | 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
|
276 | 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
|
277 | 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
|
278 | # 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
|
279 | 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
|
280 | 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
|
281 | else: |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
282 | 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
|
283 | self.__writeDataBlock(inputData) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
284 | |
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
|
285 | # 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
|
286 | 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
|
287 | outputChannels[channel](data) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
288 | |
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
|
289 | # 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
|
290 | elif channel == "r": |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
291 | 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
|
292 | |
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
|
293 | # 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
|
294 | 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
|
295 | raise RuntimeError( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
296 | "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
|
297 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
298 | |
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
|
299 | # 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
|
300 | 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
|
301 | pass |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
302 | |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
303 | 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
|
304 | """ |
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
305 | 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
|
306 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
307 | @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
|
308 | @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
|
309 | @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
|
310 | @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
|
311 | @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
|
312 | 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
|
313 | @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
|
314 | """ |
2405
d4b5f3bd4720
Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2318
diff
changeset
|
315 | from .HgClientPromptDialog import HgClientPromptDialog |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
316 | |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
317 | 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
|
318 | isPassword = False |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
319 | 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
|
320 | 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
|
321 | 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
|
322 | 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
|
323 | return inputData, isPassword |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
324 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
325 | 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
|
326 | """ |
4d5fc346bd3b
Started implementing an interface to the Mercurial command server (as of Mercurial >= 1.9).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | 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
|
328 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
329 | @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
|
330 | @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
|
331 | @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
|
332 | 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
|
333 | 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
|
334 | 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
|
335 | 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
|
336 | 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
|
337 | @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
|
338 | @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
|
339 | 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
|
340 | @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
|
341 | @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
|
342 | 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
|
343 | 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
|
344 | @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
|
345 | @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
|
346 | @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
|
347 | @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
|
348 | 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
|
349 | 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
|
350 | @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
|
351 | """ |
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
|
352 | 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
|
353 | # 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
|
354 | 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
|
355 | 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
|
356 | return "", startError |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
357 | |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
358 | 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
|
359 | 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
|
360 | 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
|
361 | errorBuffer = None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
362 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
363 | 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
|
364 | 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
|
365 | 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
|
366 | 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
|
367 | 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
|
368 | 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
|
369 | 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
|
370 | 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
|
371 | 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
|
372 | outputChannels["e"] = errorBuffer.write |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
373 | |
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
|
374 | 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
|
375 | 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
|
376 | |
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
|
377 | 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
|
378 | 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
|
379 | 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
|
380 | return reply, isPassword |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
381 | |
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
|
382 | 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
|
383 | else: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
384 | |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
385 | def myprompt(size): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
386 | msg = ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
387 | 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
|
388 | if outputBuffer is None |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
389 | else outputBuffer.getvalue() |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
390 | ) |
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
|
391 | 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
|
392 | return reply, isPassword |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
393 | |
1323
3126121aeb4f
Added a prompt window for the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1266
diff
changeset
|
394 | 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
|
395 | 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
|
396 | inputChannels["I"] = inputData |
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 | 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
|
399 | 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
|
400 | |
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
|
401 | 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
|
402 | 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
|
403 | |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
404 | self.__commandRunning = False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
405 | |
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
|
406 | return out, err |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
407 | |
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
|
408 | 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
|
409 | """ |
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
|
410 | 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
|
411 | """ |
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
|
412 | self.__cancel = True |
1244
ffdb35928247
Improved the Mercurial command server client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1242
diff
changeset
|
413 | self.restartServer() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
414 | |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
415 | def wasCanceled(self): |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
416 | """ |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
417 | 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
|
418 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
419 | @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
|
420 | @rtype bool |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
421 | """ |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
422 | return self.__cancel |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
423 | |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
424 | def isExecuting(self): |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
425 | """ |
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
426 | 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
|
427 | |
7441
f115f4469795
HgDialog: extended the dialog to allow inputting user responses to client prompts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7399
diff
changeset
|
428 | @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
|
429 | @rtype bool |
1256
885706dbb69f
Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1247
diff
changeset
|
430 | """ |
2962
d6c9d1ca2da4
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2816
diff
changeset
|
431 | return self.__commandRunning |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
432 | |
7979
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
433 | 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
|
434 | """ |
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
435 | 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
|
436 | |
7979
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
437 | @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
|
438 | @rtype str |
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
439 | """ |
54b73174ab61
Mercurial: fixed a few issues introduced during the recent code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
440 | return self.__repoPath |