src/eric7/Plugins/VcsPlugins/vcsMercurial/HgUtilities.py

Tue, 10 Dec 2024 15:46:34 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:46:34 +0100
branch
eric7
changeset 11090
f5f5f5803935
parent 11080
92cd5f094e7a
permissions
-rw-r--r--

Updated copyright for 2025.

178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
dd9f0bca5e2f Added plugin for Mercurial version control system.
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) 2010 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing some common utility functions for the Mercurial package.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
11 import re
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
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: 9420
diff changeset
13 from PyQt6.QtCore import QCoreApplication, QProcess, QProcessEnvironment
2816
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
14
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
15 from eric7.SystemUtilities import OSUtilities, PythonUtilities
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
16
11076
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
17 # progress bar topic, bar (ignored), value, maximum, estimate
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
18 progressRe = re.compile(r"(\w+)\s+(?:\[[=> ]*\])\s+(\d+)/(\d+)\s+(\w+)")
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
19
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
20 # version major, minor, patch, additional
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
21 versionRe = re.compile(r".*?(\d+)\.(\d+)\.?(\d+)?(\+[0-9a-f-]+)?")
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
22
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
23
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
24 def getHgExecutable():
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
25 """
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
26 Function to get the full path of the Mercurial executable.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
28 @return path of the Mercurial executable
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
29 @rtype str
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
30 """
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9288
diff changeset
31 from eric7.Plugins.PluginVcsMercurial import VcsMercurialPlugin
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32
9054
adae534abaf0 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
33 exe = VcsMercurialPlugin.getPreferences("MercurialExecutablePath")
adae534abaf0 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
34 if not exe:
adae534abaf0 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
35 program = "hg"
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
36 if OSUtilities.isWindowsPlatform():
9054
adae534abaf0 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
37 program += ".exe"
9420
92810aebc909 Changed the code to use sysconfig.get_path("scripts") wherever possible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
38
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
39 progPath = os.path.join(PythonUtilities.getPythonScriptsDirectory(), program)
9420
92810aebc909 Changed the code to use sysconfig.get_path("scripts") wherever possible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
40 if os.path.exists(progPath):
92810aebc909 Changed the code to use sysconfig.get_path("scripts") wherever possible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
41 exe = progPath
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
42
9288
ce20d7c936b1 Little fix in HgUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
43 if not exe:
ce20d7c936b1 Little fix in HgUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
44 exe = program
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
45
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
46 return exe
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
48
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 def getConfigPath():
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
51 Function to get the filename of the config file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
53 @return filename of the config file
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
54 @rtype str
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 """
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
56 if OSUtilities.isWindowsPlatform():
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 userprofile = os.environ["USERPROFILE"]
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 return os.path.join(userprofile, "Mercurial.ini")
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 else:
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
60 homedir = OSUtilities.getHomeDir()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 return os.path.join(homedir, ".hgrc")
2816
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
62
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
63
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
64 def prepareProcess(proc, encoding="", language=""):
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
65 """
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
66 Function to prepare the given process.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
67
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
68 @param proc reference to the process to be prepared
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
69 @type QProcess
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
70 @param encoding encoding to be used by the process
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
71 @type str
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
72 @param language language to be set
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
73 @type str
2816
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
74 """
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
75 env = QProcessEnvironment.systemEnvironment()
11080
92cd5f094e7a Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11076
diff changeset
76 env.insert("HGPLAINEXCEPT", "progress") # maybe set to 'i18n,progress'
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77
2816
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
78 # set the encoding for the process
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
79 if encoding:
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
80 env.insert("HGENCODING", encoding)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
2816
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
82 # set the language for the process
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
83 if language:
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
84 env.insert("LANGUAGE", language)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85
2816
05aab5164d64 A little optimization for the Mercurial interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
86 proc.setProcessEnvironment(env)
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
87
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
88
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
89 def hgVersion(plugin):
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
90 """
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
91 Public method to determine the Mercurial version.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
92
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
93 @param plugin reference to the plugin object
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
94 @type VcsMercurialPlugin
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
95 @return tuple containing the Mercurial version as a string and as a tuple
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
96 and an error message.
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
97 @rtype tuple of str, tuple of int and str
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
98 """
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
99 versionStr = ""
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
100 version = ()
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
101 errorMsg = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
103 exe = getHgExecutable()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
105 args = ["version"]
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
106 args.extend(plugin.getGlobalOptions())
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
107 process = QProcess()
8288
809d5d5ac2ba Made Mercurial an optional installation requirement.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
108 process.start(exe, args)
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
109 procStarted = process.waitForStarted(5000)
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
110 if procStarted:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
111 finished = process.waitForFinished(30000)
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
112 if finished and process.exitCode() == 0:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 output = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114 process.readAllStandardOutput(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115 plugin.getPreferences("Encoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117 )
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
118 versionStr = output.splitlines()[0].split()[-1][0:-1]
11076
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
119 v = list(versionRe.match(versionStr).groups())
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
120 if v[-1] is None:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
121 del v[-1]
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
122 for i in range(3):
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
123 try:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
124 v[i] = int(v[i])
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
125 except TypeError:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
126 v[i] = 0
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
127 except IndexError:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
128 v.append(0)
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
129 version = tuple(v)
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
130 else:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
131 if finished:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
132 errorMsg = QCoreApplication.translate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133 "HgUtilities", "The hg process finished with the exit code {0}"
7257
c4d0cac9b5c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
134 ).format(process.exitCode())
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
135 else:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
136 errorMsg = QCoreApplication.translate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
137 "HgUtilities", "The hg process did not finish within 30s."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138 )
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
139 else:
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
140 errorMsg = QCoreApplication.translate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
141 "HgUtilities", "Could not start the hg executable."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143
5292
ac8b476ba122 Added support for host fingerprints in the hostsecurity section of the Mercurial configuration file (as of hg 3.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
144 return versionStr, version, errorMsg
11076
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
145
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
146
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
147 def isProgressInfo(line):
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
148 """
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
149 Function to check, if the given line contains progress information.
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
150
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
151 @param line output line to be checked
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
152 @type str
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
153 @return flag indicating a line containing progress information
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
154 @rtype bool
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
155 """
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
156 return progressRe.match(line.strip()) is not None
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
157
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
158
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
159 def parseProgressInfo(progressLine):
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
160 """
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
161 Function to parse an output line containing progress information.
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
162
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
163 @param progressLine progress information line to be parsed
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
164 @type str
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
165 @return tuple containing the progress topic, current value, maximum value and
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
166 the completion estimate
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
167 @rtype tuple of (str, int, int, str)
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
168 """
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
169 match = progressRe.match(progressLine)
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
170 if match is not None:
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
171 return (
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
172 match[1], # topic
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
173 int(match[2]), # value
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
174 int(match[3]), # maximum
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
175 match[4], # estimate
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
176 )
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
177 else:
2989645b2618 Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
178 return "", 0, 0, ""

eric ide

mercurial