def parse_kvs_argument_callback(
    ctx: Context,
    params: Parameter,
    value: tuple[str, ...],  # pylint: disable=unused-argument
) -> t.List[tuple[str, str]]:
    """
    split "key1=value1 key2=value2" into [("key1", "value1"), ("key2", "value2")],
    """
    key_vals: t.List[tuple[str, str]] = []
    for key_val in value:
        key, val = key_val.split("=")
        if not key or not val:
            raise click.BadParameter(f"Invalid key-value pair: {key_val}")
        if val.startswith("@"):
            filename = resolve_user_filepath(val[1:], ctx=None)
            if not os.path.exists(filename) or not os.path.isfile(filename):
                raise click.BadParameter(f"Invalid file path: {filename}")
            # read the file content
            with open(filename, "r") as f:
                val = f.read()
        key_vals.append((key, val))
    return key_vals
split "key1=value1 key2=value2" into [("key1", "value1"), ("key2", "value2")],
src/bentoml_cli/secret.py