Managed ComfyUI picks up Comfy-Desktop shared models/input/output automatically
This commit is contained in:
@@ -44,7 +44,9 @@ func ComfyLayout(goos, dir string) (python, script string) {
|
||||
// DefaultComfyCommand builds the launch command for the standard venv
|
||||
// layout (see ComfyLayout): the script is passed relative to dir so dir
|
||||
// stays the working directory, and --port is taken from comfyURL when the
|
||||
// URL carries one.
|
||||
// URL carries one. On a Comfy-Desktop standalone install the shared data
|
||||
// directory (models, input, output) is added as --*-directory flags so the
|
||||
// managed instance sees the desktop app's models.
|
||||
func DefaultComfyCommand(goos, dir, comfyURL string) string {
|
||||
python, script := ComfyLayout(goos, dir)
|
||||
rel, err := filepath.Rel(dir, script)
|
||||
@@ -55,9 +57,34 @@ func DefaultComfyCommand(goos, dir, comfyURL string) string {
|
||||
if u, err := url.Parse(comfyURL); err == nil && u.Port() != "" {
|
||||
cmd += " --port " + u.Port()
|
||||
}
|
||||
if shared := DesktopSharedDir(dir); shared != "" {
|
||||
for _, sub := range []string{"models", "input", "output"} {
|
||||
p := filepath.Join(shared, sub)
|
||||
if st, err := os.Stat(p); err == nil && st.IsDir() {
|
||||
cmd += ` --` + sub + `-directory "` + p + `"`
|
||||
}
|
||||
}
|
||||
}
|
||||
return cmd
|
||||
}
|
||||
|
||||
// DesktopSharedDir returns the Comfy-Desktop shared data directory
|
||||
// (<root>/ComfyUI-Shared) when dir looks like a desktop standalone install
|
||||
// (<root>/ComfyUI-Installs/<name>/ComfyUI) and the shared models directory
|
||||
// exists; "" otherwise. The desktop app keeps models, input and output
|
||||
// there rather than inside the ComfyUI tree.
|
||||
func DesktopSharedDir(dir string) string {
|
||||
installs := filepath.Dir(filepath.Dir(dir))
|
||||
if filepath.Base(installs) != "ComfyUI-Installs" {
|
||||
return ""
|
||||
}
|
||||
shared := filepath.Join(filepath.Dir(installs), "ComfyUI-Shared")
|
||||
if st, err := os.Stat(filepath.Join(shared, "models")); err == nil && st.IsDir() {
|
||||
return shared
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// Process is one managed child process.
|
||||
type Process struct {
|
||||
name string
|
||||
|
||||
Reference in New Issue
Block a user