Browse Source

Merge branch 'release/1.13.0'

liuyuqi-dellpc 2 months ago
parent
commit
d70c2eeeb3

+ 2 - 2
.github/workflows/build.yml

@@ -12,7 +12,7 @@ jobs:
     runs-on: ${{ matrix.os }}
     strategy:
       matrix: 
-        os: [windows-latest, ubuntu-latest]
+        os: [windows-latest]
     steps:
       - name: Checkout Code
         uses: actions/checkout@v4
@@ -41,7 +41,7 @@ jobs:
       - name: Build Package
         run: |
           python -m PyInstaller -F -c  -i favicon.ico --name repo_sync main.py
-          python -m PyInstaller -F -c  -i favicon.ico --name repo_sync_gui main_gui.py
+          python -m PyInstaller --onefile --windowed -i favicon.ico --name repo_sync_gui main_gui.py
 
       - name: Update to ali oss
         uses: yizhoumo/setup-ossutil@v1

+ 9 - 1
repo_sync/options.py

@@ -14,7 +14,7 @@ import dotenv
 from collections import OrderedDict
 from .utils.str_util import preferredencoding
 from .utils.config_reader import ConfigReader
-
+from .utils.frozen_dir import get_app_path
 
 def parser_args(overrideArguments=None):
     """解析参数"""
@@ -52,6 +52,9 @@ def parser_args(overrideArguments=None):
 
     if args.config:
         custom_conf = _read_custom_platform_conf(args.config, args.platform)
+   
+    app_path = get_app_path()
+    system_conf["app_path"] = app_path
 
     system_conf.update(user_conf)
     system_conf.update(command_line_conf)
@@ -62,8 +65,13 @@ def parser_args(overrideArguments=None):
 
 
 def only_combine_conf(args:dict):
+
     system_conf = user_conf = custom_conf = OrderedDict()
     user_conf = _read_custom_platform_conf("config.yml", args['platform'])
+
+    app_path = get_app_path()
+    system_conf["app_path"] = app_path
+    
     system_conf.update(user_conf)
     system_conf.update(custom_conf)
     system_conf.update(args)

+ 3 - 2
repo_sync/utils/config_reader.py

@@ -9,13 +9,14 @@
 
 import os
 import yaml
-from typing import Dict, Any, Optional
+from typing import Dict, Any
+from repo_sync.utils.frozen_dir import get_app_path
 
 class ConfigReader:
     """YAML configuration reader"""
     
     def __init__(self, config_path: str = 'config.yml'):
-        self.config_path = config_path
+        self.config_path = os.path.join(get_app_path(), config_path)
         self.config = self._load_config()
     
     def _load_config(self) -> Dict[str, Any]:

+ 18 - 0
repo_sync/utils/frozen_dir.py

@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+"""
+@Contact :   liuyuqi.gov@msn.cn
+@Time    :   2024/04/12
+@License :   Copyright © 2017-2022 liuyuqi. All Rights Reserved.
+@Desc    :   
+"""
+import sys  
+import os  
+   
+def get_app_path() -> str:  
+    """Returns the base application path."""  
+    if hasattr(sys, 'frozen'):  
+        # Handles PyInstaller  
+        return os.path.dirname(sys.executable)  #使用 pyinstaller 打包后的 exe 目录
+    # return os.path.dirname(os.path.dirname(os.path.dirname(__file__))) # 没打包前的py目录
+    return sys.path[0]

+ 2 - 1
repo_sync/utils/logger.py

@@ -1,6 +1,7 @@
 import logging
 import yaml
 import os
+from repo_sync.utils.frozen_dir import get_app_path
 from colorama import Fore, Style
 import colorama
 import re
@@ -51,7 +52,7 @@ class ColoredFormatter(logging.Formatter):
         return formatted_message
 
 def load_config():
-    config_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'config.yml')
+    config_path = os.path.join(get_app_path(), 'config.yml')
     with open(config_path, 'r') as f:
         return yaml.safe_load(f)