Skip to content

Commit

Permalink
Merge pull request #9 from sirrend/phase7
Browse files Browse the repository at this point in the history
Phase7
  • Loading branch information
yuvalpress authored Dec 5, 2023
2 parents e1bb654 + 0979e2d commit 9806e49
Show file tree
Hide file tree
Showing 39 changed files with 355 additions and 280 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ diffSets.json
dist
vendor
NOTES.txt
terrap-cli
11 changes: 6 additions & 5 deletions cmd/destroy.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand All @@ -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)
Expand Down
15 changes: 8 additions & 7 deletions cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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...")
Expand Down
9 changes: 5 additions & 4 deletions cmd/open_issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
}
Expand Down
13 changes: 7 additions & 6 deletions cmd/providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ Copyright © 2023 Sirrend
package cmd

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/providers_api"
"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"
"strings"
)

// getContextCmd shows the providers which are currently in context
Expand All @@ -23,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)
Expand Down Expand Up @@ -70,8 +71,8 @@ var getSupportedProvidersCmd = &cobra.Command{
tableData [][]string
dataPrinted = false
)
table := cli_utils.GetTable([]string{"Provider", "Min Version", "Max Version"}) // initialize new table
providers, _ := providers_api.GetSupportedProviders()
table := cli.GetTable([]string{"Provider", "Min Version", "Max Version"}) // initialize new table
providers, _ := receiver.GetSupportedProviders()

// go over providers retrieved from API
for _, provider := range providers {
Expand Down
28 changes: 15 additions & 13 deletions cmd/scan.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,22 @@ package cmd

import (
"fmt"
"os"
"strings"

"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/rules_api"
"github.com/sirrend/terrap-cli/internal/parser"
"github.com/sirrend/terrap-cli/internal/receiver"
"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"
"os"
"strings"
)

var (
Expand All @@ -30,8 +32,8 @@ var (

// appliedRules is used to keep track of the rules applied in context
type appliedRules struct {
ruleSet rules_api.RuleSet
rules []rules_api.Rule
ruleSet parser.RuleSet
rules []parser.Rule
}

// scanCmd represents the scan command
Expand All @@ -42,7 +44,7 @@ var scanCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
var workspace workspace.Workspace
var asText []appliedRules
asJson := map[string][]rules_api.Rule{}
asJson := map[string][]parser.Rule{}

providersSet := cmd.Flag("fixed-providers").Changed
if utils.IsInitialized(".") || providersSet {
Expand All @@ -58,14 +60,14 @@ 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
if len(workspace.Providers) > 0 {

for provider, version := range workspace.Providers {
rulebook, err := rules_api.GetRules(provider, version.String())
rulebook, err := receiver.GetRules(provider, version.String())
// validate rulebook downloaded
if err != nil {
if strings.Contains(err.Error(), utils.StripProviderPrefix(provider)) {
Expand All @@ -76,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 {
Expand All @@ -105,7 +107,7 @@ var scanCmd = &cobra.Command{
// combine ruleSets with applied rules
} else {
if ruleset.Rules != nil {
var rules []rules_api.Rule
var rules []parser.Rule
for _, rule := range ruleset.Rules {
if apply, err := rule.DoesRuleApplyInContext(file, resource.Name, resource.Type); err == nil && apply {
rules = append(rules, rule)
Expand All @@ -132,7 +134,7 @@ var scanCmd = &cobra.Command{
utils.PrettyPrintStruct(map[string]interface{}{file: asJson})
}

asJson = map[string][]rules_api.Rule{} // reset for next provider
asJson = map[string][]parser.Rule{} // reset for next provider

} else {
if len(asText) > 0 {
Expand Down
19 changes: 9 additions & 10 deletions cmd/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,13 @@ package cmd
import (
"fmt"
"io"
"log"
"os"

"github.com/sirrend/terrap-cli/internal/utils"
"github.com/sirrend/terrap-cli/internal/version"
"github.com/spf13/cobra"
)

// versionCmd represents the version command
var versionCmd = &cobra.Command{
Use: "version",
Short: "Print the version description of terrap",
Expand All @@ -25,17 +23,18 @@ var versionCmd = &cobra.Command{

if cmd.Flag("json").Changed {
j, _ := utils.Marshal(t)
_, _ = io.Copy(os.Stdout, j) // Error handling can be modified as per your requirements
return
}

_, err := io.Copy(os.Stdout, j)
if err != nil {
log.Fatal(err)
}
} else if cmd.Flag("tool-only").Changed {
if cmd.Flag("tool-only").Changed {
fmt.Println(t.Version)

} else {
fmt.Println("Version:", t.Product+"-"+t.Version, t.System+"-"+t.GoVersion)
return
}

fmt.Printf("Version: %s-%s %s-%s",
t.Product, t.Version,
t.System, t.GoVersion)
},
}

Expand Down
17 changes: 9 additions & 8 deletions cmd/whats_new.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,19 @@ package cmd

import (
"fmt"
"os"
"strings"

"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/rules_api"
"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"
"os"
"strings"
)

// whatsNewCmd represents the whatsNew command
Expand All @@ -36,11 +37,11 @@ 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
rulebook, err := rules_api.GetRules(provider, version.String())
rulebook, err := receiver.GetRules(provider, version.String())
// validate rulebook downloaded
if err != nil {
if strings.Contains(err.Error(), utils.StripProviderPrefix(provider)) {
Expand All @@ -57,10 +58,10 @@ 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
for resourceName := range resources.(map[string]interface{}) { // go over all ruleSets
resource := files_handler.Resource{Name: resourceName, Type: resourcesType}
ruleset, err := resource.GetRuleset(rulebook, nil)
if err != nil {
Expand Down
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package config

import (
"github.com/fatih/color"
"github.com/sirrend/terrap-cli/internal/state"
"github.com/sirrend/terrap-cli/internal/utils"
"log"
"os"
"path"

"github.com/sirrend/terrap-cli/internal/commons"
"github.com/sirrend/terrap-cli/internal/state"
"github.com/sirrend/terrap-cli/internal/utils"
)

// struct to hold all the cli tool configuration parameters
Expand All @@ -24,8 +25,7 @@ var c config
*/

func PrintNotConfiguredMessage() {
yellow := color.New(color.FgYellow)
_, _ = yellow.Println("Hmm..seems like you didn't configure Terrap yet\nPlease execute < terrap config >.")
_, _ = commons.YELLOW.Println("Hmm..seems like you didn't configure Terrap yet.\nPlease execute < terrap config >.")
}

/*
Expand Down
File renamed without changes.
Loading

0 comments on commit 9806e49

Please sign in to comment.