mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-04 13:20:50 +00:00
Move the tool as a dependency for static checks migration. Fixes #8187 Signed-off-by: Bin Liu <bin@hyper.sh> Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com> Signed-off-by: Gabriela Cervantes <gabriela.cervantes.tellez@intel.com> Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com> Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com> Signed-off-by: Julio Montes <julio.montes@intel.com>
136 lines
2.9 KiB
Go
136 lines
2.9 KiB
Go
//
|
|
// Copyright (c) 2019 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// linkAddrToPath converts a link address into a path name.
|
|
func (d *Doc) linkAddrToPath(address string) (string, error) {
|
|
if address == "" {
|
|
return "", errors.New("need address")
|
|
}
|
|
|
|
dir := filepath.Dir(d.Name)
|
|
|
|
var file string
|
|
|
|
// An "absolute link path" like this has been specified:
|
|
//
|
|
// [Foo](/absolute-link.md)
|
|
if strings.HasPrefix(address, absoluteLinkPrefix) {
|
|
if !fileExists(docRoot) {
|
|
return "", fmt.Errorf("document root %q does not exist", docRoot)
|
|
}
|
|
|
|
file = filepath.Join(docRoot, address)
|
|
} else {
|
|
file = filepath.Join(dir, address)
|
|
}
|
|
|
|
return file, nil
|
|
}
|
|
|
|
// addHeading adds the specified heading to the document.
|
|
//
|
|
// Note that headings must be unique.
|
|
func (d *Doc) addHeading(heading Heading) error {
|
|
name := heading.Name
|
|
|
|
if name == "" {
|
|
return d.Errorf("heading name cannot be blank: %+v", heading)
|
|
}
|
|
|
|
if heading.LinkName == "" {
|
|
return d.Errorf("heading link name cannot be blank: %q (%+v)",
|
|
name, heading)
|
|
}
|
|
|
|
if heading.Level <= 0 {
|
|
return d.Errorf("heading level must be atleast 1: %q (%+v)",
|
|
name, heading)
|
|
}
|
|
|
|
if _, ok := d.Headings[name]; ok {
|
|
return d.Errorf("duplicate heading: %q (heading: %+v)",
|
|
name, heading)
|
|
}
|
|
|
|
// Potentially change the ID to handle strange characters
|
|
// supported in links by GitHub.
|
|
id, err := createHeadingID(heading.Name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
heading.LinkName = id
|
|
|
|
d.Logger.WithField("heading", fmt.Sprintf("%+v", heading)).Debug("adding heading")
|
|
|
|
d.Headings[name] = heading
|
|
|
|
return nil
|
|
}
|
|
|
|
// addLink potentially adds the specified link to the document.
|
|
//
|
|
// Note that links do not need to be unique: a document can contain
|
|
// multiple links with:
|
|
//
|
|
// - the same description and the same address.
|
|
// - the same description but with different addresses.
|
|
// - different descriptions but with the same address.
|
|
func (d *Doc) addLink(link Link) error {
|
|
addr := link.Address
|
|
|
|
if link.ResolvedPath != "" {
|
|
addr = link.ResolvedPath
|
|
}
|
|
|
|
if addr == "" {
|
|
return d.Errorf("link address cannot be blank: %+v", link)
|
|
}
|
|
|
|
if link.Type == unknownLink {
|
|
return d.Errorf("BUG: link type invalid: %+v", link)
|
|
}
|
|
|
|
// Not checked by default as magic "build status" / go report / godoc
|
|
// links don't have a description - they have a image only.
|
|
if strict && link.Description == "" {
|
|
return d.Errorf("link description cannot be blank: %q (%+v)",
|
|
addr, link)
|
|
}
|
|
|
|
fields := logrus.Fields{
|
|
"link": fmt.Sprintf("%+v", link),
|
|
}
|
|
|
|
links := d.Links[addr]
|
|
|
|
for _, l := range links {
|
|
if l.Type == link.Type {
|
|
d.Logger.WithFields(fields).Debug("not adding duplicate link")
|
|
|
|
return nil
|
|
}
|
|
}
|
|
|
|
d.Logger.WithFields(fields).Debug("adding link")
|
|
|
|
links = append(links, link)
|
|
d.Links[addr] = links
|
|
|
|
return nil
|
|
}
|