Compare commits

..

No commits in common. "36ce1b9ea02809fcfbf723f0a8f86dbe34956a59" and "03adefb3ea0ae802a4102dac55de71f527ef1c35" have entirely different histories.

View File

@ -8,7 +8,6 @@ import platform
import warnings import warnings
from pathlib import Path from pathlib import Path
from typing import List, Tuple, Optional, Union, Any from typing import List, Tuple, Optional, Union, Any
from enum import Enum
from lib_not_dr.types import Options, Version, VersionRequirement from lib_not_dr.types import Options, Version, VersionRequirement
@ -47,223 +46,6 @@ def format_cmd(arg_name: Optional[str] = None,
return [f'{arg_name}{arg_value}'] return [f'{arg_name}{arg_value}']
class NuitkaSubConfig(Options):
"""
Nuitka 配置的子项
Nuitka configuration sub-items
"""
name = 'Nuitka Sub Configuration'
def gen_cmd(self) -> List[str]:
"""
生成命令行参数
:return:
"""
raise NotImplementedError
class NuitkaPluginConfig(NuitkaSubConfig):
"""
控制 nuitka plugin 相关参数的部分
Control part of nuitka's plugin related parameters
"""
name = 'Nuitka Plugin Configuration'
# --enable-plugin=PLUGIN_NAME
enable_plugin: List[str] = []
# --disable-plugin=PLUGIN_NAME
disable_plugin: List[str] = []
# --plugin-no-detection
plugin_no_detection: bool = False
# --user-plugin=PATH
user_plugin: List[Path] = []
# --show-source-changes
show_source_changes: bool = False
# --include-plugin-directory=MODULE/PACKAGE
include_plugin_dir: List[str] = []
# --include-plugin-files=PATTERN
include_plugin_files: List[str] = []
class NuitkaIncludeConfig(NuitkaSubConfig):
"""
控制 nuitka include 数据 相关参数的部分
Control part of nuitka's include related parameters
"""
name = 'Nuitka Include Configuration'
# --include-package=PACKAGE
include_packages: List[str] = []
# --include-module=MODULE
include_modules: List[str] = []
# --prefer-source-code
# --no-prefer-source-code for --module
prefer_source_code: bool = False
# --follow-stdlib
follow_stdlib: bool = False
class NuitkaDataConfig(NuitkaSubConfig):
"""
控制 nuitka 数据 相关参数的部分
Control part of nuitka's data related parameters
"""
name = 'Nuitka Data Configuration'
# --include-package-data=PACKAGE=PACKAGE_PATH
include_package_data: List[Tuple[Path, Path]] = []
# --include-data-files=PATH=PATH
include_data_files: List[Tuple[Path, Path]] = []
# --include-data-dir=DIRECTORY=PATH
include_data_dir: List[Tuple[Path, Path]] = []
# --noinclude-data-files=PATH
no_include_data_files: List[Path] = []\
# --list-package-data=LIST_PACKAGE_DATA
list_package_data: List[str] = []
# --list-package-dlls=LIST_PACKAGE_DLLS
list_package_dlls: List[str] = []
# --include-distribution-metadata=DISTRIBUTION
include_distribution_metadata: List[str] = []
class NuitkaBinaryInfo(Options):
"""
nuitka 构建的二进制文件的信息
nuitka build binary file information
"""
name = 'Nuitka Binary Info'
# --company-name=COMPANY_NAME
company_name: Optional[str] = None
# --product-name=PRODUCT_NAME
product_name: Optional[str] = None
# --file-version=FILE_VERSION
# --macos-app-version=MACOS_APP_VERSION
file_version: Optional[Union[str, Version]] = None
# --product-version=PRODUCT_VERSION
product_version: Optional[Union[str, Version]] = None
# --file-description=FILE_DESCRIPTION
file_description: Optional[str] = None
# --copyright=COPYRIGHT_TEXT
copyright: Optional[str] = None
# --trademarks=TRADEMARK_TEXT
trademarks: Optional[str] = None
# Icon
# --linux-icon=ICON_PATH
# --macos-app-icon=ICON_PATH
# --windows-icon-from-ico=ICON_PATH
# --windows-icon-from-exe=ICON_EXE_PATH
# 注意: 只有 Windows 下 才可以提供多个 ICO 文件
# 其他平台 和 EXE 下只会使用第一个路径
icon: Optional[List[Path]] = None
# Console
# --enable-console
# --disable-console
console: bool = True
# Windows UAC
# --windows-uac-admin
windows_uac_admin: bool = False
# --windows-uac-uiaccess
windows_uac_ui_access: bool = False
class NuitkaOutputConfig(Options):
"""
nuitka 构建的选项
nuitka build output information
"""
name = 'Nuitka Output Config'
# --output-dir=DIRECTORY
output_dir: Optional[Path] = None
# --output-filename=FILENAME
output_filename: Optional[str] = None
# --remove-output
remove_output: bool = False
# --no-pyo-file
no_pyo_file: bool = False
class NuitkaDebugConfig(Options):
"""
nuitka 构建的调试选项
nuikta build debug information
"""
name = 'Nuitka Debug Config'
# --debug
debug: bool = False
# --unstripped
strip: bool = True
# --profile
profile: bool = False
# --internal-graph
internal_graph: bool = False
# --trace-execution
trace_execution: bool = False
class NuitkaTarget(Enum):
"""
用于指定 nuitka 构建的目标
Use to specify the target of nuitka build
exe: 不带任何参数
module: --module
standalone: --standalone
one_file: --onefile
"""
exe = ''
module = 'module'
standalone = 'standalone'
one_file = 'package'
class NuitkaScriptGenerator(Options):
"""
用于帮助生成 nuitka 构建脚本的类
Use to help generate nuitka build script
:arg main 需要编译的文件
"""
name = 'Nuitka Script Generator'
# --main=PATH
# 可以有多个 输入时需要包在列表里
main: List[Path]
# --run
run_after_build: bool = False
# --debugger
debugger: bool = False
# --execute-with-pythonpath
execute_with_python_path: bool = False
# --assume-yes-for-downloads
download_confirm: bool = True
# standalone/one_file/module/exe
target: NuitkaTarget = NuitkaTarget.exe
# --python-debug
python_debug: bool = False
# --python-flag=FLAG
python_flag: List[str] = []
# --python-for-scons=PATH
python_for_scons: Optional[Path] = None
class CompilerHelper(Options): class CompilerHelper(Options):
""" """
用于帮助生成 nuitka 构建脚本的类 用于帮助生成 nuitka 构建脚本的类