Skip to content

Commit c423958

Browse files
committed
fix: Extract buildSpecs to reduce run() cyclomatic complexity, fix gofmt
1 parent 8bd72ba commit c423958

File tree

2 files changed

+49
-39
lines changed

2 files changed

+49
-39
lines changed

cissh.go

Lines changed: 47 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,50 @@ type listenerSpec struct {
2828
sequence []utils.SequenceStep // nil for platform-only listeners
2929
}
3030

31+
func resolveListeners(cli utils.CLI, tm utils.TranscriptMap, baseDir string) ([]listenerSpec, error) {
32+
if cli.Inventory == "" {
33+
fd, err := fakedevices.InitGeneric(cli.Platform, tm, baseDir)
34+
if err != nil {
35+
return nil, err
36+
}
37+
var specs []listenerSpec
38+
for port := cli.StartingPort; port < cli.StartingPort+cli.Listeners; port++ {
39+
specs = append(specs, listenerSpec{fd, port, nil})
40+
}
41+
return specs, nil
42+
}
43+
44+
inv, err := utils.LoadInventory(cli.Inventory)
45+
if err != nil {
46+
return nil, err
47+
}
48+
49+
var specs []listenerSpec
50+
port := cli.StartingPort
51+
for _, entry := range inv.Devices {
52+
if entry.Scenario != "" {
53+
fd, seq, err := fakedevices.InitScenario(entry.Scenario, tm, baseDir)
54+
if err != nil {
55+
return nil, err
56+
}
57+
for i := 0; i < entry.Count; i++ {
58+
specs = append(specs, listenerSpec{fd, port, seq})
59+
port++
60+
}
61+
} else {
62+
fd, err := fakedevices.InitGeneric(entry.Platform, tm, baseDir)
63+
if err != nil {
64+
return nil, err
65+
}
66+
for i := 0; i < entry.Count; i++ {
67+
specs = append(specs, listenerSpec{fd, port, nil})
68+
port++
69+
}
70+
}
71+
}
72+
return specs, nil
73+
}
74+
3175
func run(ctx context.Context, cli utils.CLI) error {
3276
myTranscriptMap, err := utils.LoadTranscriptMap(cli.TranscriptMap)
3377
if err != nil {
@@ -39,43 +83,9 @@ func run(ctx context.Context, cli utils.CLI) error {
3983
return err
4084
}
4185

42-
var specs []listenerSpec
43-
44-
if cli.Inventory != "" {
45-
inv, err := utils.LoadInventory(cli.Inventory)
46-
if err != nil {
47-
return err
48-
}
49-
port := cli.StartingPort
50-
for _, entry := range inv.Devices {
51-
if entry.Scenario != "" {
52-
fd, seq, err := fakedevices.InitScenario(entry.Scenario, myTranscriptMap, baseDir)
53-
if err != nil {
54-
return err
55-
}
56-
for i := 0; i < entry.Count; i++ {
57-
specs = append(specs, listenerSpec{fd, port, seq})
58-
port++
59-
}
60-
} else {
61-
fd, err := fakedevices.InitGeneric(entry.Platform, myTranscriptMap, baseDir)
62-
if err != nil {
63-
return err
64-
}
65-
for i := 0; i < entry.Count; i++ {
66-
specs = append(specs, listenerSpec{fd, port, nil})
67-
port++
68-
}
69-
}
70-
}
71-
} else {
72-
fd, err := fakedevices.InitGeneric(cli.Platform, myTranscriptMap, baseDir)
73-
if err != nil {
74-
return err
75-
}
76-
for port := cli.StartingPort; port < cli.StartingPort+cli.Listeners; port++ {
77-
specs = append(specs, listenerSpec{fd, port, nil})
78-
}
86+
specs, err := resolveListeners(cli, myTranscriptMap, baseDir)
87+
if err != nil {
88+
return err
7989
}
8090

8191
var wg sync.WaitGroup

ssh_server/handlers/ciscohandlers_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,9 +400,9 @@ func TestHandler_ScenarioSequence(t *testing.T) {
400400

401401
// All three steps in a single session — pointer advances across commands
402402
out := interact(t, addr, []string{
403-
"show running-config", // step 0 → "config before"
403+
"show running-config", // step 0 → "config before"
404404
"interface GigabitEthernet0/0/2", // step 1 → ""
405-
"show running-config", // step 2 → "config after"
405+
"show running-config", // step 2 → "config after"
406406
})
407407
if !strings.Contains(out, "config before") {
408408
t.Errorf("expected 'config before' in output, got:\n%s", out)

0 commit comments

Comments
 (0)