Main build system orchestrator
| 840 | return False |
| 841 | |
| 842 | class CompleteBuildSystem: |
| 843 | """Main build system orchestrator""" |
| 844 | |
| 845 | def __init__(self): |
| 846 | self.build_env = BuildEnvironment() |
| 847 | self.dependency_manager = DependencyManager() |
| 848 | self.python_builder = PythonPackageBuilder(self.build_env) |
| 849 | self.executable_builder = ExecutableBuilder(self.build_env) |
| 850 | self.portable_builder = PortablePackageBuilder(self.build_env) |
| 851 | self.checksum_generator = ChecksumGenerator(self.build_env) |
| 852 | self.release_notes_generator = ReleaseNotesGenerator(self.build_env) |
| 853 | |
| 854 | self.build_steps = [ |
| 855 | ("Environment Validation", self.build_env.validate_environment), |
| 856 | ("Artifact Cleanup", self.build_env.clean_build_artifacts), |
| 857 | ("Directory Setup", self.build_env.setup_build_directories), |
| 858 | ("Dependency Installation", self.dependency_manager.install_build_dependencies), |
| 859 | ("Python Package Build", self.python_builder.build_python_packages), |
| 860 | ("Executable Build", self.executable_builder.build_executable), |
| 861 | ("Portable Package Creation", self.portable_builder.create_portable_package), |
| 862 | ("Checksum Generation", self.checksum_generator.generate_checksums), |
| 863 | ("Release Notes Generation", self.release_notes_generator.generate_release_notes), |
| 864 | ] |
| 865 | |
| 866 | self.failed_steps = [] |
| 867 | self.start_time = time.time() |
| 868 | |
| 869 | def run_build(self) -> bool: |
| 870 | """Execute complete build process""" |
| 871 | logger.step(f"Starting {PROJECT_NAME} v{VERSION} Build Process") |
| 872 | logger.info(f"Build configuration: {BUILD_CONFIG}") |
| 873 | logger.info(f"Platform: {platform.platform()}") |
| 874 | logger.info(f"Python: {platform.python_version()}") |
| 875 | |
| 876 | # Execute all build steps |
| 877 | for step_name, step_function in self.build_steps: |
| 878 | try: |
| 879 | logger.info(f"Executing: {step_name}") |
| 880 | |
| 881 | if not step_function(): |
| 882 | logger.error(f"Build step failed: {step_name}") |
| 883 | self.failed_steps.append(step_name) |
| 884 | |
| 885 | # Critical steps that should stop the build |
| 886 | critical_steps = ["Environment Validation", "Dependency Installation"] |
| 887 | if step_name in critical_steps: |
| 888 | logger.error("Critical step failed, stopping build") |
| 889 | break |
| 890 | else: |
| 891 | logger.success(f"Build step completed: {step_name}") |
| 892 | |
| 893 | except KeyboardInterrupt: |
| 894 | logger.error("Build interrupted by user") |
| 895 | return False |
| 896 | |
| 897 | except Exception as e: |
| 898 | logger.error(f"Unexpected error in {step_name}: {e}") |
| 899 | self.failed_steps.append(step_name) |