From d2de7f821be9fa298fc668d2466c14f46ecabb1c Mon Sep 17 00:00:00 2001 From: Masayuki Morita Date: Sat, 24 Aug 2019 00:04:28 +0900 Subject: [PATCH] Split main into functions --- main.go | 52 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index 64e5030..fb32328 100644 --- a/main.go +++ b/main.go @@ -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 }