mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
a68c53cbb0
The `PypeGroup` click group did not provide any real benefit: * It added extra help about pipebox arguments, but text that was not correct from where the help was coming from (the group does not parse the arguments). The subcommands still reports it though. * It forbid using non-PypeGroup and non-PypeCommand commands in the command tree, but in the long run this is desirable so it should be dropped For these reasons it has been dropped.
69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
#
|
|
# This file is distributed under the MIT License. See LICENSE.md for details.
|
|
#
|
|
|
|
import os
|
|
|
|
import click
|
|
|
|
from revng.pypeline.cli.context import ClickContext, pass_context
|
|
from revng.pypeline.cli.utils import EagerParsedPath, StorageProviderUrl
|
|
from revng.pypeline.pipeline import Pipeline
|
|
from revng.pypeline.pipeline_parser import load_pipeline_yaml_file
|
|
from revng.pypeline.utils import cache_directory
|
|
|
|
from .analyze import analyze
|
|
from .artifact import artifact
|
|
from .daemon import run_daemon
|
|
from .dump_pipeline import dump_pipeline
|
|
|
|
|
|
@click.group(help="Project commands (porcelain)")
|
|
@click.option(
|
|
"--pipeline",
|
|
"pipeline",
|
|
type=EagerParsedPath(
|
|
name="pipeline",
|
|
parser=lambda path, _ctx: load_pipeline_yaml_file(path),
|
|
),
|
|
help='Path to the pipeline file. Defaults to the "PYPELINE_PIPELINE" environment if set',
|
|
default="pipeline.yml",
|
|
envvar="PYPELINE_PIPELINE",
|
|
show_default=True,
|
|
)
|
|
@click.option(
|
|
"--storage-provider",
|
|
"storage_provider",
|
|
type=StorageProviderUrl(),
|
|
help="The URL of the storage provider to use.",
|
|
default="local://",
|
|
envvar="PYPELINE_STORAGE_PROVIDER",
|
|
show_default=True,
|
|
)
|
|
@click.option(
|
|
"--cache-dir",
|
|
"cache_dir",
|
|
type=click.Path(exists=False, file_okay=False, dir_okay=True, writable=True),
|
|
help="The directory to use for caching.",
|
|
default=str(cache_directory()),
|
|
show_default=True,
|
|
)
|
|
@pass_context
|
|
def project(
|
|
ctx: ClickContext,
|
|
pipeline: Pipeline,
|
|
storage_provider: str,
|
|
cache_dir: str,
|
|
) -> None:
|
|
os.makedirs(ctx.params["cache_dir"], exist_ok=True)
|
|
# Store the params so the subcommands can access them
|
|
ctx.obj.cache_dir = cache_dir
|
|
ctx.obj.storage_provider_url = storage_provider
|
|
ctx.obj.pipeline = pipeline
|
|
|
|
|
|
project.add_command(analyze)
|
|
project.add_command(artifact)
|
|
project.add_command(run_daemon, name="daemon")
|
|
project.add_command(dump_pipeline, name="dump-pipeline")
|