def main(argv=sys.argv[1:]): # Create parser parser = DockerfileArgParser() # generate data for config data = parser.parse(argv) # Print parsed meta packages pkg_names = data['packages'] print("Found the following packages:") for pkg_name in sorted(pkg_names): print(' -', pkg_name) # Print parsed template packages template_pkg_names = data['template_packages'] print("Priority of template packages:") for template_pkg_name in template_pkg_names: print(' -', template_pkg_name) # template_name is specified relative to the templates folder in the template_packages template_name = 'docker_images/create_base_image.Dockerfile.em' dockerfile_dir = data['dockerfile_dir'] # generate Dockerfile create_dockerfile(template_name, data, dockerfile_dir)
def main(argv=sys.argv[1:]): """Create Dockerfiles for images from platform and image yaml data""" # Create the top-level parser parser = DockerfileArgParser( description="Generate the 'Dockerfile's for the base docker images") parser.set() args = parser.parse_args(argv) # If paths were given explicitly if args.subparser_name == 'explicit': platform_path = args.platform images_path = args.images output_path = args.output # Else just use the given directory path elif args.subparser_name == 'dir': platform_path = 'platform.yaml' images_path = 'images.yaml.em' platform_path = os.path.join(args.directory, platform_path) images_path = os.path.join(args.directory, images_path) output_path = args.directory # Read platform perams with open(platform_path, 'r') as f: # use safe_load instead load platform = yaml.safe_load(f)['platform'] # Ream image perams using platform perams images_yaml = StringIO() try: interpreter = Interpreter(output=images_yaml) interpreter.file(open(images_path, 'r'), locals=platform) images_yaml = images_yaml.getvalue() except Exception as e: print("Error processing %s" % images_path) raise finally: interpreter.shutdown() interpreter = None # Use ordered dict images = OrderedLoad(images_yaml, yaml.SafeLoader)['images'] # For each image tag for image in images: # Get data for image data = dict(images[image]) data['tag_name'] = image # Add platform perams data.update(platform) # Check version if not data['package_version']: checkVersion(data) # Apply version if ('gazebo_packages' in data) and ('package_version' in data): data['gazebo_packages'] = applyVersion(data['gazebo_packages'], data['package_version']) # Get path to save Docker file dockerfile_dir = os.path.join(output_path, image) if not os.path.exists(dockerfile_dir): os.makedirs(dockerfile_dir) data['dockerfile_dir'] = dockerfile_dir # generate Dockerfile create_dockerfile(data)
def main(argv=sys.argv[1:]): """Create Dockerfiles for images from platform and image yaml data""" # Create the top-level parser parser = DockerfileArgParser( description="Generate the 'Dockerfile's for the base docker images") parser.set() args = parser.parse_args(argv) # If paths were given explicitly if args.subparser_name == 'explicit': platform_path = args.platform images_path = args.images output_path = args.output # Else just use the given directory path elif args.subparser_name == 'dir': platform_path = 'platform.yaml' images_path = 'images.yaml.em' platform_path = os.path.join(args.directory, platform_path) images_path = os.path.join(args.directory, images_path) output_path = args.directory # Read platform perams with open(platform_path, 'r') as f: # use safe_load instead load platform = yaml.safe_load(f)['platform'] # Ream image perams using platform perams images_yaml = StringIO() try: interpreter = Interpreter(output=images_yaml) interpreter.file(open(images_path, 'r'), locals=platform) images_yaml = images_yaml.getvalue() except Exception as e: print("Error processing %s" % images_path) raise finally: interpreter.shutdown() interpreter = None # Use ordered dict images = OrderedLoad(images_yaml, yaml.SafeLoader)['images'] # For each image tag for image in images: # Get data for image data = dict(images[image]) data['tag_name'] = image # Add platform perams data.update(platform) # Apply version data['gazebo_packages'] = applyVersion(data['gazebo_packages'], data['package_version']) # Get path to save Docker file dockerfile_dir = os.path.join(output_path, image) if not os.path.exists(dockerfile_dir): os.makedirs(dockerfile_dir) data['dockerfile_dir'] = dockerfile_dir # generate Dockerfile create_dockerfile(data)