File: cleanup.go

package info (click to toggle)
golang-github-kurin-blazer 0.4.4-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 372 kB
  • sloc: makefile: 4
file content (71 lines) | stat: -rw-r--r-- 1,402 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package main

import (
	"context"
	"fmt"
	"os"
	"strings"
	"sync"

	"github.com/kurin/blazer/b2"
)

const (
	apiID  = "B2_ACCOUNT_ID"
	apiKey = "B2_SECRET_KEY"
)

func main() {
	id := os.Getenv(apiID)
	key := os.Getenv(apiKey)
	ctx := context.Background()
	client, err := b2.NewClient(ctx, id, key)
	if err != nil {
		fmt.Println(err)
		return
	}
	buckets, err := client.ListBuckets(ctx)
	if err != nil {
		fmt.Println(err)
		return
	}
	var kill []string
	for _, bucket := range buckets {
		if strings.HasPrefix(bucket.Name(), fmt.Sprintf("%s-b2-tests-", id)) {
			kill = append(kill, bucket.Name())
		}
		if bucket.Name() == fmt.Sprintf("%s-consistobucket", id) || bucket.Name() == fmt.Sprintf("%s-base-tests", id) {
			kill = append(kill, bucket.Name())
		}
	}
	var wg sync.WaitGroup
	for _, name := range kill {
		wg.Add(1)
		go func(name string) {
			defer wg.Done()
			fmt.Println("removing", name)
			if err := killBucket(ctx, client, name); err != nil {
				fmt.Println(err)
			}
		}(name)
	}
	wg.Wait()
}

func killBucket(ctx context.Context, client *b2.Client, name string) error {
	bucket, err := client.NewBucket(ctx, name, nil)
	if b2.IsNotExist(err) {
		return nil
	}
	if err != nil {
		return err
	}
	defer bucket.Delete(ctx)
	iter := bucket.List(ctx, b2.ListHidden())
	for iter.Next() {
		if err := iter.Object().Delete(ctx); err != nil {
			fmt.Println(err)
		}
	}
	return iter.Err()
}