Generate comprehensive build report
(self)
| 904 | return self._generate_build_report() |
| 905 | |
| 906 | def _generate_build_report(self) -> bool: |
| 907 | """Generate comprehensive build report""" |
| 908 | build_time = time.time() - self.start_time |
| 909 | |
| 910 | logger.step("Build Process Complete") |
| 911 | |
| 912 | if self.failed_steps: |
| 913 | logger.error(f"Build completed with errors. Failed steps: {', '.join(self.failed_steps)}") |
| 914 | else: |
| 915 | logger.success("All build steps completed successfully!") |
| 916 | |
| 917 | logger.info(f"Total build time: {build_time:.2f} seconds") |
| 918 | |
| 919 | # List generated artifacts |
| 920 | if self.build_env.dist_dir.exists(): |
| 921 | artifacts = list(self.build_env.dist_dir.iterdir()) |
| 922 | if artifacts: |
| 923 | logger.info("Generated artifacts:") |
| 924 | total_size = 0 |
| 925 | |
| 926 | for artifact in sorted(artifacts): |
| 927 | if artifact.is_file(): |
| 928 | size = artifact.stat().st_size |
| 929 | total_size += size |
| 930 | |
| 931 | # Determine file type icon |
| 932 | if artifact.suffix == '.exe': |
| 933 | icon = "[EXE]" |
| 934 | elif artifact.suffix == '.whl': |
| 935 | icon = "[WHL]" |
| 936 | elif artifact.name.endswith('.tar.gz'): |
| 937 | icon = "[TAR]" |
| 938 | elif artifact.suffix == '.zip': |
| 939 | icon = "[ZIP]" |
| 940 | else: |
| 941 | icon = "[FILE]" |
| 942 | |
| 943 | logger.info(f" {icon} {artifact.name} ({size:,} bytes)") |
| 944 | |
| 945 | logger.info(f"Total artifacts size: {total_size:,} bytes ({total_size/1024/1024:.2f} MB)") |
| 946 | else: |
| 947 | logger.warning("No artifacts generated") |
| 948 | |
| 949 | success = len(self.failed_steps) == 0 |
| 950 | |
| 951 | if success: |
| 952 | logger.success("Build completed successfully! Ready for release.") |
| 953 | logger.info("Next steps:") |
| 954 | logger.info("1. Create Git tag: git tag v1.0.0") |
| 955 | logger.info("2. Push tag: git push origin v1.0.0") |
| 956 | logger.info("3. Create GitHub Release and upload artifacts") |
| 957 | else: |
| 958 | logger.error("Build completed with errors. Please review the failed steps.") |
| 959 | |
| 960 | return success |
| 961 | |
| 962 | def main(): |
| 963 | """Main entry point""" |