From 8150e7421c55dea354e239e618acb9d1160b53da Mon Sep 17 00:00:00 2001
From: Uzair Ali <72073401+uzaxirr@users.noreply.github.com>
Date: Mon, 2 Sep 2024 15:56:25 +0530
Subject: [PATCH] Decode Base64 script before saving state (#336)

* Decode Base64 script before saving state
---
 civo/instances/resource_instance.go | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/civo/instances/resource_instance.go b/civo/instances/resource_instance.go
index e21f13d1..285a8471 100644
--- a/civo/instances/resource_instance.go
+++ b/civo/instances/resource_instance.go
@@ -2,6 +2,7 @@ package instances
 
 import (
 	"context"
+	"encoding/base64"
 	"errors"
 	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
 	"log"
@@ -361,6 +362,16 @@ func resourceInstanceRead(_ context.Context, d *schema.ResourceData, m interface
 		d.Set("initial_password", "")
 	}
 
+	if resp.Script == "" {
+		d.Set("script", "")
+	}
+
+	decodedScript, err := base64.StdEncoding.DecodeString(resp.Script)
+	if err != nil {
+		return diag.Errorf("[ERR] failed to decode base64 script: %s", err)
+	}
+
+	d.Set("script", string(decodedScript))
 	d.Set("hostname", resp.Hostname)
 	d.Set("reverse_dns", resp.ReverseDNS)
 	d.Set("size", resp.Size)
@@ -377,7 +388,6 @@ func resourceInstanceRead(_ context.Context, d *schema.ResourceData, m interface
 	d.Set("network_id", resp.NetworkID)
 	d.Set("firewall_id", resp.FirewallID)
 	d.Set("status", resp.Status)
-	d.Set("script", resp.Script)
 	d.Set("created_at", resp.CreatedAt.UTC().String())
 	d.Set("notes", resp.Notes)
 	d.Set("disk_image", diskImg.ID)