Skip to content

Commit

Permalink
Merge pull request #2 from goflink/feat/markdown-table
Browse files Browse the repository at this point in the history
Feature: markdown table
  • Loading branch information
dineshba authored Jul 15, 2022
2 parents 316d084 + 1391f37 commit cf7046f
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 11 deletions.
13 changes: 10 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ func main() {
tree := flag.Bool("tree", false, "[Optional] print changes in tree format")
separateTree := flag.Bool("separate-tree", false, "[Optional] print changes in tree format for add/delete/change/recreate changes")
drawable := flag.Bool("draw", false, "[Optional, used only with -tree or -separate-tree] draw trees instead of plain tree")
md := flag.Bool("md", false, "[Optional, used only with table view] output table as markdown")
outputFileName := flag.String("out", "", "[Optional] write output to file")

flag.Usage = func() {
Expand All @@ -32,7 +33,7 @@ func main() {
}

args := flag.Args()
err := validateFlags(*tree, *separateTree, *drawable, args)
err := validateFlags(*tree, *separateTree, *drawable, *md, args)
logIfErrorAndExit("invalid input flags: %s\n", err, flag.Usage)

newReader, err := reader.CreateReader(os.Stdin, args)
Expand All @@ -49,7 +50,7 @@ func main() {

terraformState.FilterNoOpResources()

newWriter := writer.CreateWriter(*tree, *separateTree, *drawable, terraformState)
newWriter := writer.CreateWriter(*tree, *separateTree, *drawable, *md, terraformState)

var outputFile io.Writer = os.Stdout

Expand Down Expand Up @@ -80,7 +81,13 @@ func logIfErrorAndExit(format string, err error, callback func()) {
}
}

func validateFlags(tree, separateTree, drawable bool, args []string) error {
func validateFlags(tree, separateTree, drawable bool, md bool, args []string) error {
if tree && md {
return fmt.Errorf("both -tree and -md should not be provided")
}
if separateTree && md {
return fmt.Errorf("both -seperate-tree and -md should not be provided")
}
if tree && separateTree {
return fmt.Errorf("both -tree and -seperate-tree should not be provided")
}
Expand Down
1 change: 1 addition & 0 deletions reader/stdin.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
)

const StdinFileName = "stdin"

type StdinReader struct {
}

Expand Down
29 changes: 23 additions & 6 deletions writer/table.go
Original file line number Diff line number Diff line change
@@ -1,33 +1,50 @@
package writer

import (
"github.com/olekukonko/tablewriter"
"fmt"
"io"
"terraform-plan-summary/terraform_state"

"github.com/olekukonko/tablewriter"
)

type TableWriter struct {
changes map[string]terraform_state.ResourceChanges
mdEnabled bool
changes map[string]terraform_state.ResourceChanges
}

func (t TableWriter) Write(writer io.Writer) error {
tableString := make([][]string, 0, 4)
for change, changedResources := range t.changes {
for _, changedResource := range changedResources {
tableString = append(tableString, []string{change, changedResource.Address})
if t.mdEnabled {
tableString = append(tableString, []string{change, fmt.Sprintf("`%s`", changedResource.Address)})
} else {
tableString = append(tableString, []string{change, changedResource.Address})
}
}
}

table := tablewriter.NewWriter(writer)
table.SetHeader([]string{"Change", "Name"})
table.SetAutoMergeCells(true)
table.SetRowLine(true)
table.AppendBulk(tableString)

if t.mdEnabled {
table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false})
table.SetCenterSeparator("|")
} else {
table.SetRowLine(true)
}

table.Render()

return nil
}

func NewTableWriter(changes map[string]terraform_state.ResourceChanges) Writer {
return TableWriter{changes: changes}
func NewTableWriter(changes map[string]terraform_state.ResourceChanges, mdEnabled bool) Writer {
return TableWriter{
changes: changes,
mdEnabled: mdEnabled,
}
}
4 changes: 2 additions & 2 deletions writer/writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ type Writer interface {
Write(writer io.Writer) error
}

func CreateWriter(tree, separateTree, drawable bool, terraformState terraform_state.TerraformState) Writer {
func CreateWriter(tree, separateTree, drawable bool, mdEnabled bool, terraformState terraform_state.TerraformState) Writer {
if tree {
return NewTreeWriter(terraformState.ResourceChanges, drawable)
}
if separateTree {
return NewSeparateTree(terraformState.AllChanges(), drawable)
}
return NewTableWriter(terraformState.AllChanges())
return NewTableWriter(terraformState.AllChanges(), mdEnabled)
}

0 comments on commit cf7046f

Please sign in to comment.