From 67c9b248ddb4599f5b34cac71f7fd2c08becdcab Mon Sep 17 00:00:00 2001 From: Lucas Oskorep Date: Wed, 22 Mar 2023 15:11:49 -0400 Subject: [PATCH 1/2] fix: extract metadata fails for file types which are not .md --- pkg/mark/link.go | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/pkg/mark/link.go b/pkg/mark/link.go index edde74b6..65fd5ad9 100644 --- a/pkg/mark/link.go +++ b/pkg/mark/link.go @@ -7,6 +7,7 @@ import ( "os" "path/filepath" "regexp" + "strings" "github.com/kovetskiy/mark/pkg/confluence" "github.com/reconquest/karma-go" @@ -72,10 +73,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 } @@ -84,9 +85,9 @@ func resolveLink( return "", nil } - linkContents, err := os.ReadFile(filepath) + linkContents, err := os.ReadFile(filePath) if err != nil { - return "", karma.Format(err, "read file: %s", filepath) + return "", karma.Format(err, "read file: %s", filePath) } linkContents = bytes.ReplaceAll( @@ -97,12 +98,15 @@ 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 @@ -124,7 +128,7 @@ func resolveLink( return "", karma.Format( err, "find confluence page: %s / %s / %s", - filepath, + filePath, linkMeta.Space, linkMeta.Title, ) @@ -202,3 +206,12 @@ func getConfluenceLink( return link, nil } + +func IsMarkdownFile(extension string) bool { + switch strings.ToLower(extension) { + case + "md": + return true + } + return false +} From 30b0785fae45197135c838c6b520c1d9c788884c Mon Sep 17 00:00:00 2001 From: Lucas Oskorep Date: Wed, 22 Mar 2023 19:10:19 -0400 Subject: [PATCH 2/2] 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 -}