mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 09:24:23 +00:00
Add example plugin for go-getter
This commit is contained in:
@@ -223,6 +223,7 @@ provided in the kustomization file).
|
||||
[helm chart inflator]: ../../plugin/someteam.example.com/v1/chartinflator
|
||||
[bashed config map]: ../../plugin/someteam.example.com/v1/bashedconfigmap
|
||||
[sed transformer]: ../../plugin/someteam.example.com/v1/sedtransformer
|
||||
[hashicorp go-getter]: ../../plugin/someteam.example.com/v1/gogetter
|
||||
|
||||
#### Examples
|
||||
|
||||
@@ -230,7 +231,7 @@ provided in the kustomization file).
|
||||
* [bashed config map] - Super simple configMap generation from bash.
|
||||
* [sed transformer] - Define your unstructured edits using a
|
||||
plugin like this one.
|
||||
|
||||
* [hashicorp go-getter] - Download kustomize layes and build it to generate resources
|
||||
|
||||
A generator plugin accepts nothing on `stdin`, but emits
|
||||
generated resources to `stdout`.
|
||||
|
||||
46
plugin/someteam.example.com/v1/gogetter/GoGetter
Executable file
46
plugin/someteam.example.com/v1/gogetter/GoGetter
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2019 The Kubernetes Authors.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# HashiCorp go-getter
|
||||
#
|
||||
# Reads a file like this
|
||||
#
|
||||
# apiVersion: someteam.example.com/v1
|
||||
# kind: GoGetter
|
||||
# metadata:
|
||||
# name: example
|
||||
# url: github.com/kustless/kustomize-examples.git
|
||||
# # overlay: base # (optional) relative path in the package
|
||||
#
|
||||
# download kustomize layes and build it to stdout
|
||||
#
|
||||
# Example execution:
|
||||
# ./plugin/someteam.example.com/v1/gogetter/GoGetter configFile.yaml
|
||||
#
|
||||
# TODO: cache downloads
|
||||
|
||||
set -e
|
||||
|
||||
# YAML parsing function borrowed from ChartInflator
|
||||
function parseYaml {
|
||||
local file=$1
|
||||
while read -r line
|
||||
do
|
||||
local k=${line%:*}
|
||||
local v=${line#*:}
|
||||
local t=${v#"${v%%[![:space:]]*}"} # trim leading space
|
||||
|
||||
if [ "$k" == "url" ]; then url=$t
|
||||
elif [ "$k" == "overlay" ]; then overlay=$t
|
||||
fi
|
||||
done <"$file"
|
||||
}
|
||||
|
||||
TMP_DIR=$(mktemp -d)
|
||||
|
||||
parseYaml $1
|
||||
go-getter $url $TMP_DIR/got 2> /dev/null
|
||||
kustomize build $TMP_DIR/got/$overlay
|
||||
|
||||
/bin/rm -rf $TMP_DIR
|
||||
45
plugin/someteam.example.com/v1/gogetter/GoGetter_test.go
Normal file
45
plugin/someteam.example.com/v1/gogetter/GoGetter_test.go
Normal file
@@ -0,0 +1,45 @@
|
||||
// +build notravis
|
||||
|
||||
// Copyright 2019 The Kubernetes Authors.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Disabled on travis, because don't want to install go-getter on travis.
|
||||
|
||||
package main_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
kusttest_test "sigs.k8s.io/kustomize/v3/pkg/kusttest"
|
||||
plugins_test "sigs.k8s.io/kustomize/v3/pkg/plugins/test"
|
||||
)
|
||||
|
||||
// This test requires having the go-getter binary on the PATH.
|
||||
//
|
||||
func TestGoGetter(t *testing.T) {
|
||||
tc := plugins_test.NewEnvForTest(t).Set()
|
||||
defer tc.Reset()
|
||||
|
||||
tc.BuildExecPlugin(
|
||||
"someteam.example.com", "v1", "GoGetter")
|
||||
|
||||
th := kusttest_test.NewKustTestPluginHarness(t, "/app")
|
||||
|
||||
m := th.LoadAndRunGenerator(`
|
||||
apiVersion: someteam.example.com/v1
|
||||
kind: GoGetter
|
||||
metadata:
|
||||
name: example
|
||||
url: github.com/kustless/kustomize-examples.git
|
||||
`)
|
||||
|
||||
th.AssertActualEqualsExpected(m, `
|
||||
apiVersion: v1
|
||||
data:
|
||||
altGreeting: Good Morning!
|
||||
enableRisky: "false"
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: the-map
|
||||
`)
|
||||
}
|
||||
Reference in New Issue
Block a user