diff --git a/cmd/mungedocs/mungedocs.go b/cmd/mungedocs/mungedocs.go index b82d1d22f23..0c1fe218912 100644 --- a/cmd/mungedocs/mungedocs.go +++ b/cmd/mungedocs/mungedocs.go @@ -40,6 +40,7 @@ var ( allMunges = []munge{ {"table-of-contents", updateTOC}, {"check-links", checkLinks}, + {"unversioned-warning", updateUnversionedWarning}, } ) diff --git a/cmd/mungedocs/unversioned_warning.go b/cmd/mungedocs/unversioned_warning.go new file mode 100644 index 00000000000..8939fce4532 --- /dev/null +++ b/cmd/mungedocs/unversioned_warning.go @@ -0,0 +1,45 @@ +/* +Copyright 2015 The Kubernetes Authors 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 main + +var beginUnversionedWarning = "" +var endUnversionedWarning = "" +var unversionedWarning = ` + + +

*** PLEASE NOTE: This document applies to the HEAD of the source +tree only. If you are using a released version of Kubernetes, you almost +certainly want the docs that go with that version.

+ +Documentation for specific releases can be found at +[releases.k8s.io](http://releases.k8s.io). + + +` + +// inserts/updates a warning for unversioned docs +func updateUnversionedWarning(file string, markdown []byte) ([]byte, error) { + lines := splitLines(markdown) + if hasLine(lines, "") { + // No warnings on release branches + return markdown, nil + } + if !hasMacroBlock(lines, beginUnversionedWarning, endUnversionedWarning) { + lines = append([]string{beginUnversionedWarning, endUnversionedWarning}, lines...) + } + return updateMacroBlock(lines, beginUnversionedWarning, endUnversionedWarning, unversionedWarning) +} diff --git a/cmd/mungedocs/unversioned_warning_test.go b/cmd/mungedocs/unversioned_warning_test.go new file mode 100644 index 00000000000..f9431905386 --- /dev/null +++ b/cmd/mungedocs/unversioned_warning_test.go @@ -0,0 +1,64 @@ +/* +Copyright 2015 The Kubernetes Authors 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 main + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestUnversionedWarning(t *testing.T) { + warningBlock := beginUnversionedWarning + "\n" + unversionedWarning + "\n" + endUnversionedWarning + "\n" + var cases = []struct { + in string + out string + }{ + {"", warningBlock}, + { + "Foo\nBar\n", + warningBlock + "Foo\nBar\n", + }, + { + "Foo\n\nBar", + "Foo\n\nBar", + }, + { + beginUnversionedWarning + "\n" + endUnversionedWarning + "\n", + warningBlock, + }, + { + beginUnversionedWarning + "\n" + "something\n" + endUnversionedWarning + "\n", + warningBlock, + }, + { + "Foo\n" + beginUnversionedWarning + "\n" + endUnversionedWarning + "\nBar\n", + "Foo\n" + warningBlock + "Bar\n", + }, + { + "Foo\n" + warningBlock + "Bar\n", + "Foo\n" + warningBlock + "Bar\n", + }, + } + for i, c := range cases { + actual, err := updateUnversionedWarning("filename.md", []byte(c.in)) + assert.NoError(t, err) + if string(actual) != c.out { + t.Errorf("case[%d]: expected %q got %q", i, c.out, string(actual)) + } + } +}