Skip to content

Commit

Permalink
Split main into functions
Browse files Browse the repository at this point in the history
  • Loading branch information
minamijoyo committed Aug 23, 2019
1 parent d7aa840 commit d2de7f8
Showing 1 changed file with 44 additions and 8 deletions.
52 changes: 44 additions & 8 deletions main.go
Expand Up @@ -12,29 +12,65 @@ import (

func main() {
filename := "./main.tf"
src, err := ioutil.ReadFile(filename)

err := updateFile(filename)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to open file: %s, err = %+v\n", filename, err)
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}

func updateFile(filename string) error {
f, err := parseConfig(filename)
if err != nil {
return err
}

err = updateTerraform(f)
if err != nil {
return err
}

err = updateProvider(f)
if err != nil {
return err
}

tokens := f.BuildTokens(nil)
buf := hclwrite.Format(tokens.Bytes())

fmt.Printf("%s\n", buf)
return nil
}

func parseConfig(filename string) (*hclwrite.File, error) {
src, err := ioutil.ReadFile(filename)
if err != nil {
return nil, fmt.Errorf("failed to open file: %s, err = %+v", filename, err)
}

f, diags := hclwrite.ParseConfig(src, filename, hcl.Pos{Line: 1, Column: 1})
if diags.HasErrors() {
fmt.Fprintf(os.Stderr, "failed to parse file: %s", diags)
os.Exit(1)
return nil, fmt.Errorf("failed to parse file: %s", diags)
}

return f, nil
}

func updateTerraform(f *hclwrite.File) error {
tf := f.Body().FirstMatchingBlock("terraform", []string{})
tf.Body().SetAttributeValue("required_version", cty.StringVal("0.12.6"))

return nil
}

func updateProvider(f *hclwrite.File) error {
tf := f.Body().FirstMatchingBlock("terraform", []string{})
providers := tf.Body().FirstMatchingBlock("required_providers", []string{})
providers.Body().SetAttributeValue("null", cty.StringVal("2.1.2"))

aws := f.Body().FirstMatchingBlock("provider", []string{"aws"})
aws.Body().SetAttributeValue("version", cty.StringVal("2.23.0"))

tokens := f.BuildTokens(nil)
buf := hclwrite.Format(tokens.Bytes())

fmt.Printf("%s\n", buf)
return nil
}

0 comments on commit d2de7f8

Please sign in to comment.