aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside-tools/deploy_lib/deploy_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside-tools/deploy_lib/deploy_util.py')
-rw-r--r--sources/pyside-tools/deploy_lib/deploy_util.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/sources/pyside-tools/deploy_lib/deploy_util.py b/sources/pyside-tools/deploy_lib/deploy_util.py
new file mode 100644
index 000000000..e8b05e990
--- /dev/null
+++ b/sources/pyside-tools/deploy_lib/deploy_util.py
@@ -0,0 +1,77 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+import logging
+import shutil
+import sys
+from pathlib import Path
+
+from . import EXE_FORMAT
+from .config import Config
+
+
+def config_option_exists():
+ for argument in sys.argv:
+ if any(item in argument for item in ["--config-file", "-c"]):
+ return True
+
+ return False
+
+
+def cleanup(config: Config, is_android: bool = False):
+ """
+ Cleanup the generated build folders/files
+ """
+ if config.generated_files_path.exists():
+ shutil.rmtree(config.generated_files_path)
+ logging.info("[DEPLOY] Deployment directory purged")
+
+ if is_android:
+ buildozer_spec: Path = config.project_dir / "buildozer.spec"
+ if buildozer_spec.exists():
+ buildozer_spec.unlink()
+ logging.info(f"[DEPLOY] {str(buildozer_spec)} removed")
+
+ buildozer_build: Path = config.project_dir / ".buildozer"
+ if buildozer_build.exists():
+ shutil.rmtree(buildozer_build)
+ logging.info(f"[DEPLOY] {str(buildozer_build)} removed")
+
+
+def create_config_file(dry_run: bool = False, config_file: Path = None, main_file: Path = None):
+ """
+ Sets up a new pysidedeploy.spec or use an existing config file
+ """
+
+ if main_file:
+ if main_file.parent != Path.cwd():
+ config_file = main_file.parent / "pysidedeploy.spec"
+ else:
+ config_file = Path.cwd() / "pysidedeploy.spec"
+
+ logging.info(f"[DEPLOY] Creating config file {config_file}")
+ if not dry_run:
+ shutil.copy(Path(__file__).parent / "default.spec", config_file)
+
+ # the config parser needs a reference to parse. So, in the case of --dry-run
+ # use the default.spec file.
+ if dry_run:
+ config_file = Path(__file__).parent / "default.spec"
+
+ return config_file
+
+
+def finalize(config: Config):
+ """
+ Copy the executable into the final location
+ For Android deployment, this is done through buildozer
+ """
+ generated_exec_path = config.generated_files_path / (config.source_file.stem + EXE_FORMAT)
+ if generated_exec_path.exists() and config.exe_dir:
+ if sys.platform == "darwin":
+ shutil.copytree(generated_exec_path, config.exe_dir / (config.title + EXE_FORMAT),
+ dirs_exist_ok=True)
+ else:
+ shutil.copy(generated_exec_path, config.exe_dir)
+ print("[DEPLOY] Executed file created in "
+ f"{str(config.exe_dir / (config.source_file.stem + EXE_FORMAT))}")