Skip to content
This repository was archived by the owner on May 9, 2025. It is now read-only.

Commit bfb00ec

Browse files
committed
delete the repository if codeowners file failed to be added
1 parent 6fd41d8 commit bfb00ec

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

pkg/providers/gitea/gitea.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
package gitea
66

77
import (
8+
"bytes"
89
"context"
10+
"encoding/base64"
11+
"errors"
912
"fmt"
10-
"strings"
1113

1214
"code.gitea.io/sdk/gitea"
1315
v1 "k8s.io/api/core/v1"
@@ -90,21 +92,28 @@ func (c *Client) CreateRepository(ctx context.Context, obj mpasv1alpha1.Reposito
9092
}
9193

9294
if len(obj.Spec.Maintainers) != 0 {
93-
content := strings.Builder{}
95+
var content []byte
96+
buffer := bytes.NewBuffer(content)
9497

9598
for _, m := range obj.Spec.Maintainers {
96-
_, _ = content.WriteString(fmt.Sprintf("%s\n", m))
99+
buffer.WriteString(m)
97100
}
98101

102+
encoded := base64.StdEncoding.EncodeToString(buffer.Bytes())
103+
99104
_, _, err := client.CreateFile(obj.Spec.Owner, obj.Spec.RepositoryName, "CODEOWNERS", gitea.CreateFileOptions{
100105
FileOptions: gitea.FileOptions{
101106
Message: "Adding CODEOWNERS file.",
102107
BranchName: "main",
103108
},
104-
Content: content.String(),
109+
Content: encoded,
105110
})
106111

107112
if err != nil {
113+
if _, derr := client.DeleteRepo(obj.Spec.Owner, obj.Spec.RepositoryName); derr != nil {
114+
err = errors.Join(err, derr)
115+
}
116+
108117
return fmt.Errorf("failed to add CODEOWNERS file: %w", err)
109118
}
110119
}

pkg/providers/gogit/gogit.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package gogit
66

77
import (
88
"context"
9+
"errors"
910
"fmt"
1011
"strings"
1112

@@ -51,6 +52,10 @@ func CreateOrganizationRepository(ctx context.Context, gc gitprovider.Client, do
5152
}
5253

5354
if err := createCodeownersFile(ctx, repo, spec.Maintainers); err != nil {
55+
if cerr := repo.Delete(ctx); cerr != nil {
56+
err = errors.Join(err, cerr)
57+
}
58+
5459
return fmt.Errorf("failed to add CODEOWNERS file: %w", err)
5560
}
5661

@@ -65,6 +70,10 @@ func CreateOrganizationRepository(ctx context.Context, gc gitprovider.Client, do
6570
logger.Info("using existing repository", "domain", domain, "repository", spec.RepositoryName)
6671
} else {
6772
if err := createCodeownersFile(ctx, repo, spec.Maintainers); err != nil {
73+
if cerr := repo.Delete(ctx); cerr != nil {
74+
err = errors.Join(err, cerr)
75+
}
76+
6877
return fmt.Errorf("failed to add CODEOWNERS file: %w", err)
6978
}
7079

@@ -112,6 +121,10 @@ func CreateUserRepository(ctx context.Context, gc gitprovider.Client, domain str
112121
}
113122

114123
if err := createCodeownersFile(ctx, repo, spec.Maintainers); err != nil {
124+
if cerr := repo.Delete(ctx); cerr != nil {
125+
err = errors.Join(err, cerr)
126+
}
127+
115128
return fmt.Errorf("failed to add CODEOWNERS file: %w", err)
116129
}
117130

@@ -126,6 +139,10 @@ func CreateUserRepository(ctx context.Context, gc gitprovider.Client, domain str
126139
logger.Info("using existing repository", "domain", domain, "repository", spec.RepositoryName)
127140
} else {
128141
if err := createCodeownersFile(ctx, repo, spec.Maintainers); err != nil {
142+
if cerr := repo.Delete(ctx); cerr != nil {
143+
err = errors.Join(err, cerr)
144+
}
145+
129146
return fmt.Errorf("failed to add CODEOWNERS file: %w", err)
130147
}
131148

0 commit comments

Comments
 (0)