tools/template.py (86 lines of code) (raw):

#!/usr/bin/env python3 # # 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. # from argparse import ArgumentParser from jinja2 import Environment, FileSystemLoader GPG_KEY_DICT = { # issuer "maxgekk@apache.org" "3.3.0": "80FB8EBE8EBA68504989703491B5DC815DBF10D3", # issuer "yumwang@apache.org" "3.3.1": "86727D43E73A415F67A0B1A14E68B3E6CD473653", # issuer "viirya@apache.org" "3.3.2": "C56349D886F2B01F8CAE794C653C2301FEA493EE", # issuer "yumwang@apache.org" "3.3.3": "F6468A4FF8377B4F1C07BC2AA077F928A0BF68D8", # issuer "xinrong@apache.org" "3.4.0": "CC68B3D16FE33A766705160BA7E57908C7A4E1B1", # issuer "dongjoon@apache.org" "3.4.1": "F28C9C925C188C35E345614DEDA00CE834F0FC5C", # issuer "dongjoon@apache.org" "3.4.2": "F28C9C925C188C35E345614DEDA00CE834F0FC5C", # issuer "dongjoon@apache.org" "3.4.3": "F28C9C925C188C35E345614DEDA00CE834F0FC5C", # issuer "dongjoon@apache.org" "3.4.4": "F28C9C925C188C35E345614DEDA00CE834F0FC5C", # issuer "liyuanjian@apache.org" "3.5.0": "FC3AE3A7EAA1BAC98770840E7E1ABCC53AAA2216", # issuer "kabhwan@apache.org" "3.5.1": "FD3E84942E5E6106235A1D25BD356A9F8740E4FF", # issuer "yao@apache.org" "3.5.2": "D76E23B9F11B5BF6864613C4F7051850A0AF904D", # issuer "haejoon@apache.org" "3.5.3": "0A2D660358B6F6F8071FD16F6606986CF5A8447C", # issuer "yangjie01@apache.org" "3.5.4": "19F745C40A0E550420BB2C522541488DA93FE4B4", # issuer "dongjoon@apache.org" "3.5.5": "F28C9C925C188C35E345614DEDA00CE834F0FC5C", # issuer "wenchen@apache.org" "4.0.0-preview1": "4DC9676CEF9A83E98FCA02784D6620843CD87F5A", # issuer "dongjoon@apache.org" "4.0.0-preview2": "F28C9C925C188C35E345614DEDA00CE834F0FC5C" } def parse_opts(): parser = ArgumentParser(prog="template") parser.add_argument( "-f", "--template-file", help="The Dockerfile template file path.", default="Dockerfile.template", ) parser.add_argument( "-v", "--spark-version", help="The Spark version of Dockerfile.", default="3.3.0", ) parser.add_argument( "-j", "--java-version", help="Java version of Dockerfile.", default="11", ) parser.add_argument( "-s", "--scala-version", help="The Spark version of Dockerfile.", default="2.12", ) parser.add_argument( "-i", "--image", help="The base image tag of Dockerfile.", default="eclipse-temurin:11-jre-focal", ) parser.add_argument( "-p", "--pyspark", action="store_true", help="Have PySpark support or not.", ) parser.add_argument( "-r", "--sparkr", action="store_true", help="Have SparkR support or not.", ) args, unknown = parser.parse_known_args() if unknown: parser.error("Unsupported arguments: %s" % " ".join(unknown)) return args def main(): opts = parse_opts() env = Environment(loader=FileSystemLoader("./")) template = env.get_template(opts.template_file) print( template.render( BASE_IMAGE=opts.image, HAVE_PY=opts.pyspark, HAVE_R=opts.sparkr, SPARK_VERSION=opts.spark_version, SPARK_GPG_KEY=GPG_KEY_DICT.get(opts.spark_version), JAVA_VERSION=opts.java_version, SCALA_VERSION=opts.scala_version, ) ) if __name__ == "__main__": main()