pulumi/pkg/codegen/docs/gen_kubernetes.go
Praneet Loke 78e9621379
[codegen/docs] Allow specifying the languages to show in the lang chooser (#4426)
* Add auto-generated disclaimer for the resource.tmpl as well.

* Allow specifying the languages to show in the lang chooser. Hide the go language for k8s overlay resources.

* Add another exclusion for generating the C# constructor param for k8s overlay resources.

* Replace hard-coded exclusions for skipping input properties with checking for ConstValue attribute of input properties.
2020-04-17 11:45:06 -07:00

74 lines
2.1 KiB
Go

//go:generate go run bundler.go
// Copyright 2016-2020, Pulumi Corporation.
//
// 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.
// Pulling out some of the repeated strings tokens into constants would harm readability, so we just ignore the
// goconst linter's warning.
//
// nolint: lll, goconst
package docs
import (
"path"
"strings"
"github.com/pulumi/pulumi/pkg/v2/codegen/schema"
)
func isKubernetesPackage(pkg *schema.Package) bool {
return pkg.Name == "kubernetes"
}
func (mod *modContext) isKubernetesOverlayModule() bool {
return mod.mod == "helm/v2" || mod.mod == "yaml"
}
func getKubernetesMod(pkg *schema.Package, token string, modules map[string]*modContext, tool string) *modContext {
modName := pkg.TokenToModule(token)
// Kubernetes' moduleFormat in the schema will match everything
// in the token. This prevents us from adding the "Provider"
// resource as a child module of the package level :index: module.
if modName == "providers" {
modName = ""
} else {
modName = strings.TrimSuffix(modName, ".k8s.io")
modName = strings.TrimSuffix(modName, ".apiserver")
modName = strings.TrimSuffix(modName, ".authorization")
}
mod, ok := modules[modName]
if !ok {
mod = &modContext{
pkg: pkg,
mod: modName,
tool: tool,
}
if modName != "" {
parentName := path.Dir(modName)
// If the parent name is blank, it means this is the package-level.
if parentName == "." || parentName == "" {
parentName = ":index:"
} else {
parentName = ":" + parentName + ":"
}
parent := getKubernetesMod(pkg, parentName, modules, tool)
parent.children = append(parent.children, mod)
}
modules[modName] = mod
}
return mod
}