mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 04:31:13 +00:00
* add openbb-cookiecutter to repo * typo * review items * some fixes * missing annotation * duplicate ignore in pylintrc * protected access --------- Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com> Co-authored-by: deeleeramone <>
77 lines
2.0 KiB
Python
77 lines
2.0 KiB
Python
"""CLI for OpenBB Cookiecutter template."""
|
|
|
|
# pylint: disable=W0718
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
from cookiecutter.main import cookiecutter
|
|
|
|
from . import get_template_path
|
|
|
|
|
|
def main(argv: list | None = None) -> int:
|
|
"""Run the OpenBB cookiecutter template.
|
|
|
|
Args:
|
|
argv: Command line arguments (defaults to sys.argv[1:])
|
|
|
|
Returns:
|
|
Exit code (0 for success, non-zero for error)
|
|
"""
|
|
parser = argparse.ArgumentParser(
|
|
description="Generate an OpenBB Platform extension from template"
|
|
)
|
|
parser.add_argument(
|
|
"-o",
|
|
"--output-dir",
|
|
default=".",
|
|
help="Where to output the generated project (default: current directory)",
|
|
)
|
|
parser.add_argument(
|
|
"--no-input",
|
|
action="store_true",
|
|
help="Do not prompt for parameters and use defaults",
|
|
)
|
|
parser.add_argument(
|
|
"-f", "--overwrite-if-exists", action="store_true", help="Overwrite if exists"
|
|
)
|
|
parser.add_argument(
|
|
"--extra-context",
|
|
action="append",
|
|
metavar="KEY=VALUE",
|
|
help="Extra context variables (can be used multiple times)",
|
|
)
|
|
|
|
args = parser.parse_args(argv)
|
|
|
|
# Build extra context from arguments
|
|
extra_context = {}
|
|
if args.extra_context:
|
|
for item in args.extra_context:
|
|
if "=" not in item:
|
|
print(f"Error: extra-context must be in KEY=VALUE format: {item}")
|
|
return 1
|
|
key, value = item.split("=", 1)
|
|
extra_context[key] = value
|
|
|
|
# Get the bundled template path
|
|
template_path = get_template_path()
|
|
|
|
try:
|
|
cookiecutter(
|
|
str(template_path),
|
|
output_dir=args.output_dir,
|
|
no_input=args.no_input,
|
|
overwrite_if_exists=args.overwrite_if_exists,
|
|
extra_context=extra_context if extra_context else None,
|
|
)
|
|
return 0
|
|
except Exception as e:
|
|
print(f"Error: {e}", file=sys.stderr) # noqa
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|