| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  | import os.path | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from scripts.task import Task | 
					
						
							| 
									
										
										
										
											2025-07-07 16:17:23 +00:00
										 |  |  | from utils import SystemUtils, CommandUtils, TimeUtils, FileUtils | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  | from utils.logger_utils import app_logger | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-07 16:17:23 +00:00
										 |  |  | def find_path(dir_path: str, suffix: str) -> str: | 
					
						
							|  |  |  |     l = list(filter(lambda x: x.endswith(suffix), os.listdir(dir_path))) | 
					
						
							|  |  |  |     if not l: | 
					
						
							|  |  |  |         raise FileNotFoundError("No such file or directory") | 
					
						
							|  |  |  |     return os.path.join(dir_path, l[0]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  | class ProjectBuild(Task): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     assembleLawnWithQuickstepPlay | 
					
						
							|  |  |  |     bundleLawnWithQuickstepPlayRelease | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def gradlew(self): | 
					
						
							|  |  |  |         gradlew = os.path.abspath(os.path.join(self.context.temp_project_path, "gradlew")) | 
					
						
							|  |  |  |         if SystemUtils.is_windows(): | 
					
						
							|  |  |  |             gradlew += ".bat" | 
					
						
							|  |  |  |         return gradlew | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def build_apk(self): | 
					
						
							| 
									
										
										
										
											2025-07-07 05:40:23 +00:00
										 |  |  |         cmd = f"{self.gradlew()} -p {self.context.temp_project_path} assembleLawnWithQuickstepPlay" | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  |         app_logger().debug(f"build apk cmd = {cmd}") | 
					
						
							| 
									
										
										
										
											2025-07-08 06:36:28 +00:00
										 |  |  |         CommandUtils.execute_with_real_time_output(cmd) | 
					
						
							|  |  |  |         app_logger().debug(f"build apk end.") | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def build_aab(self): | 
					
						
							| 
									
										
										
										
											2025-07-07 05:40:23 +00:00
										 |  |  |         cmd = f"{self.gradlew()} -p {self.context.temp_project_path} bundleLawnWithQuickstepPlayRelease" | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  |         app_logger().debug(f"build aab cmd = {cmd}") | 
					
						
							| 
									
										
										
										
											2025-07-08 06:36:28 +00:00
										 |  |  |         CommandUtils.execute_with_real_time_output(cmd) | 
					
						
							|  |  |  |         app_logger().debug(f"build aab end.") | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def execute(self): | 
					
						
							| 
									
										
										
										
											2025-07-07 16:17:23 +00:00
										 |  |  |         self.init() | 
					
						
							| 
									
										
										
										
											2025-10-23 09:44:53 +00:00
										 |  |  |         # self.save_project() | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  |         self.build_apk() | 
					
						
							|  |  |  |         self.build_aab() | 
					
						
							| 
									
										
										
										
											2025-07-07 16:17:23 +00:00
										 |  |  |         self.copy_to_out() | 
					
						
							|  |  |  |         pass | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-07 16:17:23 +00:00
										 |  |  |     def init(self): | 
					
						
							| 
									
										
										
										
											2025-07-08 06:13:00 +00:00
										 |  |  |         file_name = f"{self.context.get_app_name()}_{self.context.package_name}_{self.context.version_display_name}-{self.context.version_code}_{self.context.local_repo_branch}-{self.context.local_repo_commit[:5]}_{TimeUtils.get_current_time_str()}" | 
					
						
							| 
									
										
										
										
											2025-07-07 16:17:23 +00:00
										 |  |  |         self.context.out_project = os.path.join("out", f"{file_name}.zip") | 
					
						
							|  |  |  |         self.context.out_debug_apk = os.path.join("out", f"{file_name}_debug.apk") | 
					
						
							|  |  |  |         self.context.out_release_apk = os.path.join("out", f"{file_name}_release.apk") | 
					
						
							|  |  |  |         self.context.out_release_aab = os.path.join("out", f"{file_name}_release.aab") | 
					
						
							| 
									
										
										
										
											2025-07-07 03:27:26 +00:00
										 |  |  |         pass | 
					
						
							| 
									
										
										
										
											2025-07-07 16:17:23 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def copy_to_out(self): | 
					
						
							|  |  |  |         app_logger().debug(f"copy_to_out start.") | 
					
						
							|  |  |  |         target = f"{self.context.temp_project_path}{os.sep}build{os.sep}outputs{os.sep}apk{os.sep}lawnWithQuickstepPlay{os.sep}debug" | 
					
						
							|  |  |  |         FileUtils.copy(find_path(target, "apk"), self.context.out_debug_apk) | 
					
						
							|  |  |  |         app_logger().debug(f"copy_to_out debug apk = {self.context.out_debug_apk}") | 
					
						
							|  |  |  |         target = f"{self.context.temp_project_path}{os.sep}build{os.sep}outputs{os.sep}apk{os.sep}lawnWithQuickstepPlay{os.sep}release" | 
					
						
							|  |  |  |         FileUtils.copy(find_path(target, "apk"), self.context.out_release_apk) | 
					
						
							|  |  |  |         app_logger().debug(f"copy_to_out release apk = {self.context.out_release_apk}") | 
					
						
							|  |  |  |         target = f"{self.context.temp_project_path}{os.sep}build{os.sep}outputs{os.sep}bundle{os.sep}lawnWithQuickstepPlayRelease" | 
					
						
							|  |  |  |         FileUtils.copy(find_path(target, "aab"), self.context.out_release_aab) | 
					
						
							|  |  |  |         app_logger().debug(f"copy_to_out end.") | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def save_project(self): | 
					
						
							|  |  |  |         app_logger().debug(f"save project {self.context.out_project} start.") | 
					
						
							|  |  |  |         FileUtils.compress(self.context.temp_project_path, self.context.out_project) | 
					
						
							|  |  |  |         app_logger().debug(f"save project {self.context.out_project} end.") |