diff -Nuar a/src/ctx.go b/src/ctx.go --- a/src/ctx.go 1981-01-01 00:00:00.000000000 +0000 +++ b/src/ctx.go 2025-09-21 09:44:18.301104773 +0000 @@ -18,6 +18,7 @@ import ( "errors" "fmt" + "io" "io/fs" "os" "path/filepath" @@ -106,25 +107,37 @@ if showPrgrs && omitPrgrs { return nil, errors.New("simultaneous -progress and -noprogress") } - fi, err := os.Stat(cfgPath) - if err != nil { - return nil, err - } var cfg *CfgJSON - if fi.IsDir() { - cfg, err = DirToCfg(cfgPath) + if cfgPath == "-" { + cfgRaw, err := io.ReadAll(os.Stdin) + os.Stdin.Close() if err != nil { return nil, err } - } else { - cfgRaw, err := os.ReadFile(cfgPath) + cfg, err = CfgParse(cfgRaw) if err != nil { return nil, err } - cfg, err = CfgParse(cfgRaw) + } else { + fi, err := os.Stat(cfgPath) if err != nil { return nil, err } + if fi.IsDir() { + cfg, err = DirToCfg(cfgPath) + if err != nil { + return nil, err + } + } else { + cfgRaw, err := os.ReadFile(cfgPath) + if err != nil { + return nil, err + } + cfg, err = CfgParse(cfgRaw) + if err != nil { + return nil, err + } + } } ctx, err := Cfg2Ctx(cfg) if err != nil {