Skip to content

Commit 1597bf9

Browse files
authored
fix: missing default source name (#1369)
1 parent 805c717 commit 1597bf9

3 files changed

Lines changed: 34 additions & 0 deletions

File tree

pkg/server/manager/project/project_manager.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ func (m *ProjectManager) CreateProject(ctx context.Context, requestPayload reque
121121
// if a source with the default remote does not exist, create a new source
122122
logger.Info("Source not found, creating new source with default remote...", "remote", m.defaultSource.Remote)
123123
sourceEntity = &m.defaultSource
124+
if sourceEntity.Name == "" {
125+
sourceEntity.Name, err = GenerateDefaultSourceName(m.defaultSource.Remote.String())
126+
if err != nil {
127+
return nil, err
128+
}
129+
}
124130
err = m.sourceRepo.Create(ctx, sourceEntity)
125131
if err != nil {
126132
return nil, err

pkg/server/manager/project/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ var (
1212
ErrUpdatingNonExistingProject = errors.New("the project to update does not exist")
1313
ErrSourceNotFound = errors.New("the specified source does not exist")
1414
ErrOrgNotFound = errors.New("the specified org does not exist")
15+
ErrDefaultSourceRemoteInvalid = errors.New("the default source remote url is invalid")
1516
)
1617

1718
type ProjectManager struct {

pkg/server/manager/project/util.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package project
2+
3+
import (
4+
"fmt"
5+
"net/url"
6+
"strings"
7+
)
8+
9+
// GenerateDefaultSourceName generates a default source name based on the remote URL
10+
func GenerateDefaultSourceName(remoteURL string) (string, error) {
11+
parsedURL, err := url.Parse(remoteURL)
12+
if err != nil {
13+
return "", ErrDefaultSourceRemoteInvalid
14+
}
15+
16+
// Clean up the path - remove leading/trailing slashes and special characters
17+
path := strings.Trim(parsedURL.Path, "/")
18+
path = strings.ReplaceAll(path, "/", "-")
19+
20+
// Generate source name
21+
sourceName := fmt.Sprintf("default-%s", parsedURL.Host)
22+
if path != "" {
23+
sourceName = fmt.Sprintf("default-%s-%s", parsedURL.Host, path)
24+
}
25+
26+
return sourceName, nil
27+
}

0 commit comments

Comments
 (0)