Skip to content

Commit 02579cd

Browse files
committed
move generic stack into a common type package
1 parent 39f9dd6 commit 02579cd

File tree

4 files changed

+42
-39
lines changed

4 files changed

+42
-39
lines changed

internal/capability/auditor.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"github.com/opdev/opcap/internal/logger"
1313
"github.com/opdev/opcap/internal/operator"
14+
"github.com/opdev/opcap/internal/types"
1415
"k8s.io/apimachinery/pkg/util/yaml"
1516
)
1617

@@ -173,14 +174,14 @@ func (ca *CapAuditor) buildWorkQueueByCatalog(ctx context.Context, c operator.Cl
173174
return nil
174175
}
175176

176-
func (ca *CapAuditor) cleanup(ctx context.Context, stack *Stack[auditCleanupFn]) {
177+
func (ca *CapAuditor) cleanup(ctx context.Context, stack *types.Stack[auditCleanupFn]) {
177178
if stack == nil {
178179
return
179180
}
180181
for !stack.Empty() {
181182
logger.Debugw("cleaning up...")
182183
cleaner, err := stack.Pop()
183-
if errors.Is(err, StackEmptyError) {
184+
if errors.Is(err, types.StackEmptyError) {
184185
break
185186
}
186187
if err := cleaner(ctx); err != nil {
@@ -192,7 +193,7 @@ func (ca *CapAuditor) cleanup(ctx context.Context, stack *Stack[auditCleanupFn])
192193

193194
// RunAudits executes all selected functions in order for a given audit at a time
194195
func (ca *CapAuditor) RunAudits(ctx context.Context) error {
195-
cleanups := Stack[auditCleanupFn]{}
196+
cleanups := types.Stack[auditCleanupFn]{}
196197
defer ca.cleanup(ctx, &cleanups)
197198

198199
err := ca.buildWorkQueueByCatalog(ctx, ca.OpCapClient)

internal/capability/types.go

-35
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package capability
22

33
import (
44
"context"
5-
"errors"
65
"time"
76

87
"github.com/opdev/opcap/internal/operator"
@@ -27,37 +26,3 @@ type (
2726
auditFn func(context.Context) error
2827
auditCleanupFn func(context.Context) error
2928
)
30-
31-
type Stack[T any] struct {
32-
stack *element[T]
33-
}
34-
35-
type element[T any] struct {
36-
previous *element[T]
37-
val T
38-
}
39-
40-
var StackEmptyError = errors.New("Stack empty")
41-
42-
func (s *Stack[T]) Push(v T) {
43-
e := &element[T]{
44-
previous: s.stack,
45-
val: v,
46-
}
47-
s.stack = e
48-
}
49-
50-
func (s *Stack[T]) Pop() (T, error) {
51-
if s.stack == nil {
52-
var r T
53-
return r, StackEmptyError
54-
}
55-
e := *s.stack
56-
s.stack = e.previous
57-
58-
return e.val, nil
59-
}
60-
61-
func (s *Stack[T]) Empty() bool {
62-
return s.stack == nil
63-
}

internal/types/stack.go

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package types
2+
3+
import "errors"
4+
5+
type Stack[T any] struct {
6+
stack *element[T]
7+
}
8+
9+
type element[T any] struct {
10+
previous *element[T]
11+
val T
12+
}
13+
14+
var StackEmptyError = errors.New("stack empty")
15+
16+
func (s *Stack[T]) Push(v T) {
17+
e := &element[T]{
18+
previous: s.stack,
19+
val: v,
20+
}
21+
s.stack = e
22+
}
23+
24+
func (s *Stack[T]) Pop() (T, error) {
25+
if s.stack == nil {
26+
var r T
27+
return r, StackEmptyError
28+
}
29+
e := *s.stack
30+
s.stack = e.previous
31+
32+
return e.val, nil
33+
}
34+
35+
func (s *Stack[T]) Empty() bool {
36+
return s.stack == nil
37+
}

internal/capability/types_test.go renamed to internal/types/stack_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package capability
1+
package types
22

33
import (
44
. "github.com/onsi/ginkgo/v2"

0 commit comments

Comments
 (0)