代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/pkgship 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
--- a/packageship/application/cli/commands/initialize.py
+++ b/packageship/application/cli/commands/initialize.py
@@ -15,7 +15,6 @@ Description: Entry method for custom commands
Class: InitDatabaseCommand
"""
import os
-import random
import time
import pwd
import threading
@@ -23,27 +22,23 @@ from packageship.application.cli.base import BaseCommand
from packageship.application.common.exc import InitializeError, ResourceCompetitionError
-class PrintThread(threading.Thread):
+class InitServiceThread(threading.Thread):
"""
- Description: Print Thread
- Attributes:
-
+ Description: Execute the initialization thread
"""
- def __init__(self, *args, **kwargs):
- super(PrintThread, self).__init__(*args, **kwargs)
- self.__clear = False
+ def __init__(self, func, param, *args, **kwargs):
+ super(InitServiceThread, self).__init__(*args, **kwargs)
+ self._func = func
+ self._args = param
+ self.error = False
def run(self):
- while True:
- print("\r", "initializing{}".format(
- "." * random.randint(1, 4)), end='', flush=True)
- time.sleep(0.5)
- if self.__clear:
- break
-
- def stop(self):
- self.__clear = True
+ try:
+ self._func(*self._args)
+ except (InitializeError, ResourceCompetitionError) as error:
+ self.error = True
+ print('\r', error)
class InitDatabaseCommand(BaseCommand):
@@ -63,6 +58,7 @@ class InitDatabaseCommand(BaseCommand):
'init', help='initialization of the database')
self.params = [
('-filepath', 'str', 'specify the path of conf.yaml', '', 'store')]
+ self._char = ["/", "-", "\\"]
def register(self):
"""
@@ -77,6 +73,13 @@ class InitDatabaseCommand(BaseCommand):
super(InitDatabaseCommand, self).register()
self.parse.set_defaults(func=self.do_command)
+ @property
+ def login_user(self):
+ """
+ Description: The user logged in to the system
+ """
+ return pwd.getpwuid(os.getuid())[0]
+
def do_command(self, params):
"""
Description: Action to execute command
@@ -88,10 +91,7 @@ class InitDatabaseCommand(BaseCommand):
"""
- def get_username():
- return pwd.getpwuid(os.getuid())[0]
-
- if get_username() not in ["root", "pkgshipuser"]:
+ if self.login_user not in ["root", "pkgshipuser"]:
print("The current user does not have initial execution permission")
return
@@ -100,14 +100,19 @@ class InitDatabaseCommand(BaseCommand):
file_path = params.filepath
if file_path:
file_path = os.path.abspath(file_path)
- try:
- print_t = PrintThread()
- print_t.start()
- init.import_depend(path=file_path)
- print_t.stop()
- except (InitializeError, ResourceCompetitionError) as error:
- print('\r', error)
- else:
+
+ _init_service_thread = InitServiceThread(
+ func=init.import_depend, param=(file_path,))
+ _init_service_thread.setDaemon(True)
+ _init_service_thread.start()
+
+ while _init_service_thread.isAlive():
+ for number in range(3):
+ print("\r", "initializing{}".format("." * 10),
+ self._char[number], end='', flush=True)
+ time.sleep(0.5)
+ print("\n")
+ if not _init_service_thread.error:
if init.success:
print('\r', 'Database initialize success')
else:
--- a/packageship/application/initialize/integration.py
+++ b/packageship/application/initialize/integration.py
@@ -653,7 +653,7 @@ class RepoConfig:
if not os.path.exists(path):
raise FileNotFoundError(
- "system initialization configuration file"
+ "system initialization configuration file "
"does not exist: %s" % path)
# load yaml configuration file
with open(path, 'r', encoding='utf-8') as file_context:
@@ -663,7 +663,7 @@ class RepoConfig:
except yaml.YAMLError as yaml_error:
LOGGER.error(yaml_error)
raise ValueError(
- "The format of the yaml configuration"
+ "The format of the yaml configuration "
"file is wrong please check and try again:{0}".format(yaml_error)) \
from yaml_error
@@ -748,9 +748,9 @@ class RepoConfig:
raise ValueError(
"content of the database initialization configuration file cannot be empty .")
if not isinstance(self._repo, list):
- raise ValueError("""format of the initial database configuration file isincorrect.
- When multiple databases need to be initialized,
- it needs to be configured in the form of multiple .""")
+ raise ValueError("format of the initial database configuration file is incorrect."
+ " When multiple databases need to be initialized,"
+ " it needs to be configured in the form of multiple .")
self._validate_database()
for repo in self._repo:
try:
--- a/packageship/pkgship
+++ b/packageship/pkgship
@@ -15,7 +15,7 @@ import signal
from signal import SIG_DFL
try:
def sig_handler(signum, frame):
- print('Exit command mode')
+ print("\n", 'Exit command mode')
sys.exit(0)
signal.signal(signal.SIGINT, sig_handler)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。