mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
6c558279dd
This allows users to create simple "profiles" via separate `invokeai.yaml` files. - Remove `InvokeAIAppConfig.set_root()`, it's extraneous - Remove `InvokeAIAppConfig.merge_from_file()`, it's extraneous - Add `--config` to the app arg parser, add `InvokeAIAppConfig._config_file`, and consume in the config singleton getter - `InvokeAIAppConfig.init_file_path` -> `InvokeAIAppConfig.config_file_path`
47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
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
|