package builtins import ( "context" "time" "ucl.lmika.dev/ucl" ) func Time() ucl.Module { return ucl.Module{ Name: "time", Builtins: map[string]ucl.BuiltinHandler{ "from-unix": timeFromUnix, "sleep": timeSleep, }, } } func timeFromUnix(ctx context.Context, args ucl.CallArgs) (any, error) { var ux int if err := args.Bind(&ux); err != nil { return nil, err } return time.Unix(int64(ux), 0).UTC(), nil } func timeSleep(ctx context.Context, args ucl.CallArgs) (any, error) { var secs int if err := args.Bind(&secs); err != nil { return nil, err } select { case <-time.After(time.Duration(secs) * time.Second): return nil, nil case <-ctx.Done(): return nil, ctx.Err() } }