| 
									
										
										
										
											2023-12-06 18:29:13 +08:00
										 |  |  | #!/usr/bin/env python | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Licensed to the Apache Software Foundation (ASF) under one or more | 
					
						
							|  |  |  | # contributor license agreements.  See the NOTICE file distributed with | 
					
						
							|  |  |  | # this work for additional information regarding copyright ownership. | 
					
						
							|  |  |  | # The ASF licenses this file to You under the Apache License, Version 2.0 | 
					
						
							|  |  |  | # (the "License"); you may not use this file except in compliance with | 
					
						
							|  |  |  | # the License.  You may obtain a copy of the License at | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #    http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  | # distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  | # See the License for the specific language governing permissions and | 
					
						
							|  |  |  | # limitations under the License. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import subprocess | 
					
						
							|  |  |  | import tempfile | 
					
						
							|  |  |  | import os | 
					
						
							| 
									
										
										
										
											2025-02-21 20:43:41 +08:00
										 |  |  | from distutils.file_util import copy_file | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-06 18:29:13 +08:00
										 |  |  | from distutils.dir_util import copy_tree | 
					
						
							|  |  |  | import shutil | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def execute(command): | 
					
						
							|  |  |  |     if subprocess.run(command).returncode != 0: | 
					
						
							|  |  |  |         raise SystemError("Failure in executing following command:- ", " ".join(command)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def get_input(message): | 
					
						
							|  |  |  |     value = input(message) | 
					
						
							|  |  |  |     if value == "": | 
					
						
							|  |  |  |         raise ValueError("This field cannot be empty") | 
					
						
							|  |  |  |     return value | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-22 13:22:46 +08:00
										 |  |  | def build_docker_image_runner(command, image_type): | 
					
						
							| 
									
										
										
										
											2023-12-06 18:29:13 +08:00
										 |  |  |     temp_dir_path = tempfile.mkdtemp() | 
					
						
							|  |  |  |     current_dir = os.path.dirname(os.path.realpath(__file__)) | 
					
						
							| 
									
										
										
										
											2024-05-22 13:22:46 +08:00
										 |  |  |     copy_tree(f"{current_dir}/{image_type}", f"{temp_dir_path}/{image_type}") | 
					
						
							|  |  |  |     copy_tree(f"{current_dir}/resources", f"{temp_dir_path}/{image_type}/resources") | 
					
						
							| 
									
										
										
										
											2025-02-21 20:43:41 +08:00
										 |  |  |     copy_file(f"{current_dir}/server.properties", f"{temp_dir_path}/{image_type}") | 
					
						
							| 
									
										
										
										
											2024-05-22 13:22:46 +08:00
										 |  |  |     command = command.replace("$DOCKER_FILE", f"{temp_dir_path}/{image_type}/Dockerfile") | 
					
						
							|  |  |  |     command = command.replace("$DOCKER_DIR", f"{temp_dir_path}/{image_type}") | 
					
						
							| 
									
										
										
										
											2023-12-06 18:29:13 +08:00
										 |  |  |     try: | 
					
						
							|  |  |  |         execute(command.split()) | 
					
						
							|  |  |  |     except: | 
					
						
							|  |  |  |         raise SystemError("Docker Image Build failed") | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         shutil.rmtree(temp_dir_path) |