in cobra/aid/render.go [46:141]
func writeInputs() error {
variables, err := os.Open("variables.tf")
if err != nil {
logrus.Fatal(err)
}
defer variables.Close()
// create INPUTS.md
inputs, err := os.OpenFile("INPUTS.md", os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
logrus.Println(err)
}
defer inputs.Close()
if _, err := inputs.WriteString("| Name | Description | Type | Default | Required |\n|------|-------------|:----:|:-----:|:-----:|\n"); err != nil {
logrus.Println(err)
}
var varName, varType, varDescription, varDefault string
varRequired := "no"
// startBlock := false
scanner := bufio.NewScanner(variables)
for scanner.Scan() {
line := scanner.Text()
// skip empty lines
if len(line) > 0 {
if strings.Contains(line, "variable") && strings.Contains(line, "{") {
out, found := helper.GetStringBetweenDoubleQuotes(line)
if found {
varName = out
}
}
if strings.Contains(line, "type") && strings.Contains(line, "=") {
slc := helper.GetStringTrimmed(line, "=")
if slc[0] == "type" {
varType = slc[1]
if strings.Contains(varType, "({") {
slc = helper.GetStringTrimmed(varType, "({")
varType = slc[0]
}
}
}
if strings.Contains(line, "description") && strings.Contains(line, "=") {
slc := helper.GetStringTrimmed(line, "=")
if slc[0] == "description" {
out, found := helper.GetStringBetweenDoubleQuotes(slc[1])
if found {
varDescription = out
}
}
}
if strings.Contains(line, "default") && strings.Contains(line, "=") {
slc := helper.GetStringTrimmed(line, "=")
if slc[0] == "default" {
varDefault = slc[1]
if strings.Contains(varDefault, "{") {
varDefault = "<map>"
}
}
}
// end of the variable declaration
if strings.Contains(line, "}") && len(line) == 1 {
if len(varName) > 0 && len(varType) > 0 && len(varDescription) > 0 {
var result string
if len(varDefault) == 0 {
varRequired = "yes"
result = fmt.Sprintf("| %s | %s | %s | %s | %s |\n", varName, varDescription, varType, varDefault, varRequired)
} else {
result = fmt.Sprintf("| %s | %s | %s | `%s` | %s |\n", varName, varDescription, varType, varDefault, varRequired)
}
if _, err := inputs.WriteString(result); err != nil {
logrus.Println(err)
}
varName, varType, varDescription, varDefault, varRequired = "", "", "", "", "no"
}
}
}
}
if err := scanner.Err(); err != nil {
logrus.Fatal(err)
}
return err
}