mirror of
https://github.com/terraform-docs/terraform-docs.git
synced 2026-03-27 21:08:41 +07:00
62 lines
1.7 KiB
Go
62 lines
1.7 KiB
Go
/*
|
|
Copyright 2021 The terraform-docs Authors.
|
|
|
|
Licensed under the MIT license (the "License"); you may not
|
|
use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at the LICENSE file in
|
|
the root directory of this source tree.
|
|
*/
|
|
|
|
// Package plugin contains the implementations needed to make
|
|
// the built binary act as a plugin.
|
|
//
|
|
// A plugin is implemented as an RPC server and the host acts
|
|
// as the client, sending analysis requests to the plugin.
|
|
// Note that the server-client relationship here is the opposite of
|
|
// the communication that takes place during the checking phase.
|
|
//
|
|
// Implementation details are hidden in go-plugin. This package is
|
|
// essentially a wrapper for go-plugin.
|
|
//
|
|
// # Usage
|
|
//
|
|
// A simple plugin can look like this:
|
|
//
|
|
// package main
|
|
//
|
|
// import (
|
|
// _ "embed" //nolint
|
|
//
|
|
// "github.com/terraform-docs/terraform-docs/plugin"
|
|
// "github.com/terraform-docs/terraform-docs/print"
|
|
// "github.com/terraform-docs/terraform-docs/template"
|
|
// "github.com/terraform-docs/terraform-docs/terraform"
|
|
// )
|
|
//
|
|
// func main() {
|
|
// plugin.Serve(&plugin.ServeOpts{
|
|
// Name: "template",
|
|
// Version: "0.1.0",
|
|
// Printer: printerFunc,
|
|
// })
|
|
// }
|
|
//
|
|
// //go:embed sections.tmpl
|
|
// var tplCustom []byte
|
|
//
|
|
// // printerFunc the function being executed by the plugin client.
|
|
// func printerFunc(config *print.Config, module *terraform.Module) (string, error) {
|
|
// tpl := template.New(config,
|
|
// &template.Item{Name: "custom", Text: string(tplCustom)},
|
|
// )
|
|
//
|
|
// rendered, err := tpl.Render("custom", module)
|
|
// if err != nil {
|
|
// return "", err
|
|
// }
|
|
//
|
|
// return rendered, nil
|
|
// }
|
|
package plugin
|