Skip to content

Commit

Permalink
Merge pull request #27 from gainings/add_debug_log
Browse files Browse the repository at this point in the history
Add debug log and slog settings
  • Loading branch information
gainings authored Jul 14, 2024
2 parents e3279ad + 7aa355a commit b7f37b7
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 2 deletions.
30 changes: 28 additions & 2 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,48 @@ package cmd
import (
"github.com/gainings/tfirmg/internal/usecase"
"github.com/spf13/cobra"
"log/slog"
"os"
"strings"
)

// RootCmd is cmd that handling terraform root resource
var BaseCmd = &cobra.Command{
Long: "this tool provide any tool for develop utilities",
PersistentPreRun: func(cmd *cobra.Command, args []string) {
if envLogLevel := os.Getenv("LOG_LEVEL"); envLogLevel != "" {
logLevel = envLogLevel
}

var ll = new(slog.LevelVar)
switch strings.ToLower(strings.ToLower(logLevel)) {
case "debug":
ll.Set(slog.LevelDebug)
case "info":
ll.Set(slog.LevelInfo)
case "warn":
ll.Set(slog.LevelWarn)
case "error":
ll.Set(slog.LevelError)
default:
ll.Set(slog.LevelInfo)
}

logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: ll}))
slog.SetDefault(logger)

},
}

var version string

var (
port int
logLevel string
)

func init() {
cobra.OnInitialize()
BaseCmd.PersistentFlags().StringVar(&logLevel, "loglevel", "", "set log level (debug, info, warn, error)")
BaseCmd.Run = func(cmd *cobra.Command, args []string) {
_ = BaseCmd.Help()
}
Expand All @@ -32,7 +59,6 @@ func init() {
mc.Flags().String("src-tfstate-path", "", "tfstate path")
mc.Flags().String("src-module", "", "src module name that resource moved")
mc.Flags().String("dst-module", "", "dst module name that will be moved")

BaseCmd.AddCommand(
rc,
mc,
Expand Down
7 changes: 7 additions & 0 deletions internal/usecase/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
_ "github.com/gainings/tfirmg/internal/rules/providers/aws"
"github.com/gainings/tfirmg/internal/tfstate"
"github.com/spf13/cobra"
"log/slog"
"os"
"path"
"strings"
Expand Down Expand Up @@ -159,6 +160,7 @@ func (mu moduleUsecase) findMissingResourcesInModules(resourceNameMap map[string
notFoundResources := make(map[string]map[string]resource.Resource)
notFoundResourceInModules := make(map[string]map[string]resource.Resources)

slog.Debug("---Find missing resource in modules---")
for _, r := range srcTfstateResources {
if r.Module == nil {
continue
Expand All @@ -170,6 +172,7 @@ func (mu moduleUsecase) findMissingResourcesInModules(resourceNameMap map[string
if _, exists := notFoundResources[k]; !exists {
notFoundResources[k] = make(map[string]resource.Resource)
}
slog.Debug("This resource removed from terraform code", "target resource", r.Name, "index", r.IndexKey, "module", r.Module.Name)
notFoundResources[k][r.IndexKey] = r
}
} else {
Expand All @@ -178,6 +181,7 @@ func (mu moduleUsecase) findMissingResourcesInModules(resourceNameMap map[string
if _, exists := notFoundResourceInModules[k]; !exists {
notFoundResourceInModules[k] = make(map[string]resource.Resources)
}
slog.Debug("This resource removed from terraform code", "target resource", r.Name, "index", r.IndexKey, "module", r.Module.Name)
notFoundResourceInModules[k][r.IndexKey] = append(notFoundResourceInModules[k][r.IndexKey], r)
}
}
Expand All @@ -192,6 +196,7 @@ func (mu moduleUsecase) generateMovedBlocks(onlyCode []resource.Resource) hcl.Mo
parts := strings.Split(r.Address.String(), ".")
parts[1] = mu.options.dstModule

slog.Debug("Generate Moved Block", "target resource", r.Name, "index", r.IndexKey, "module", r.Module.Name)
mb := hcl.MovedBlock{
From: r.Address.String(),
To: strings.Join(parts, "."),
Expand All @@ -206,10 +211,12 @@ func (mu moduleUsecase) generateImportRemovedBlocks(onlyCode []resource.Resource
var ibs hcl.ImportBlocks
var rbs hcl.RemoveBlocks

slog.Debug("---Generate HCL Blocks---")
for _, r := range onlyCode {
parts := strings.Split(r.Address.String(), ".")
parts[1] = mu.options.dstModule

slog.Debug("Generate Import / Remved Block", "target resource", r.Name, "index", r.IndexKey, "module", r.Module.Name)
ib := hcl.ImportBlock{
To: strings.Join(parts, "."),
ID: r.ID.String(),
Expand Down
6 changes: 6 additions & 0 deletions internal/usecase/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
_ "github.com/gainings/tfirmg/internal/rules/providers/aws"
"github.com/gainings/tfirmg/internal/tfstate"
"github.com/spf13/cobra"
"log/slog"
)

// Root is command root to generate terraform code for root resources
Expand Down Expand Up @@ -108,13 +109,16 @@ func findMissingResources(resourceNameMap map[string]struct{}, srcTfstateResourc
notFoundResources := make(map[string]resource.Resource)
notFoundResourceInModules := make(map[string][]resource.Resource)

slog.Debug("---Find missing resources---")
for _, r := range srcTfstateResources {
if r.Module != nil {
if _, ok := resourceNameMap[r.Module.Name]; !ok {
slog.Debug("This resource removed from terraform code", "target resource", r.Name, "index", r.IndexKey, "module", r.Module.Name)
notFoundResourceInModules[r.Module.Name] = append(notFoundResourceInModules[r.Module.Name], r)
}
} else {
if _, ok := resourceNameMap[r.Name]; !ok {
slog.Debug("This resource removed from terraform code", "target resource", r.Name, "index", r.IndexKey)
notFoundResources[r.Name] = r
}
}
Expand All @@ -127,7 +131,9 @@ func generateHCLBlocks(onlyCode []resource.Resource) (hcl.ImportBlocks, hcl.Remo
var ibs hcl.ImportBlocks
var rbs hcl.RemoveBlocks

slog.Debug("---Generate HCL Blocks---")
for _, r := range onlyCode {
slog.Debug("Generate Import / Remved Block", "target resource", r.Name, "index", r.IndexKey)
ib := hcl.ImportBlock{
To: r.Address.String(),
ID: r.ID.String(),
Expand Down

0 comments on commit b7f37b7

Please sign in to comment.