provider-schema/processors/types.go (44 lines of code) (raw):
package processors
import (
"fmt"
"strings"
"github.com/Azure/azurerm-lsp/provider-schema/azurerm/schema"
"github.com/Azure/azurerm-lsp/provider-schema/processors/.tools/document-lint/model"
)
type TerraformObjects map[string]*TerraformObject
type TerraformObject struct {
Name string `json:"name"`
Fields map[string]*schema.SchemaAttribute `json:"fields"`
ExampleHCL string `json:"example_hcl"`
Timeouts *model.Timeouts
Import model.Import
Details string `json:"details"` // Start from first h2 header (after description)
}
func (b *TerraformObject) GetName() string {
return strings.TrimPrefix(b.Name, schema.InputDataSourcePrefix)
}
func (b *TerraformObject) IsDataSource() bool {
return strings.HasPrefix(b.Name, schema.InputDataSourcePrefix)
}
func (b *TerraformObject) GetResourceOrDataSourceDocLink() string {
objectDocName, _ := strings.CutPrefix(b.GetName(), schema.AzureRMPrefix)
if b.IsDataSource() {
return fmt.Sprintf(schema.TerraformDocsURL, schema.DefaultDocVersion, schema.DataSources, objectDocName)
}
return fmt.Sprintf(schema.TerraformDocsURL, schema.DefaultDocVersion, schema.Resources, objectDocName)
}
func (b *TerraformObject) GetGitHubIssueLink() string {
return fmt.Sprintf(schema.GitHubIssuesURL, b.GetName())
}
func (b *TerraformObject) GetSnippet() string {
snippet := strings.TrimSpace(b.ExampleHCL)
snippet = strings.TrimPrefix(snippet, "```hcl")
snippet = strings.TrimPrefix(snippet, "\n")
snippet = strings.TrimSuffix(snippet, "\n")
snippet = strings.TrimSuffix(snippet, "```")
snippet = strings.TrimSuffix(snippet, "\n")
return strings.TrimSpace(snippet)
}
func (b *TerraformObject) GetDocContent() string {
return b.Details
}