From 30b0785fae45197135c838c6b520c1d9c788884c Mon Sep 17 00:00:00 2001 From: Lucas Oskorep Date: Wed, 22 Mar 2023 19:10:19 -0400 Subject: [PATCH] feat: moving to IsTextFile for file type detection --- go.mod | 1 + go.sum | 2 ++ pkg/mark/link.go | 34 +++++++++++++--------------------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index 635c28bb..5c98b997 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/reconquest/pkg v1.3.0 github.com/reconquest/regexputil-go v0.0.0-20160905154124-38573e70c1f4 github.com/stretchr/testify v1.8.1 + golang.org/x/tools v0.7.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index cb5e6e27..56e730c6 100644 --- a/go.sum +++ b/go.sum @@ -43,6 +43,8 @@ github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKs github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/zazab/zhash v0.0.0-20210630080733-6e809466f8d3 h1:BhVaeQJc3xalHGONn215FylzuxdQBIT3d/aRjDg4nXQ= github.com/zazab/zhash v0.0.0-20210630080733-6e809466f8d3/go.mod h1:NtepZ8TEXErPsmQDMUoN72f8aIy4+xNinSJ3f1giess= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/mark/link.go b/pkg/mark/link.go index 65fd5ad9..2a5e3550 100644 --- a/pkg/mark/link.go +++ b/pkg/mark/link.go @@ -7,11 +7,11 @@ import ( "os" "path/filepath" "regexp" - "strings" "github.com/kovetskiy/mark/pkg/confluence" "github.com/reconquest/karma-go" "github.com/reconquest/pkg/log" + "golang.org/x/tools/godoc/util" ) type LinkSubstitution struct { @@ -44,7 +44,6 @@ func ResolveRelativeLinks( match.filename, match.hash, ) - resolved, err := resolveLink(api, base, match, spaceFromCli, titleFromH1) if err != nil { return nil, karma.Format(err, "resolve link: %q", match.full) @@ -73,10 +72,10 @@ func resolveLink( var result string if len(link.filename) > 0 { - filePath := filepath.Join(base, link.filename) + filepath := filepath.Join(base, link.filename) - log.Tracef(nil, "filePath: %s", filePath) - stat, err := os.Stat(filePath) + log.Tracef(nil, "filepath: %s", filepath) + stat, err := os.Stat(filepath) if err != nil { return "", nil } @@ -85,9 +84,14 @@ func resolveLink( return "", nil } - linkContents, err := os.ReadFile(filePath) + linkContents, err := os.ReadFile(filepath) + + if !util.IsText(linkContents) { + return "", nil + } + if err != nil { - return "", karma.Format(err, "read file: %s", filePath) + return "", karma.Format(err, "read file: %s", filepath) } linkContents = bytes.ReplaceAll( @@ -98,15 +102,12 @@ func resolveLink( // This helps to determine if found link points to file that's // not markdown or have mark required metadata - if !IsMarkdownFile(filepath.Ext(filePath)) { - return "", nil - } linkMeta, _, err := ExtractMeta(linkContents, spaceFromCli, titleFromH1) if err != nil { log.Errorf( err, "unable to extract metadata from %q; ignoring the relative link", - filePath, + filepath, ) return "", nil @@ -128,7 +129,7 @@ func resolveLink( return "", karma.Format( err, "find confluence page: %s / %s / %s", - filePath, + filepath, linkMeta.Space, linkMeta.Title, ) @@ -206,12 +207,3 @@ func getConfluenceLink( return link, nil } - -func IsMarkdownFile(extension string) bool { - switch strings.ToLower(extension) { - case - "md": - return true - } - return false -}