mirror of
https://gitlab.com/dslackw/slpkg.git
synced 2024-12-25 09:58:41 +01:00
Update for progress bar
Signed-off-by: Dimitris Zlatanidis <d.zlatanidis@gmail.com>
This commit is contained in:
parent
55c133db74
commit
2f798e8cf2
14 changed files with 60 additions and 93 deletions
|
@ -8,6 +8,7 @@
|
||||||
- Updated:
|
- Updated:
|
||||||
* Updated message for invalid package version
|
* Updated message for invalid package version
|
||||||
* Updated upgrade.log file to json format
|
* Updated upgrade.log file to json format
|
||||||
|
* Separation of the process bar with progress bar
|
||||||
|
|
||||||
### 5.0.9 - 23/05/2024
|
### 5.0.9 - 23/05/2024
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.TH slpkg 1 "Orestiada, Hellas" "slpkg 5.0.4" dslackw
|
.TH slpkg 1 "Orestiada, Hellas" "slpkg 5.1.0" dslackw
|
||||||
.SH NOM
|
.SH NOM
|
||||||
.P
|
.P
|
||||||
slpkg \- Utilitaire de gestion de paquets pour Slackware.
|
slpkg \- Utilitaire de gestion de paquets pour Slackware.
|
||||||
|
@ -14,12 +14,12 @@ slpkg [-h|-v] [-u, update] [-U, upgrade] [-I, repo-info]
|
||||||
-P, --parallel, -o, --repository=\fINAME\fR, -z, --directory=\fIPATH\fR
|
-P, --parallel, -o, --repository=\fINAME\fR, -z, --directory=\fIPATH\fR
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.P
|
.P
|
||||||
Slpkg est un gestionnaire de paquets qui installe, met à jour et supprime les paquets sur les systèmes basés sur Slackware.
|
Slpkg est un gestionnaire de paquets qui installe, met à jour et supprime les paquets sur les systèmes basés sur Slackware.
|
||||||
Il calcule automatiquement les dépendances et détermine ce qui doit se passer pour installer les paquets.
|
Il calcule automatiquement les dépendances et détermine ce qui doit se passer pour installer les paquets.
|
||||||
Slpkg facilite la maintenance de groupes de machines sans avoir à les mettre à jour manuellement.
|
Slpkg facilite la maintenance de groupes de machines sans avoir à les mettre à jour manuellement.
|
||||||
.P
|
.P
|
||||||
Slpkg travaille en accord avec les standards de l'organisation SlackBuilds.org pour construire des paquets.
|
Slpkg travaille en accord avec les standards de l'organisation SlackBuilds.org pour construire des paquets.
|
||||||
Il utilise également les instructions de Slackware Linux pour l'installation, la mise à jour ou la suppression des paquets.
|
Il utilise également les instructions de Slackware Linux pour l'installation, la mise à jour ou la suppression des paquets.
|
||||||
.SH COMMANDES
|
.SH COMMANDES
|
||||||
.P
|
.P
|
||||||
.B -u, update
|
.B -u, update
|
||||||
|
@ -134,7 +134,7 @@ Exemple : '\fIslpkg install python3 --search\fR' ou '\fIslpkg download python3 -
|
||||||
.B -B, --progress-bar
|
.B -B, --progress-bar
|
||||||
.RS
|
.RS
|
||||||
Appliquez-le pour voir une barre de progression statique au lieu d'un processus exécuté comme la construction,
|
Appliquez-le pour voir une barre de progression statique au lieu d'un processus exécuté comme la construction,
|
||||||
l'installation ou la suppression.
|
l'installation ou la suppression. (à utiliser avec : -b, build, -i, install, -U, upgrade, -R --remove)
|
||||||
.RE
|
.RE
|
||||||
.P
|
.P
|
||||||
.B -p, --pkg-version
|
.B -p, --pkg-version
|
||||||
|
@ -187,10 +187,10 @@ En dehors de la manière classique, vous pouvez mettre plusieurs options qui ne
|
||||||
.RE
|
.RE
|
||||||
.SH FILELIST|PACKAGES
|
.SH FILELIST|PACKAGES
|
||||||
.P
|
.P
|
||||||
Au lieu de paquets, vous pouvez transmettre un fichier texte avec le suffixe '.pkgs' et les noms des paquets.
|
Au lieu de paquets, vous pouvez transmettre un fichier texte avec le suffixe '.pkgs' et les noms des paquets.
|
||||||
Exemple : '\fIslpkg install list.pkgs\fR'.
|
Exemple : '\fIslpkg install list.pkgs\fR'.
|
||||||
Editez le fichier de configuration '/etc/slpkg/slpkg.toml' pour changer le suffixe si vous le souhaitez.
|
Editez le fichier de configuration '/etc/slpkg/slpkg.toml' pour changer le suffixe si vous le souhaitez.
|
||||||
Vous pouvez utiliser des listes provenant d'autres sources, comme les fichiers '.sqf'.
|
Vous pouvez utiliser des listes provenant d'autres sources, comme les fichiers '.sqf'.
|
||||||
.RE
|
.RE
|
||||||
.SH A SAVOIR
|
.SH A SAVOIR
|
||||||
.P
|
.P
|
||||||
|
@ -198,7 +198,7 @@ Il y a cinq indicateurs lorsque certaines commandes sont utilisées, par exemple
|
||||||
|
|
||||||
Cyan : Installer, Jaune : Construire, Gris : Installé, Violet : Installé Pour construire, Gris : C'est installé, Violet : Pour la mise à jour, Rouge : Pour supprimer.
|
Cyan : Installer, Jaune : Construire, Gris : Installé, Violet : Installé Pour construire, Gris : C'est installé, Violet : Pour la mise à jour, Rouge : Pour supprimer.
|
||||||
|
|
||||||
Lorsque vous utilisez les commandes install, build, upgrade ou remove, vous devez savoir que si le paquet est installé, sa couleur passera au gris,
|
Lorsque vous utilisez les commandes install, build, upgrade ou remove, vous devez savoir que si le paquet est installé, sa couleur passera au gris,
|
||||||
si le paquet peut être mis à jour, il devient violet, et s'il n'est pas installé, sa couleur est cyan.
|
si le paquet peut être mis à jour, il devient violet, et s'il n'est pas installé, sa couleur est cyan.
|
||||||
De même, si vous essayez de supprimer un paquet, la couleur du paquet devient rouge.
|
De même, si vous essayez de supprimer un paquet, la couleur du paquet devient rouge.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.TH slpkg 1 "Orestiada, Hellas" "slpkg 5.0.4" dslackw
|
.TH slpkg 1 "Orestiada, Hellas" "slpkg 5.1.0" dslackw
|
||||||
.SH NAME
|
.SH NAME
|
||||||
.P
|
.P
|
||||||
slpkg \- Package manager utility for Slackware.
|
slpkg \- Package manager utility for Slackware.
|
||||||
|
@ -140,6 +140,7 @@ Example try: '\fIslpkg install python3 --search\fR' or '\fIslpkg download python
|
||||||
.B -B, --progress-bar
|
.B -B, --progress-bar
|
||||||
.RS
|
.RS
|
||||||
Apply it to see a static progress bar instead of process execute like building, installing or removing.
|
Apply it to see a static progress bar instead of process execute like building, installing or removing.
|
||||||
|
(to be used with: -b, build, -i, install, -U, upgrade, -R --remove)
|
||||||
.RE
|
.RE
|
||||||
.P
|
.P
|
||||||
.B -p, --pkg-version
|
.B -p, --pkg-version
|
||||||
|
|
|
@ -38,12 +38,12 @@ class Packages(Configs): # pylint: disable=[R0902]
|
||||||
self.dialogbox = DialogBox()
|
self.dialogbox = DialogBox()
|
||||||
self.multi_proc = MultiProcess(flags)
|
self.multi_proc = MultiProcess(flags)
|
||||||
self.view = View(flags, repository, data)
|
self.view = View(flags, repository, data)
|
||||||
self.view_process = ViewProcess(flags)
|
self.view_process = ViewProcess()
|
||||||
self.check_md5 = Md5sum(flags)
|
self.check_md5 = Md5sum(flags)
|
||||||
self.download = Downloader(flags)
|
self.download = Downloader(flags)
|
||||||
self.upgrade = Upgrade(repository, data)
|
self.upgrade = Upgrade(repository, data)
|
||||||
self.ascii = AsciiBox()
|
self.ascii = AsciiBox()
|
||||||
self.gpg = GPGVerify(flags)
|
self.gpg = GPGVerify()
|
||||||
self.progress = ProgressBar()
|
self.progress = ProgressBar()
|
||||||
|
|
||||||
self.dependencies: list = []
|
self.dependencies: list = []
|
||||||
|
|
|
@ -17,7 +17,6 @@ class Blacklist(Configs): # pylint: disable=[R0903]
|
||||||
"""Reads and returns the blacklist."""
|
"""Reads and returns the blacklist."""
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
"""Initilazation class."""
|
|
||||||
super(Configs, self).__init__()
|
super(Configs, self).__init__()
|
||||||
|
|
||||||
self.toml_errors = TomlErrors()
|
self.toml_errors = TomlErrors()
|
||||||
|
|
|
@ -41,9 +41,6 @@ class CheckUpdates(Configs): # pylint: disable=[R0902]
|
||||||
self.option_for_check: bool = self.utils.is_option(
|
self.option_for_check: bool = self.utils.is_option(
|
||||||
('-c', '--check'), flags)
|
('-c', '--check'), flags)
|
||||||
|
|
||||||
self.option_for_progress_bar: bool = self.utils.is_option(
|
|
||||||
('-B', '--progress-bar'), flags)
|
|
||||||
|
|
||||||
def check_the_repositories(self, queue: str = None) -> None:
|
def check_the_repositories(self, queue: str = None) -> None:
|
||||||
"""Save checks to a dictionary.
|
"""Save checks to a dictionary.
|
||||||
|
|
||||||
|
@ -183,31 +180,26 @@ class CheckUpdates(Configs): # pylint: disable=[R0902]
|
||||||
dict: Description
|
dict: Description
|
||||||
"""
|
"""
|
||||||
message: str = 'Checking for news, please wait'
|
message: str = 'Checking for news, please wait'
|
||||||
if self.progress_bar_conf or self.option_for_progress_bar:
|
queue: Queue = Queue()
|
||||||
queue: Queue = Queue()
|
|
||||||
|
|
||||||
# Starting multiprocessing
|
# Starting multiprocessing
|
||||||
process_1 = Process(target=self.check_the_repositories, args=(queue,))
|
process_1 = Process(target=self.check_the_repositories, args=(queue,))
|
||||||
process_2 = Process(target=self.progress.progress_bar, args=(message,))
|
process_2 = Process(target=self.progress.progress_bar, args=(message,))
|
||||||
|
|
||||||
process_1.start()
|
process_1.start()
|
||||||
process_2.start()
|
process_2.start()
|
||||||
|
|
||||||
# Wait until process 1 finish
|
# Wait until process 1 finish
|
||||||
process_1.join()
|
process_1.join()
|
||||||
|
|
||||||
# Terminate process 2 if process 1 finished
|
# Terminate process 2 if process 1 finished
|
||||||
if not process_1.is_alive():
|
if not process_1.is_alive():
|
||||||
process_2.terminate()
|
process_2.terminate()
|
||||||
|
|
||||||
self.compare: dict = queue.get()
|
self.compare: dict = queue.get()
|
||||||
self.error_connected: list = queue.get()
|
self.error_connected: list = queue.get()
|
||||||
|
|
||||||
print('\x1b[?25h')
|
print('\x1b[?25h')
|
||||||
else:
|
|
||||||
print(f'\r{message}... ', end='')
|
|
||||||
self.check_the_repositories()
|
|
||||||
print()
|
|
||||||
|
|
||||||
self.check_for_error_connected()
|
self.check_for_error_connected()
|
||||||
self.view_messages()
|
self.view_messages()
|
||||||
|
|
|
@ -32,7 +32,7 @@ class DownloadOnly(Configs): # pylint: disable=[R0902]
|
||||||
self.utils = Utilities()
|
self.utils = Utilities()
|
||||||
self.ascii = AsciiBox()
|
self.ascii = AsciiBox()
|
||||||
self.errors = Errors()
|
self.errors = Errors()
|
||||||
self.gpg = GPGVerify(flags)
|
self.gpg = GPGVerify()
|
||||||
|
|
||||||
self.urls: dict = {}
|
self.urls: dict = {}
|
||||||
self.asc_files: list = []
|
self.asc_files: list = []
|
||||||
|
|
|
@ -13,11 +13,11 @@ from slpkg.views.view_process import ViewProcess
|
||||||
class GPGVerify(Configs): # pylint: disable=[R0903]
|
class GPGVerify(Configs): # pylint: disable=[R0903]
|
||||||
"""GPG verify files."""
|
"""GPG verify files."""
|
||||||
|
|
||||||
def __init__(self, flags: list):
|
def __init__(self):
|
||||||
super(Configs, self).__init__()
|
super(Configs, self).__init__()
|
||||||
self.ascii = AsciiBox()
|
self.ascii = AsciiBox()
|
||||||
self.view = View()
|
self.view = View()
|
||||||
self.view_process = ViewProcess(flags)
|
self.view_process = ViewProcess()
|
||||||
|
|
||||||
def verify(self, asc_files: list) -> None:
|
def verify(self, asc_files: list) -> None:
|
||||||
"""Verify files with gpg tool.
|
"""Verify files with gpg tool.
|
||||||
|
|
|
@ -17,13 +17,13 @@ from slpkg.views.view_process import ViewProcess
|
||||||
class InstallData(Configs):
|
class InstallData(Configs):
|
||||||
"""Installs data to the repositories path."""
|
"""Installs data to the repositories path."""
|
||||||
|
|
||||||
def __init__(self, flags: list):
|
def __init__(self):
|
||||||
super(Configs, self).__init__()
|
super(Configs, self).__init__()
|
||||||
self.utils = Utilities()
|
self.utils = Utilities()
|
||||||
self.repos = Repositories()
|
self.repos = Repositories()
|
||||||
self.ascii = AsciiBox()
|
self.ascii = AsciiBox()
|
||||||
self.multi_process = MultiProcess()
|
self.multi_process = MultiProcess()
|
||||||
self.view_process = ViewProcess(flags)
|
self.view_process = ViewProcess()
|
||||||
|
|
||||||
def write_repo_info(self, changelog_file: Path, info: dict) -> None:
|
def write_repo_info(self, changelog_file: Path, info: dict) -> None:
|
||||||
"""Read the first date of the changelog file.
|
"""Read the first date of the changelog file.
|
||||||
|
|
|
@ -26,7 +26,7 @@ class LoadData(Configs):
|
||||||
self.utils = Utilities()
|
self.utils = Utilities()
|
||||||
self.black = Blacklist()
|
self.black = Blacklist()
|
||||||
self.ascii = AsciiBox()
|
self.ascii = AsciiBox()
|
||||||
self.view_process = ViewProcess(flags)
|
self.view_process = ViewProcess()
|
||||||
|
|
||||||
def load(self, repository: str, message: bool = True) -> dict:
|
def load(self, repository: str, message: bool = True) -> dict:
|
||||||
"""Load data to the dictionary.
|
"""Load data to the dictionary.
|
||||||
|
|
|
@ -123,9 +123,7 @@ class Menu(Configs): # pylint: disable=[R0902]
|
||||||
self.flag_repository,
|
self.flag_repository,
|
||||||
self.flag_short_repository,
|
self.flag_short_repository,
|
||||||
self.flag_parallel,
|
self.flag_parallel,
|
||||||
self.flag_short_parallel,
|
self.flag_short_parallel
|
||||||
self.flag_for_progress_bar,
|
|
||||||
self.flag_short_for_progress_bar,
|
|
||||||
],
|
],
|
||||||
'upgrade': [
|
'upgrade': [
|
||||||
self.flag_yes,
|
self.flag_yes,
|
||||||
|
@ -141,13 +139,11 @@ class Menu(Configs): # pylint: disable=[R0902]
|
||||||
self.flag_repository,
|
self.flag_repository,
|
||||||
self.flag_short_repository,
|
self.flag_short_repository,
|
||||||
self.flag_parallel,
|
self.flag_parallel,
|
||||||
self.flag_short_parallel,
|
self.flag_short_parallel
|
||||||
],
|
],
|
||||||
'repo-info': [
|
'repo-info': [
|
||||||
self.flag_repository,
|
self.flag_repository,
|
||||||
self.flag_short_repository,
|
self.flag_short_repository
|
||||||
self.flag_for_progress_bar,
|
|
||||||
self.flag_short_for_progress_bar
|
|
||||||
],
|
],
|
||||||
'configs': [],
|
'configs': [],
|
||||||
'clean-tmp': [],
|
'clean-tmp': [],
|
||||||
|
@ -200,8 +196,6 @@ class Menu(Configs): # pylint: disable=[R0902]
|
||||||
self.flag_short_parallel,
|
self.flag_short_parallel,
|
||||||
self.flag_no_case,
|
self.flag_no_case,
|
||||||
self.flag_short_no_case,
|
self.flag_short_no_case,
|
||||||
self.flag_for_progress_bar,
|
|
||||||
self.flag_short_for_progress_bar
|
|
||||||
],
|
],
|
||||||
'remove': [
|
'remove': [
|
||||||
self.flag_yes,
|
self.flag_yes,
|
||||||
|
@ -227,9 +221,7 @@ class Menu(Configs): # pylint: disable=[R0902]
|
||||||
self.flag_pkg_version,
|
self.flag_pkg_version,
|
||||||
self.flag_short_pkg_version,
|
self.flag_short_pkg_version,
|
||||||
self.flag_no_case,
|
self.flag_no_case,
|
||||||
self.flag_short_no_case,
|
self.flag_short_no_case
|
||||||
self.flag_for_progress_bar,
|
|
||||||
self.flag_short_for_progress_bar
|
|
||||||
],
|
],
|
||||||
'search': [
|
'search': [
|
||||||
self.flag_search,
|
self.flag_search,
|
||||||
|
@ -239,9 +231,7 @@ class Menu(Configs): # pylint: disable=[R0902]
|
||||||
self.flag_pkg_version,
|
self.flag_pkg_version,
|
||||||
self.flag_short_pkg_version,
|
self.flag_short_pkg_version,
|
||||||
self.flag_no_case,
|
self.flag_no_case,
|
||||||
self.flag_short_no_case,
|
self.flag_short_no_case
|
||||||
self.flag_for_progress_bar,
|
|
||||||
self.flag_short_for_progress_bar
|
|
||||||
],
|
],
|
||||||
'dependees': [
|
'dependees': [
|
||||||
self.flag_full_reverse,
|
self.flag_full_reverse,
|
||||||
|
@ -253,9 +243,7 @@ class Menu(Configs): # pylint: disable=[R0902]
|
||||||
self.flag_pkg_version,
|
self.flag_pkg_version,
|
||||||
self.flag_short_pkg_version,
|
self.flag_short_pkg_version,
|
||||||
self.flag_no_case,
|
self.flag_no_case,
|
||||||
self.flag_short_no_case,
|
self.flag_short_no_case
|
||||||
self.flag_for_progress_bar,
|
|
||||||
self.flag_short_for_progress_bar
|
|
||||||
],
|
],
|
||||||
'tracking': [
|
'tracking': [
|
||||||
self.flag_search,
|
self.flag_search,
|
||||||
|
@ -267,9 +255,7 @@ class Menu(Configs): # pylint: disable=[R0902]
|
||||||
self.flag_no_case,
|
self.flag_no_case,
|
||||||
self.flag_short_no_case,
|
self.flag_short_no_case,
|
||||||
self.flag_resolve_off,
|
self.flag_resolve_off,
|
||||||
self.flag_short_resolve_off,
|
self.flag_short_resolve_off
|
||||||
self.flag_for_progress_bar,
|
|
||||||
self.flag_short_for_progress_bar
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,11 +43,11 @@ class Slackbuilds(Configs): # pylint: disable=[R0902,R0904]
|
||||||
self.dialogbox = DialogBox()
|
self.dialogbox = DialogBox()
|
||||||
self.multi_proc = MultiProcess(flags)
|
self.multi_proc = MultiProcess(flags)
|
||||||
self.view = View(flags, repository, data)
|
self.view = View(flags, repository, data)
|
||||||
self.view_process = ViewProcess(flags)
|
self.view_process = ViewProcess()
|
||||||
self.check_md5 = Md5sum(flags)
|
self.check_md5 = Md5sum(flags)
|
||||||
self.download = Downloader(flags)
|
self.download = Downloader(flags)
|
||||||
self.upgrade = Upgrade(repository, data)
|
self.upgrade = Upgrade(repository, data)
|
||||||
self.gpg = GPGVerify(flags)
|
self.gpg = GPGVerify()
|
||||||
self.errors = Errors()
|
self.errors = Errors()
|
||||||
|
|
||||||
self.bar_process = None
|
self.bar_process = None
|
||||||
|
|
|
@ -27,7 +27,7 @@ class UpdateRepositories(Configs): # pylint: disable=[R0902]
|
||||||
self.multi_process = MultiProcess(flags)
|
self.multi_process = MultiProcess(flags)
|
||||||
self.repos = Repositories()
|
self.repos = Repositories()
|
||||||
self.utils = Utilities()
|
self.utils = Utilities()
|
||||||
self.data = InstallData(flags)
|
self.data = InstallData()
|
||||||
self.generate = SBoGenerate()
|
self.generate = SBoGenerate()
|
||||||
self.check_updates = CheckUpdates(flags, repository)
|
self.check_updates = CheckUpdates(flags, repository)
|
||||||
self.download = Downloader(flags)
|
self.download = Downloader(flags)
|
||||||
|
|
|
@ -14,7 +14,7 @@ from slpkg.views.asciibox import AsciiBox
|
||||||
class ViewProcess(Configs):
|
class ViewProcess(Configs):
|
||||||
"""View the process messages."""
|
"""View the process messages."""
|
||||||
|
|
||||||
def __init__(self, flags: list):
|
def __init__(self):
|
||||||
super(Configs, self).__init__()
|
super(Configs, self).__init__()
|
||||||
|
|
||||||
self.progress = ProgressBar()
|
self.progress = ProgressBar()
|
||||||
|
@ -23,35 +23,23 @@ class ViewProcess(Configs):
|
||||||
|
|
||||||
self.bar_process = None
|
self.bar_process = None
|
||||||
|
|
||||||
self.option_for_progress_bar: bool = self.utils.is_option(
|
|
||||||
('-B', '--progress-bar'), flags)
|
|
||||||
|
|
||||||
def message(self, message: str) -> None:
|
def message(self, message: str) -> None:
|
||||||
"""Show spinner with message or message."""
|
"""Show spinner with message or message."""
|
||||||
if self.progress_bar_conf or self.option_for_progress_bar:
|
self.bar_process = Process(target=self.progress.progress_bar, args=(message,))
|
||||||
self.bar_process = Process(target=self.progress.progress_bar, args=(message,))
|
self.bar_process.start()
|
||||||
self.bar_process.start()
|
|
||||||
else:
|
|
||||||
print(f'\r{message}... ', end='')
|
|
||||||
|
|
||||||
def done(self) -> None:
|
def done(self) -> None:
|
||||||
"""Show done message."""
|
"""Show done message."""
|
||||||
if self.progress_bar_conf or self.option_for_progress_bar:
|
time.sleep(0.1)
|
||||||
time.sleep(0.1)
|
self.bar_process.terminate()
|
||||||
self.bar_process.terminate()
|
self.bar_process.join()
|
||||||
self.bar_process.join()
|
print(f'\b{self.bgreen}{self.ascii.done}{self.endc}', end='')
|
||||||
print(f'\b{self.bgreen}{self.ascii.done}{self.endc}', end='')
|
print('\x1b[?25h') # Reset cursor after hiding.
|
||||||
print('\x1b[?25h') # Reset cursor after hiding.
|
|
||||||
else:
|
|
||||||
print(f'{self.bgreen}{self.ascii.done}{self.endc}')
|
|
||||||
|
|
||||||
def failed(self) -> None:
|
def failed(self) -> None:
|
||||||
"""Show for failed message."""
|
"""Show for failed message."""
|
||||||
if self.progress_bar_conf or self.option_for_progress_bar:
|
time.sleep(0.1)
|
||||||
time.sleep(0.1)
|
self.bar_process.terminate()
|
||||||
self.bar_process.terminate()
|
self.bar_process.join()
|
||||||
self.bar_process.join()
|
print(f'\b{self.bred}{self.ascii.failed}{self.endc}', end='')
|
||||||
print(f'\b{self.bred}{self.ascii.failed}{self.endc}', end='')
|
print('\x1b[?25h') # Reset cursor after hiding.
|
||||||
print('\x1b[?25h') # Reset cursor after hiding.
|
|
||||||
else:
|
|
||||||
print(f'{self.bred}{self.ascii.failed}{self.endc}')
|
|
||||||
|
|
Loading…
Reference in a new issue