Update README, add template args

This commit is contained in:
atmaranto
2024-03-09 05:59:41 -06:00
parent 0b4788d2af
commit 8f0a47307e
3 changed files with 20 additions and 12 deletions
+8 -4
View File
@@ -48,15 +48,19 @@ For instance, if you have a simple default workflow, but have converted the text
Then the unfilled required variable will be available as an argument:
```bash
usage: default-workflow.py [-h] text1
usage: workflow.py [-h] [--queue-size QUEUE_SIZE] [--comfyui-directory COMFYUI_DIRECTORY] filename_prefix1
A converted ComfyUI workflow. Required inputs listed below. Values passed should be in JSON
A converted ComfyUI workflow. Required inputs listed below. Values passed should be valid JSON (assumes string if not valid JSON).
positional arguments:
text1 Argument 0, input `text` for node "CLIP Text Encode (Prompt)" id 6 (autogenerated)
filename_prefix1 Argument 1, input `filename_prefix` for node "Save Image" id 64 (autogenerated)
options:
-h, --help show this help message and exit
-h, --help show this help message and exit
--queue-size QUEUE_SIZE, -q QUEUE_SIZE
How many times the workflow will be executed (default: 10)
--comfyui-directory COMFYUI_DIRECTORY, -c COMFYUI_DIRECTORY
Where to look for ComfyUI (default: current directory)
```
Arguments are new. **If you have any suggestions on how to improve them or on how to effectively specify defaults in the workflow and override in the command-line**, feel free to suggest that in an Issue.
+7 -7
View File
@@ -306,12 +306,12 @@ class CodeGenerator:
for func in [get_value_at_index, find_path, add_comfyui_directory_to_sys_path, add_extra_model_paths, import_custom_nodes, parse_arg]:
func_strings.append(f'\n{inspect.getsource(func)}')
argparse_code = ""
if arg_inputs:
argparse_code = f'\nparser = argparse.ArgumentParser(description="A converted ComfyUI workflow. Required inputs listed below. Values passed should be in JSON")\n'
for i, (input_name, arg_desc) in enumerate(arg_inputs):
argparse_code += f'parser.add_argument("{input_name}", help="{arg_desc} (autogenerated)")\n'
argparse_code += 'args = parser.parse_args()\nsys.argv = [sys.argv[0]]\n'
argparse_code = f'\nparser = argparse.ArgumentParser(description="A converted ComfyUI workflow. Required inputs listed below. Values passed should be valid JSON (assumes string if not valid JSON).")\n'
for i, (input_name, arg_desc) in enumerate(arg_inputs):
argparse_code += f'parser.add_argument("{input_name}", help="{arg_desc} (autogenerated)")\n'
argparse_code += f'parser.add_argument("--queue-size", "-q", type=int, default={queue_size}, help="How many times the workflow will be executed (default: {queue_size})")\n'
argparse_code += f'parser.add_argument("--comfyui-directory", "-c", default=None, help="Where to look for ComfyUI (default: current directory)")\n'
argparse_code += 'args = parser.parse_args()\nsys.argv = [sys.argv[0]]\n'
# Define static import statements required for the script
static_imports = ['import os', 'import random', 'import sys', 'import json', 'import argparse', 'from typing import Sequence, Mapping, Any, Union',
@@ -327,7 +327,7 @@ class CodeGenerator:
imports_code = [f"from nodes import {', '.join([class_name for class_name in import_statements])}", '']
# Assemble the main function code, including custom nodes if applicable
main_function_code = "def main():\n\t" + f'{custom_nodes}with torch.inference_mode():\n\t\t' + '\n\t\t'.join(speical_functions_code) \
+ f'\n\n\t\tfor q in range({queue_size}):\n\t\t' + '\n\t\t'.join(code)
+ f'\n\n\t\tfor q in range(args.queue_size):\n\t\t' + '\n\t\t'.join(code)
# Concatenate all parts to form the final code
final_code = '\n'.join(static_imports + imports_code + [main_function_code, '', 'if __name__ == "__main__":', '\tmain()'])
# Format the final code according to PEP 8 using the Black library
+5 -1
View File
@@ -4,6 +4,7 @@ import sys
sys.path.append('../')
args = None
def import_custom_nodes() -> None:
"""Find all custom nodes in the custom_nodes folder and add those node objects to NODE_CLASS_MAPPINGS
@@ -35,7 +36,10 @@ def find_path(name: str, path: str = None) -> str:
"""
# If no path is given, use the current working directory
if path is None:
path = os.getcwd()
if args is None or args.comfyui_directory is None:
path = os.getcwd()
else:
path = args.comfyui_directory
# Check if the current directory contains the name
if name in os.listdir(path):