mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 01:14:22 +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
|
[helm chart inflator]: ../../plugin/someteam.example.com/v1/chartinflator
|
||||||
[bashed config map]: ../../plugin/someteam.example.com/v1/bashedconfigmap
|
[bashed config map]: ../../plugin/someteam.example.com/v1/bashedconfigmap
|
||||||
[sed transformer]: ../../plugin/someteam.example.com/v1/sedtransformer
|
[sed transformer]: ../../plugin/someteam.example.com/v1/sedtransformer
|
||||||
|
[hashicorp go-getter]: ../../plugin/someteam.example.com/v1/gogetter
|
||||||
|
|
||||||
#### Examples
|
#### Examples
|
||||||
|
|
||||||
@@ -230,7 +231,7 @@ provided in the kustomization file).
|
|||||||
* [bashed config map] - Super simple configMap generation from bash.
|
* [bashed config map] - Super simple configMap generation from bash.
|
||||||
* [sed transformer] - Define your unstructured edits using a
|
* [sed transformer] - Define your unstructured edits using a
|
||||||
plugin like this one.
|
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
|
A generator plugin accepts nothing on `stdin`, but emits
|
||||||
generated resources to `stdout`.
|
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