from steps import metadata_setup, build_image

class Build():
    def __init__(self):
        self.metadata_setup_step = metadata_setup.MetadataSetup()
        self.build_image_step = build_image.BuildImage()

    def run_build(self):
        self.metadata_setup_step.run_script()
        self.build_image_step.run_script()

def main():
    build = Build()
    build.run_build()

if __name__ == "__main__":
    main()
