Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
IvanMaidurov authored and bastianccm committed Jul 14, 2022
1 parent 599954f commit 585f495
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 25 deletions.
50 changes: 31 additions & 19 deletions framework/web/modulescmd.go → framework/config/modulescmd.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
package web
package config

import (
"fmt"
"reflect"

"flamingo.me/dingo"
"github.com/spf13/cobra"

"flamingo.me/flamingo/v3/framework/config"
)

const showAllDuplicatesArg = "-a"
const showAllDuplicatesArg = "all"

// ModulesCmd for debugging the router configuration
func ModulesCmd(area *config.Area) *cobra.Command {
func ModulesCmd(area *Area) *cobra.Command {

cmd := &cobra.Command{
Use: "modules",
Expand All @@ -33,7 +31,8 @@ func ModulesCmd(area *config.Area) *cobra.Command {
return cmd
}

func dumpModules(area *config.Area, argsMap map[string]struct{}) {
// dumpModules from root area with arguments
func dumpModules(area *Area, argsMap map[string]struct{}) {
if area == nil {
return
}
Expand All @@ -54,23 +53,36 @@ func dumpModules(area *config.Area, argsMap map[string]struct{}) {
}

for _, childArea := range area.Childs {
fmt.Println()
fmt.Println("****************************************************************************")
fmt.Printf("Child Area: %s\n", childArea.Name)
fmt.Println("****************************************************************************")

for _, module := range childArea.Modules {
moduleName := getModuleName(module)
_, foundDuplicate := registry[moduleName]
printModuleName := !foundDuplicate || printDuplicatedModules
if printModuleName {
fmt.Print(moduleName)
}
}
printChildAreaModules(childArea, registry, printDuplicatedModules)
}
fmt.Println()
}

// printChildAreaModules recursively prints area's modules and modules from every child area
func printChildAreaModules(area *Area, registry map[string]struct{}, printDuplicatedModules bool) {
if area == nil {
return
}
fmt.Println()
fmt.Println("****************************************************************************")
fmt.Printf("Child Area: %s\n", area.Name)
fmt.Println("****************************************************************************")

for _, module := range area.Modules {
moduleName := getModuleName(module)
_, foundDuplicate := registry[moduleName]
printModuleName := !foundDuplicate || printDuplicatedModules
if printModuleName {
fmt.Print(moduleName)
}
}

for _, childArea := range area.Childs {
printChildAreaModules(childArea, registry, printDuplicatedModules)
}
}

// getModuleName from module using package path and interface name
func getModuleName(module dingo.Module) string {
moduleType := reflect.TypeOf(module)
toRemember := ""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package web_test
package config_test

import (
"testing"
Expand All @@ -7,20 +7,21 @@ import (
"github.com/stretchr/testify/assert"

"flamingo.me/flamingo/v3/framework/config"
"flamingo.me/flamingo/v3/framework/web"
)

type (
testModule1 struct{}
testModule2 struct{}
testModule3 struct{}
testModule4 struct{}
testModule5 struct{}
)

func (m1 *testModule1) Configure(_ *dingo.Injector) {}
func (m2 *testModule2) Configure(_ *dingo.Injector) {}
func (m3 *testModule3) Configure(_ *dingo.Injector) {}
func (m3 *testModule4) Configure(_ *dingo.Injector) {}
func (m3 *testModule5) Configure(_ *dingo.Injector) {}

func TestModulesCmd_Print(t *testing.T) {
t.Run("Visual test: print modules without duplicates", func(t *testing.T) {
Expand All @@ -37,13 +38,25 @@ func TestModulesCmd_Print(t *testing.T) {
new(testModule4),
}

subChildModules := []dingo.Module{
new(testModule1),
new(testModule2),
new(testModule3),
new(testModule4),
new(testModule5),
}

testArea := config.NewArea("testArea", modules)
childArea := config.NewArea("childTestArea", childModules)
subChildArea := config.NewArea("subChildTestArea", subChildModules)
childArea.Childs = []*config.Area{
subChildArea,
}
testArea.Childs = []*config.Area{
childArea,
}

function := web.ModulesCmd(testArea).Run
function := config.ModulesCmd(testArea).Run
assert.NotNil(t, function)
function(nil, nil)
})
Expand All @@ -62,14 +75,26 @@ func TestModulesCmd_Print(t *testing.T) {
new(testModule4),
}

subChildModules := []dingo.Module{
new(testModule1),
new(testModule2),
new(testModule3),
new(testModule4),
new(testModule5),
}

testArea := config.NewArea("testArea", modules)
childArea := config.NewArea("childTestArea", childModules)
subChildArea := config.NewArea("subChildTestArea", subChildModules)
childArea.Childs = []*config.Area{
subChildArea,
}
testArea.Childs = []*config.Area{
childArea,
}

function := web.ModulesCmd(testArea).Run
function := config.ModulesCmd(testArea).Run
assert.NotNil(t, function)
function(nil, []string{"-a"})
function(nil, []string{"all"})
})
}
2 changes: 1 addition & 1 deletion framework/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type (
func (*InitModule) Configure(injector *dingo.Injector) {
injector.BindMulti(new(cobra.Command)).ToProvider(web.RoutesCmd)
injector.BindMulti(new(cobra.Command)).ToProvider(web.HandlerCmd)
injector.BindMulti(new(cobra.Command)).ToProvider(web.ModulesCmd)
injector.BindMulti(new(cobra.Command)).ToProvider(config.ModulesCmd)
injector.BindMulti(new(cobra.Command)).ToProvider(config.Cmd)

web.BindRoutes(injector, new(routes))
Expand Down

0 comments on commit 585f495

Please sign in to comment.