Source code for pinefarm.cli.update

"""Update datasets metadata."""

import pathlib
import shutil

import click
import rich

from .. import configs, tools
from ._base import command


@command.command("update")
@click.argument("datasets", nargs=-1)
def subcommand(datasets):
    """Update datasets metadata.

    DATASETS are an arbitrary number of datasets to be updated (if empty, do
    nothing).
    """
    main(datasets)


[docs] def main(datasets): """Update datasets metadata.""" for path in datasets: path = pathlib.Path(path) dataset = path.stem # remove doble suffix if "pineappl" in dataset: dataset = pathlib.Path(dataset).stem metadata = configs.configs["paths"]["runcards"] / dataset / "metadata.txt" with open(metadata) as fd: entries = tools.parse_metadata(fd) dest = path.parent / (path.name + ".tmp") tools.update_grid_metadata(path, dest, entries) compressed = tools.compress(dest) dest.unlink() shutil.move(str(compressed), str(path)) rich.print(f"'{path}'\n\tgrid metadata updated")