diff --git a/d2cli/main.go b/d2cli/main.go index 52f3a2ed0e..4aae3c4943 100644 --- a/d2cli/main.go +++ b/d2cli/main.go @@ -503,7 +503,7 @@ func compile(ctx context.Context, ms *xmain.State, plugins []d2plugin.Plugin, la board := diagram.GetBoard(boardPath) if board == nil { - return nil, false, fmt.Errorf("Diagram with path %s not found", boardPath) + return nil, false, fmt.Errorf(`Diagram with path "%s" not found. Did you mean to specify a board like "layers.%s"?`, boardPath, boardPath) } boards, err := render(ctx, ms, compileDur, plugin, renderOpts, inputPath, outputPath, bundle, forceAppendix, page, ruler, board) diff --git a/d2target/d2target.go b/d2target/d2target.go index 46e086985e..01ff19dadd 100644 --- a/d2target/d2target.go +++ b/d2target/d2target.go @@ -95,29 +95,24 @@ func (d *Diagram) getBoard(boardPath []string) *Diagram { return d } + if len(boardPath) < 2 { + return nil + } + switch head { case "layers": - if len(boardPath) < 2 { - return nil - } for _, b := range d.Layers { if b.Name == boardPath[1] { return b.getBoard(boardPath[2:]) } } case "scenarios": - if len(boardPath) < 2 { - return nil - } for _, b := range d.Scenarios { if b.Name == boardPath[1] { return b.getBoard(boardPath[2:]) } } case "steps": - if len(boardPath) < 2 { - return nil - } for _, b := range d.Steps { if b.Name == boardPath[1] { return b.getBoard(boardPath[2:])