diff --git a/cmd/destroy.go b/cmd/destroy.go index 59b01a9..fa20a4c 100644 --- a/cmd/destroy.go +++ b/cmd/destroy.go @@ -5,15 +5,16 @@ Copyright © 2023 Sirrend package cmd import ( + "os" + "path" + "path/filepath" + "github.com/enescakir/emoji" "github.com/sirrend/terrap-cli/internal/commons" "github.com/sirrend/terrap-cli/internal/state" - "github.com/sirrend/terrap-cli/internal/terraform_utils" "github.com/sirrend/terrap-cli/internal/utils" + "github.com/sirrend/terrap-cli/internal/utils/terraform" "github.com/sirrend/terrap-cli/internal/workspace" - "os" - "path" - "path/filepath" "github.com/spf13/cobra" ) @@ -35,7 +36,7 @@ func deleteInitData(dir string) { } if ws.IsTempProvider { - err = terraform_utils.RemoveTempTerraformExecutor(ws.ExecPath) + err = terraform.RemoveTempTerraformExecutor(ws.ExecPath) if err != nil { _, _ = commons.RED.Println(err) os.Exit(1) diff --git a/cmd/init.go b/cmd/init.go index c69ee21..d254587 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -7,15 +7,16 @@ package cmd import ( "fmt" + "os" + "path" + "path/filepath" + "github.com/enescakir/emoji" "github.com/sirrend/terrap-cli/internal/commons" "github.com/sirrend/terrap-cli/internal/state" - "github.com/sirrend/terrap-cli/internal/terraform_utils" "github.com/sirrend/terrap-cli/internal/utils" + "github.com/sirrend/terrap-cli/internal/utils/terraform" "github.com/spf13/cobra" - "os" - "path" - "path/filepath" ) // terraformInit @@ -31,17 +32,17 @@ func terraformInit(dir string) { if err != nil { _, _ = commons.YELLOW.Println(emoji.Rocket, "Initializing directory...") mainWorkspace.ExecPath, mainWorkspace.IsTempProvider, - mainWorkspace.TerraformVersion, err = terraform_utils.TerraformInit(dir) // initiate new terraform tool in context + mainWorkspace.TerraformVersion, err = terraform.TerraformInit(dir) // initiate new terraform tool in context if err != nil { fmt.Println() - terraform_utils.TerraformErrorPrettyPrint(err) + terraform.TerraformErrorPrettyPrint(err) os.Exit(1) } _, _ = commons.YELLOW.Print(emoji.Toolbox, " Looking for providers...") - terraform_utils.FindTfProviders(dir, &mainWorkspace) //find all providers and assign to mainWorkspace + terraform.FindTfProviders(dir, &mainWorkspace) //find all providers and assign to mainWorkspace _, _ = commons.GREEN.Println(" Done!") _, _ = commons.YELLOW.Print(emoji.WavingHand, " Saving workspace...") diff --git a/cmd/open_issue.go b/cmd/open_issue.go index 6f99b35..8442474 100644 --- a/cmd/open_issue.go +++ b/cmd/open_issue.go @@ -5,10 +5,11 @@ Copyright © 2023 Sirrend package cmd import ( + "os" + "github.com/sirrend/terrap-cli/internal/commons" - "github.com/sirrend/terrap-cli/internal/github_issue" + "github.com/sirrend/terrap-cli/internal/github" "github.com/spf13/cobra" - "os" ) // createIssue @@ -22,9 +23,9 @@ import ( isFeature - bool - is a feature request */ func createIssue(token, title, description string, isFeature bool) { - issue, err := github_issue.OpenIssue(token, title, description, isFeature) + issue, err := github.OpenIssue(token, title, description, isFeature) if err != nil { - if _, ok := err.(*github_issue.RateError); ok { + if _, ok := err.(*github.RateError); ok { _, _ = commons.YELLOW.Println(err.Error()) os.Exit(0) } diff --git a/cmd/providers.go b/cmd/providers.go index e877d65..70b5609 100644 --- a/cmd/providers.go +++ b/cmd/providers.go @@ -8,11 +8,11 @@ import ( "strings" "github.com/enescakir/emoji" - "github.com/sirrend/terrap-cli/internal/cli_utils" "github.com/sirrend/terrap-cli/internal/commons" "github.com/sirrend/terrap-cli/internal/receiver" "github.com/sirrend/terrap-cli/internal/state" "github.com/sirrend/terrap-cli/internal/utils" + "github.com/sirrend/terrap-cli/internal/utils/cli" "github.com/sirrend/terrap-cli/internal/workspace" "github.com/spf13/cobra" ) @@ -24,7 +24,7 @@ var getContextCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { var workspace workspace.Workspace var tableData [][]string - table := cli_utils.GetTable([]string{"Provider", "Version"}) // initialize new table + table := cli.GetTable([]string{"Provider", "Version"}) // initialize new table if utils.IsInitialized(".") { err := state.Load("./.terrap.json", &workspace) @@ -71,7 +71,7 @@ var getSupportedProvidersCmd = &cobra.Command{ tableData [][]string dataPrinted = false ) - table := cli_utils.GetTable([]string{"Provider", "Min Version", "Max Version"}) // initialize new table + table := cli.GetTable([]string{"Provider", "Min Version", "Max Version"}) // initialize new table providers, _ := receiver.GetSupportedProviders() // go over providers retrieved from API diff --git a/cmd/scan.go b/cmd/scan.go index c6dc67e..61eb06e 100644 --- a/cmd/scan.go +++ b/cmd/scan.go @@ -12,7 +12,6 @@ import ( "github.com/enescakir/emoji" "github.com/fatih/color" "github.com/sirrend/terrap-cli/internal/annotate" - "github.com/sirrend/terrap-cli/internal/cli_utils" "github.com/sirrend/terrap-cli/internal/commons" "github.com/sirrend/terrap-cli/internal/files_handler" "github.com/sirrend/terrap-cli/internal/parser" @@ -20,6 +19,7 @@ import ( "github.com/sirrend/terrap-cli/internal/scanning" "github.com/sirrend/terrap-cli/internal/state" "github.com/sirrend/terrap-cli/internal/utils" + "github.com/sirrend/terrap-cli/internal/utils/cli" "github.com/sirrend/terrap-cli/internal/workspace" "github.com/spf13/cobra" ) @@ -60,7 +60,7 @@ var scanCmd = &cobra.Command{ _, _ = commons.RED.Println(err) } } else { - workspace = cli_utils.GetFixedProvidersFlag(*cmd) + workspace = cli.GetFixedProvidersFlag(*cmd) } // go over every provider in user's folder / user's declaration @@ -78,14 +78,14 @@ var scanCmd = &cobra.Command{ continue } - flags := cli_utils.ChangedComponentsFlags(*cmd) + flags := cli.ChangedComponentsFlags(*cmd) if !cmd.Flag("annotate").Changed { for file, fileResources := range files { if len(fileResources) == 0 { continue } - for _, resource := range scanning.GetUniqResources(fileResources) { + for _, resource := range scanning.GetUniqueResources(fileResources) { if utils.IsItemInSlice(resource.Type, flags) { ruleset, err := resource.GetRuleset(rulebook, nil) if err != nil { diff --git a/cmd/whats_new.go b/cmd/whats_new.go index 9bca214..fbd7c27 100644 --- a/cmd/whats_new.go +++ b/cmd/whats_new.go @@ -11,12 +11,12 @@ import ( "github.com/enescakir/emoji" "github.com/fatih/color" - "github.com/sirrend/terrap-cli/internal/cli_utils" "github.com/sirrend/terrap-cli/internal/commons" "github.com/sirrend/terrap-cli/internal/files_handler" "github.com/sirrend/terrap-cli/internal/receiver" "github.com/sirrend/terrap-cli/internal/state" "github.com/sirrend/terrap-cli/internal/utils" + "github.com/sirrend/terrap-cli/internal/utils/cli" "github.com/sirrend/terrap-cli/internal/workspace" "github.com/spf13/cobra" ) @@ -37,7 +37,7 @@ var whatsNewCmd = &cobra.Command{ _, _ = commons.RED.Println(err) } } else { - workspace = cli_utils.GetFixedProvidersFlag(*cmd) + workspace = cli.GetFixedProvidersFlag(*cmd) } for provider, version := range workspace.Providers { // go over every provider in user's folder @@ -58,7 +58,7 @@ var whatsNewCmd = &cobra.Command{ os.Exit(1) } - flags := cli_utils.ChangedComponentsFlags(*cmd) // get resources filtering + flags := cli.ChangedComponentsFlags(*cmd) // get resources filtering for resourcesType, resources := range ruleSets { if utils.IsItemInSlice(resourcesType, flags) { for resourceName := range resources.(map[string]interface{}) { // go over all ruleSets diff --git a/go.mod b/go.mod index cc6404c..d5944a4 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ go 1.19 require ( github.com/Jeffail/gabs v1.4.0 - github.com/Masterminds/semver/v3 v3.2.0 github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be github.com/enescakir/emoji v1.0.0 github.com/fatih/color v1.15.0 diff --git a/go.sum b/go.sum index f17430a..3fa0629 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,6 @@ github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo= github.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= -github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= diff --git a/internal/community_modules/main.go b/internal/00_unused_packages/community_modules/main.go similarity index 100% rename from internal/community_modules/main.go rename to internal/00_unused_packages/community_modules/main.go diff --git a/internal/config/config.go b/internal/00_unused_packages/config/config.go similarity index 100% rename from internal/config/config.go rename to internal/00_unused_packages/config/config.go diff --git a/internal/config/config_test.go b/internal/00_unused_packages/config/config_test.go similarity index 100% rename from internal/config/config_test.go rename to internal/00_unused_packages/config/config_test.go diff --git a/internal/commons/commons.go b/internal/commons/commons.go index 0543a14..f55d15d 100644 --- a/internal/commons/commons.go +++ b/internal/commons/commons.go @@ -2,7 +2,6 @@ package commons import ( "github.com/fatih/color" - "os" ) var ( @@ -17,8 +16,3 @@ var ( SIRREND = color.New(color.FgHiMagenta) HighMagenta = color.New(color.FgMagenta) ) - -func getUserHomeDir() string { - u, _ := os.UserHomeDir() - return u -} diff --git a/internal/github_issue/main.go b/internal/github/main.go similarity index 98% rename from internal/github_issue/main.go rename to internal/github/main.go index 8b53a66..1dce323 100644 --- a/internal/github_issue/main.go +++ b/internal/github/main.go @@ -1,9 +1,10 @@ -package github_issue +package github import ( "context" "errors" "fmt" + "github.com/google/go-github/github" "github.com/sirrend/terrap-cli/internal/commons" "github.com/spf13/cast" diff --git a/internal/github_issue/rate_limit_error.go b/internal/github/rate_limit_error.go similarity index 90% rename from internal/github_issue/rate_limit_error.go rename to internal/github/rate_limit_error.go index 71d54c5..86058a6 100644 --- a/internal/github_issue/rate_limit_error.go +++ b/internal/github/rate_limit_error.go @@ -1,4 +1,4 @@ -package github_issue +package github import "fmt" @@ -16,7 +16,7 @@ type RateError struct { error - the new error */ func createRateError() *RateError { - message := "Rate limit exceeded, please try again in an hour or open an issue manually here: https://placeholder.com" + message := "rate limit exceeded, please try again in an hour or open an issue manually here: https://placeholder.com" return &RateError{message: message, error: fmt.Errorf(message)} } diff --git a/internal/parser/component_rulebook.go b/internal/parser/component_rulebook.go index b35c156..e2f8f17 100644 --- a/internal/parser/component_rulebook.go +++ b/internal/parser/component_rulebook.go @@ -1,5 +1,5 @@ package parser -type ComponentRulebook struct { - Versions map[string]Version `json:"versions"` -} +// type Rulebook struct { +// Versions map[string]Version `json:"versions"` +// } diff --git a/internal/receiver/main.go b/internal/receiver/main.go index 61c9226..b635368 100644 --- a/internal/receiver/main.go +++ b/internal/receiver/main.go @@ -1,6 +1,11 @@ package receiver -import "github.com/sirrend/terrap-cli/internal/files_handler" +import ( + "net/http" + + "github.com/sirrend/terrap-cli/internal/files_handler" + "github.com/sirrend/terrap-cli/internal/parser" +) type RulesAPIRequest struct { Provider string `json:"provider"` @@ -15,9 +20,16 @@ func CreateRulesRequest() *RulesAPIRequest { func (r *RulesAPIRequest) fillUsedResources(files map[string][]files_handler.Resource) { // 1. extract all used components by iterating over the files argument - // 2. insert resources to the UsedResource map + // 2. insert resources to the UsedResources map } func (r *RulesAPIRequest) fetchRules() { // 1. perform request using the internal/requests library } + +func loadRulebook(response *http.Response) *parser.Rulebook { + // 1. Convert the response object body to bytes representation. + // 2. Marshal it to a parser.Rulebook struct. + + return &parser.Rulebook{} +} diff --git a/internal/scanning/main.go b/internal/scanning/main.go index 81ab4bb..8401996 100644 --- a/internal/scanning/main.go +++ b/internal/scanning/main.go @@ -2,22 +2,9 @@ package scanning import ( "github.com/sirrend/terrap-cli/internal/files_handler" - "github.com/sirrend/terrap-cli/internal/utils" ) -func WhereDoesResourceAppear(resources []files_handler.Resource) map[string][]string { - appearances := make(map[string][]string) - - for _, resource := range resources { - if !utils.IsItemInSlice(utils.GetAbsPath(resource.Pos.Filename), appearances[resource.Name]) { - appearances[resource.Name] = append(appearances[resource.Name], utils.GetAbsPath(resource.Pos.Filename)) - } - } - - return appearances -} - -func GetUniqResources(resources []files_handler.Resource) []files_handler.Resource { +func GetUniqueResources(resources []files_handler.Resource) []files_handler.Resource { var tempResourcesSlice []files_handler.Resource tempResourcesMap := map[string]files_handler.Resource{} diff --git a/internal/ui/main.go b/internal/ui/main.go new file mode 100644 index 0000000..43466bd --- /dev/null +++ b/internal/ui/main.go @@ -0,0 +1,11 @@ +package ui + +import "github.com/sirrend/terrap-cli/internal/parser" + +func PrintChangelog(rulebook *parser.Rulebook) { + +} + +func PrintChangelogAsJson(rulebook *parser.Rulebook) { + +} diff --git a/internal/cli_utils/main.go b/internal/utils/cli/main.go similarity index 99% rename from internal/cli_utils/main.go rename to internal/utils/cli/main.go index ba7eb13..63d4bdc 100644 --- a/internal/cli_utils/main.go +++ b/internal/utils/cli/main.go @@ -1,7 +1,10 @@ -package cli_utils +package cli import ( "fmt" + "os" + "strings" + "github.com/common-nighthawk/go-figure" "github.com/enescakir/emoji" "github.com/hashicorp/go-version" @@ -10,8 +13,6 @@ import ( "github.com/sirrend/terrap-cli/internal/workspace" "github.com/spf13/cobra" validate "golang.org/x/mod/semver" - "os" - "strings" ) // SirrendLogoPrint diff --git a/internal/terraform_utils/errors.go b/internal/utils/terraform/errors.go similarity index 99% rename from internal/terraform_utils/errors.go rename to internal/utils/terraform/errors.go index c0dbb9b..68073a5 100644 --- a/internal/terraform_utils/errors.go +++ b/internal/utils/terraform/errors.go @@ -1,11 +1,12 @@ -package terraform_utils +package terraform import ( "fmt" + "strings" + "github.com/enescakir/emoji" "github.com/sirrend/terrap-cli/internal/commons" "github.com/sirrend/terrap-cli/internal/utils" - "strings" ) type TerraformError struct { diff --git a/internal/terraform_utils/terraform_utils.go b/internal/utils/terraform/terraform_utils.go similarity index 99% rename from internal/terraform_utils/terraform_utils.go rename to internal/utils/terraform/terraform_utils.go index bb9aebf..89c07d2 100644 --- a/internal/terraform_utils/terraform_utils.go +++ b/internal/utils/terraform/terraform_utils.go @@ -1,10 +1,16 @@ -package terraform_utils +package terraform import ( "context" "encoding/json" "errors" "fmt" + "log" + "os" + "os/exec" + "path/filepath" + "strings" + "github.com/enescakir/emoji" "github.com/hashicorp/go-version" "github.com/hashicorp/hc-install/product" @@ -14,11 +20,6 @@ import ( "github.com/sirrend/terrap-cli/internal/commons" "github.com/sirrend/terrap-cli/internal/utils" "github.com/sirrend/terrap-cli/internal/workspace" - "log" - "os" - "os/exec" - "path/filepath" - "strings" ) type terraformVersion struct { diff --git a/internal/version/terrap_version.go b/internal/version/terrap_version.go index 4370c10..86e3bd7 100644 --- a/internal/version/terrap_version.go +++ b/internal/version/terrap_version.go @@ -13,9 +13,9 @@ type TerrapVersion struct { var Version = "filled on build" -func (t *TerrapVersion) SetVersion() { - (*t).Product = "Terrap" - (*t).Version = Version - (*t).GoVersion = runtime.Version() - (*t).System = runtime.GOOS +func (tv *TerrapVersion) SetVersion() { + (*tv).Product = "Terrap" + (*tv).Version = Version + (*tv).GoVersion = runtime.Version() + (*tv).System = runtime.GOOS } diff --git a/internal/versions/versions.go b/internal/versions/versions.go deleted file mode 100644 index bd2eb4e..0000000 --- a/internal/versions/versions.go +++ /dev/null @@ -1,61 +0,0 @@ -package versions - -import ( - "github.com/Masterminds/semver/v3" - validate "golang.org/x/mod/semver" -) - -type SemverVersion struct { - Version *semver.Version - Major, Minor, Patch uint64 -} - -func (v *SemverVersion) Init(ver string) bool { - if validate.IsValid(ver) { - parsed := semver.MustParse(ver) - *v = SemverVersion{ - Version: parsed, - Major: parsed.Major(), - Minor: parsed.Minor(), - Patch: parsed.Patch(), - } - return true - } - return false -} - -/* -@brief: IsOlderThen checks if version is lower than given string -@ -@params: new - string - version as string -@ -@return: bool - true or false -*/ - -func (v *SemverVersion) IsOlderThen(new string) bool { - if validate.IsValid(new) { - newVer := semver.MustParse(new) - - return v.Version.LessThan(newVer) - } - - return false -} - -/* -@brief: IsNewerThen checks if version is bigger than given string -@ -@params: new - string - version as string -@ -@return: bool - true or false -*/ - -func (v *SemverVersion) IsNewerThen(new string) bool { - if validate.IsValid(new) { - newVer := semver.MustParse(new) - - return v.Version.GreaterThan(newVer) - } - - return false -}