porting all github actions from bluesky-social/indigo to tangled CI
at main 1.0 kB view raw
1package flagstore 2 3import ( 4 "context" 5) 6 7type MemFlagStore struct { 8 Data map[string][]string 9} 10 11func NewMemFlagStore() MemFlagStore { 12 return MemFlagStore{ 13 Data: make(map[string][]string), 14 } 15} 16 17func (s MemFlagStore) Get(ctx context.Context, key string) ([]string, error) { 18 v, ok := s.Data[key] 19 if !ok { 20 return []string{}, nil 21 } 22 return v, nil 23} 24 25func (s MemFlagStore) Add(ctx context.Context, key string, flags []string) error { 26 v, ok := s.Data[key] 27 if !ok { 28 v = []string{} 29 } 30 v = append(v, flags...) 31 v = dedupeStrings(v) 32 s.Data[key] = v 33 return nil 34} 35 36// does not error if flags not in set 37func (s MemFlagStore) Remove(ctx context.Context, key string, flags []string) error { 38 if len(flags) == 0 { 39 return nil 40 } 41 v, ok := s.Data[key] 42 if !ok { 43 v = []string{} 44 } 45 m := make(map[string]bool, len(v)) 46 for _, f := range v { 47 m[f] = true 48 } 49 for _, f := range flags { 50 delete(m, f) 51 } 52 out := []string{} 53 for f, _ := range m { 54 out = append(out, f) 55 } 56 s.Data[key] = out 57 return nil 58}