def METHOD_NAME(self, *args, **options):
    okay = True
    if options["file"] is None:
        logger.error("You must specify a file to import metadata from")
        okay = False
    if options["source_name"] is None:
        logger.error("You must specify a source name")
        okay = False
    if options["methods_url"] is None:
        logger.error("You must specify a methods url")
        okay = False
    if not okay:
        sys.exit(1)
    if "s3://" in options["file"]:
        bucket, key = parse_s3_url(options["file"])
        s3 = boto3.resource("s3")
        try:
            filepath = "/tmp/keyword_" + str(uuid.uuid4()) + ".json"
            s3.Bucket(bucket).download_file(key, filepath)
        except botocore.exceptions.ClientError as e:
            if e.response["Error"]["Code"] == "404":
                logger.error("The remote file does not exist.")
                raise
            else:
                raise
    else:
        filepath = options["file"]
    with open(filepath) as file:
        keywords = json.load(file)
    if type(keywords) != dict:
        logger.error("The provided keywords file is not a dict with accession code keys")
        sys.exit(1)
    source, _ = Contribution.objects.get_or_create(
        source_name=options["source_name"], methods_url=options["methods_url"]
    )
    import_keywords(keywords, source)