d2ir: Fix for windows

Closes #1388
This commit is contained in:
Anmol Sethi 2023-06-09 19:45:09 -07:00
parent dc1536e8fb
commit 1f891a3c9e
No known key found for this signature in database
GPG key ID: 8CEF1878FF10ADEB
2 changed files with 7 additions and 22 deletions

View file

@ -6,7 +6,6 @@ import (
"io" "io"
"io/fs" "io/fs"
"net/url" "net/url"
"os"
"strconv" "strconv"
"strings" "strings"
@ -32,9 +31,6 @@ func Compile(p string, r io.RuneReader, opts *CompileOptions) (*d2graph.Graph, e
if opts == nil { if opts == nil {
opts = &CompileOptions{} opts = &CompileOptions{}
} }
if opts.FS == nil {
opts.FS = os.DirFS("/")
}
ast, err := d2parser.Parse(p, r, &d2parser.ParseOptions{ ast, err := d2parser.Parse(p, r, &d2parser.ParseOptions{
UTF16: opts.UTF16, UTF16: opts.UTF16,

View file

@ -2,6 +2,7 @@ package d2ir
import ( import (
"bufio" "bufio"
"io/fs"
"os" "os"
"path" "path"
"strings" "strings"
@ -85,25 +86,13 @@ func (c *compiler) __import(imp *d2ast.Import) (*Map, bool) {
return ir, true return ir, true
} }
p := path.Clean(impPath) var f fs.File
if path.IsAbs(p) { var err error
// Path cannot be absolute. DirFS does not accept absolute paths. We strip off the leading if c.fs == nil {
// slash to make it relative to the root. f, err = os.Open(impPath)
p = p[1:] } else {
} else if c.fs == os.DirFS("/") { f, err = c.fs.Open(impPath)
wd, err := os.Getwd()
if err != nil {
c.errorf(imp, "failed to import %q: %v", impPath, err)
return nil, false
} }
p = path.Join(wd, p)
// See above explanation.
if path.IsAbs(p) {
p = p[1:]
}
}
f, err := c.fs.Open(p)
if err != nil { if err != nil {
c.errorf(imp, "failed to import %q: %v", impPath, err) c.errorf(imp, "failed to import %q: %v", impPath, err)
return nil, false return nil, false