mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-21 06:21:43 +00:00
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package resource
|
|
|
|
import (
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"sigs.k8s.io/kustomize/api/internal/git"
|
|
)
|
|
|
|
// Origin retains information about where resources in the output
|
|
// of `kustomize build` originated from
|
|
type Origin struct {
|
|
// Path is the path to the resource, rooted from the directory upon
|
|
// which `kustomize build` was invoked
|
|
Path string
|
|
|
|
// Repo is the remote repository that the resource originated from if it is
|
|
// not from a local file
|
|
Repo string
|
|
|
|
// Ref is the ref of the remote repository that the resource originated from
|
|
// if it is not from a local file
|
|
Ref string
|
|
}
|
|
|
|
// Copy returns a copy of origin
|
|
func (origin *Origin) Copy() Origin {
|
|
return *origin
|
|
}
|
|
|
|
// Append returns a copy of origin with a path appended to it
|
|
func (origin *Origin) Append(path string) *Origin {
|
|
originCopy := origin.Copy()
|
|
repoSpec, err := git.NewRepoSpecFromUrl(path)
|
|
if err == nil {
|
|
originCopy.Repo = repoSpec.Host + repoSpec.OrgRepo
|
|
absPath := repoSpec.AbsPath()
|
|
path = absPath[strings.Index(absPath[1:], "/")+1:][1:]
|
|
originCopy.Path = ""
|
|
originCopy.Ref = repoSpec.Ref
|
|
}
|
|
originCopy.Path = filepath.Join(originCopy.Path, path)
|
|
return &originCopy
|
|
}
|
|
|
|
// String returns a string version of origin
|
|
func (origin *Origin) String() string {
|
|
var anno string
|
|
anno = anno + "path: " + origin.Path + "\n"
|
|
if origin.Repo != "" {
|
|
anno = anno + "repo: " + origin.Repo + "\n"
|
|
}
|
|
if origin.Ref != "" {
|
|
anno = anno + "ref: " + origin.Ref + "\n"
|
|
}
|
|
return anno
|
|
}
|