option to configure timeout with flag

This commit is contained in:
Gavin Nishizawa 2023-06-12 11:47:59 -07:00
parent 31cbd3eb87
commit a5b87038bd
No known key found for this signature in database
GPG key ID: AE3B177777CE55CD

View file

@ -31,7 +31,6 @@ import (
"oss.terrastruct.com/d2/d2themes" "oss.terrastruct.com/d2/d2themes"
"oss.terrastruct.com/d2/d2themes/d2themescatalog" "oss.terrastruct.com/d2/d2themes/d2themescatalog"
"oss.terrastruct.com/d2/lib/background" "oss.terrastruct.com/d2/lib/background"
"oss.terrastruct.com/d2/lib/env"
"oss.terrastruct.com/d2/lib/imgbundler" "oss.terrastruct.com/d2/lib/imgbundler"
ctxlog "oss.terrastruct.com/d2/lib/log" ctxlog "oss.terrastruct.com/d2/lib/log"
"oss.terrastruct.com/d2/lib/pdf" "oss.terrastruct.com/d2/lib/pdf"
@ -89,6 +88,11 @@ func Run(ctx context.Context, ms *xmain.State) (err error) {
if err != nil { if err != nil {
return err return err
} }
timeoutFlag, err := ms.Opts.Int64("D2_TIMEOUT", "timeout", "", 0, "the number of seconds before d2 will timeout. default is 60s.")
if err != nil {
return err
}
versionFlag, err := ms.Opts.Bool("", "version", "v", false, "get the version") versionFlag, err := ms.Opts.Bool("", "version", "v", false, "get the version")
if err != nil { if err != nil {
return err return err
@ -161,6 +165,9 @@ func Run(ctx context.Context, ms *xmain.State) (err error) {
if *browserFlag != "" { if *browserFlag != "" {
ms.Env.Setenv("BROWSER", *browserFlag) ms.Env.Setenv("BROWSER", *browserFlag)
} }
if timeoutFlag != nil {
os.Setenv("D2_TIMEOUT", fmt.Sprintf("%d", *timeoutFlag))
}
var inputPath string var inputPath string
var outputPath string var outputPath string
@ -300,10 +307,9 @@ func Run(ctx context.Context, ms *xmain.State) (err error) {
} }
timeout := time.Minute * 2 timeout := time.Minute * 2
if seconds, has := env.Timeout(); has { if timeoutFlag != nil {
timeout = time.Duration(seconds) * time.Second timeout = time.Duration(*timeoutFlag) * time.Second
} }
if timeout > 0 { if timeout > 0 {
var cancel func() var cancel func()
ctx, cancel = context.WithTimeout(ctx, timeout) ctx, cancel = context.WithTimeout(ctx, timeout)