mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-04 15:05:20 +00:00
Create new hyperkube package.
This is the start of an uber-binary that can morph into any server. Eventually we'll want this to be able to launch multiple servers from a single command line.
This commit is contained in:
@@ -80,7 +80,9 @@ func (v *flagValueWrapper) IsBoolFlag() bool {
|
||||
// Imports a 'flag.Flag' into a 'pflag.FlagSet'. The "short" option is unset
|
||||
// and the type is inferred using reflection.
|
||||
func AddFlagToPFlagSet(f *flag.Flag, fs *pflag.FlagSet) {
|
||||
fs.Var(wrapFlagValue(f.Value), f.Name, f.Usage)
|
||||
if fs.Lookup(f.Name) == nil {
|
||||
fs.Var(wrapFlagValue(f.Value), f.Name, f.Usage)
|
||||
}
|
||||
}
|
||||
|
||||
// Adds all of the flags in a 'flag.FlagSet' package flags to a 'pflag.FlagSet'.
|
||||
|
||||
48
pkg/util/template.go
Normal file
48
pkg/util/template.go
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
Copyright 2015 Google Inc. All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package util
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"go/doc"
|
||||
"io"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
func wrap(indent string, s string) string {
|
||||
var buf bytes.Buffer
|
||||
doc.ToText(&buf, s, indent, indent+" ", 80-len(indent))
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
// ExecuteTemplate executes templateText with data and output written to w.
|
||||
func ExecuteTemplate(w io.Writer, templateText string, data interface{}) error {
|
||||
t := template.New("top")
|
||||
t.Funcs(template.FuncMap{
|
||||
"trim": strings.TrimSpace,
|
||||
"wrap": wrap,
|
||||
})
|
||||
template.Must(t.Parse(templateText))
|
||||
return t.Execute(w, data)
|
||||
}
|
||||
|
||||
func ExecuteTemplateToString(templateText string, data interface{}) (string, error) {
|
||||
b := bytes.Buffer{}
|
||||
err := ExecuteTemplate(&b, templateText, data)
|
||||
return b.String(), err
|
||||
}
|
||||
61
pkg/util/template_test.go
Normal file
61
pkg/util/template_test.go
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
Copyright 2015 Google Inc. All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package util
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestWrap(t *testing.T) {
|
||||
tt := `before ->{{.Long | wrap "**"}}<- after`
|
||||
data := struct {
|
||||
Long string
|
||||
}{
|
||||
`Hodor, hodor; hodor hodor;
|
||||
hodor hodor... Hodor hodor hodor? Hodor. Hodor hodor hodor hodor...
|
||||
Hodor hodor hodor; hodor hodor hodor! Hodor, hodor. Hodor. Hodor,
|
||||
HODOR hodor, hodor hodor; hodor hodor; hodor HODOR hodor, hodor hodor?
|
||||
Hodor. Hodor hodor - hodor hodor. Hodor hodor HODOR! Hodor hodor - hodor...
|
||||
Hodor hodor HODOR hodor, hodor hodor hodor! Hodor, hodor... Hodor hodor
|
||||
hodor hodor hodor hodor! Hodor, hodor; hodor hodor. Hodor.`,
|
||||
}
|
||||
output, _ := ExecuteTemplateToString(tt, data)
|
||||
t.Logf("%q", output)
|
||||
|
||||
assert.Equal(t, `before ->**Hodor, hodor; hodor hodor; hodor hodor... Hodor hodor hodor? Hodor. Hodor
|
||||
**hodor hodor hodor... Hodor hodor hodor; hodor hodor hodor! Hodor, hodor.
|
||||
**Hodor. Hodor, HODOR hodor, hodor hodor; hodor hodor; hodor HODOR hodor, hodor
|
||||
**hodor? Hodor. Hodor hodor - hodor hodor. Hodor hodor HODOR! Hodor hodor -
|
||||
**hodor... Hodor hodor HODOR hodor, hodor hodor hodor! Hodor, hodor... Hodor
|
||||
**hodor hodor hodor hodor hodor! Hodor, hodor; hodor hodor. Hodor.
|
||||
<- after`, output)
|
||||
}
|
||||
|
||||
func TestTrim(t *testing.T) {
|
||||
tt := `before ->{{.Messy | trim }}<- after`
|
||||
data := struct {
|
||||
Messy string
|
||||
}{
|
||||
"\t stuff\n \r ",
|
||||
}
|
||||
output, _ := ExecuteTemplateToString(tt, data)
|
||||
t.Logf("%q", output)
|
||||
|
||||
assert.Equal(t, `before ->stuff<- after`, output)
|
||||
}
|
||||
Reference in New Issue
Block a user