this repo has no description
1package main
2
3import (
4 "context"
5 "flag"
6 "log"
7
8 "github.com/cloudflare/cloudflare-go"
9)
10
11func main() {
12 var apiToken, accountID, bucket string
13 flag.StringVar(&apiToken, "api-token", "", "Cloudflare account ID")
14 flag.StringVar(&accountID, "account-id", "", "Cloudflare account ID")
15 flag.StringVar(&bucket, "bucket", "", "Cloudflare R2 bucket name")
16 flag.Parse()
17
18 if apiToken == "" || accountID == "" || bucket == "" {
19 log.Fatal("--api-token, --account-id and --bucket must be provided")
20 }
21
22 resourceContainer := cloudflare.AccountIdentifier(accountID)
23 ctx := context.Background()
24
25 api, err := cloudflare.NewWithAPIToken(apiToken)
26 if err != nil {
27 log.Fatalf("failed to create Cloudflare API client: %v", err)
28 }
29
30 existingBucket, err := api.GetR2Bucket(ctx, resourceContainer, bucket)
31 if err == nil {
32 log.Printf("bucket %q already exists: %+v\n", bucket, existingBucket)
33 return
34 }
35
36 createdBucket, err := api.CreateR2Bucket(
37 ctx,
38 resourceContainer,
39 cloudflare.CreateR2BucketParameters{
40 Name: bucket,
41 },
42 )
43 if err != nil {
44 log.Fatalf("failed to create bucket: %v", err)
45 }
46
47 log.Printf("created bucket: %+v\n", createdBucket)
48}