| | from argparse import ArgumentParser, Namespace, RawTextHelpFormatter |
| | from typing import Optional |
| |
|
| | from invokeai.version import __version__ |
| |
|
| | _root_help = r"""Path to the runtime root directory. If omitted, the app will search for the root directory in the following order: |
| | - The `$INVOKEAI_ROOT` environment variable |
| | - The currently active virtual environment's parent directory |
| | - `$HOME/invokeai`""" |
| |
|
| | _config_file_help = r"""Path to the invokeai.yaml configuration file. If omitted, the app will search for the file in the root directory.""" |
| |
|
| | _parser = ArgumentParser(description="Invoke Studio", formatter_class=RawTextHelpFormatter) |
| | _parser.add_argument("--root", type=str, help=_root_help) |
| | _parser.add_argument("--config", dest="config_file", type=str, help=_config_file_help) |
| | _parser.add_argument("--version", action="version", version=__version__, help="Displays the version and exits.") |
| |
|
| |
|
| | class InvokeAIArgs: |
| | """Helper class for parsing CLI args. |
| | |
| | Args should never be parsed within the application code, only in the CLI entrypoints. Parsing args within the |
| | application creates conflicts when running tests or when using application modules directly. |
| | |
| | If the args are needed within the application, the consumer should access them from this class. |
| | |
| | Example: |
| | ``` |
| | # In a CLI wrapper |
| | from invokeai.frontend.cli.arg_parser import InvokeAIArgs |
| | InvokeAIArgs.parse_args() |
| | |
| | # In the application |
| | from invokeai.frontend.cli.arg_parser import InvokeAIArgs |
| | args = InvokeAIArgs.args |
| | """ |
| |
|
| | args: Optional[Namespace] = None |
| | did_parse: bool = False |
| |
|
| | @staticmethod |
| | def parse_args() -> Optional[Namespace]: |
| | """Parse CLI args and store the result.""" |
| | InvokeAIArgs.args = _parser.parse_args() |
| | InvokeAIArgs.did_parse = True |
| | return InvokeAIArgs.args |
| |
|