def main():
    """
    Generates a Docker Image of ChefSDK based on a local dockerfile.
    Installs a local recipe in the image.
    :return:
    """
    # Parse the command line arguments
    parser = argparse.ArgumentParser(description="Generates Docker images based on Chef cookbooks")
    parser.add_argument("chef_name", help="The chef cookbook to deploy")
    parser.add_argument(
        "-f",
        "--fast",
        dest="fast",
        action="store_true",
        help="Fast save (RAM intensive), slow commandline save by default",
    )
    parser.add_argument("-H", dest="host", help="docker url (defaults to local socket")
    parser.add_argument("-v", "--verbose", dest="debug", action="store_true", help="Show verbose messages")
    args = parser.parse_args()

    # logging management
    lev = logging.ERROR
    if args.debug:
        lev = logging.DEBUG
    logging.basicConfig(level=lev)
    # generate the docker image
    print "Connecting to Docker Client...",
    dc = DockerClient(args.host)
    print "OK"
    print "Generating Image...",
    sta = dc.generate_image("ChefImage.docker", args.chef_name)
    print "OK" if sta else "FAILED"
    print "Saving Image file docker-%s.tar to disk ..." % args.chef_name,
    if args.fast:
        dc.save_image()
    else:
        dc.save_image_cmd()
    print "OK"