From ac4a171997bc4d89b539bb09bde1c9f3b953c316 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Fri, 29 May 2020 02:18:08 +0200 Subject: [PATCH 1/4] wip --- modules/structs/repo.go | 14 +++++++++++ routers/api/v1/repo/repo.go | 48 ++++++++++++++++++++++++++++--------- 2 files changed, 51 insertions(+), 11 deletions(-) diff --git a/modules/structs/repo.go b/modules/structs/repo.go index 70de9b74694f7..cfe4e9049bda6 100644 --- a/modules/structs/repo.go +++ b/modules/structs/repo.go @@ -90,6 +90,18 @@ type Repository struct { AvatarURL string `json:"avatar_url"` } +// CreateRepoOption options when creating repository +// swagger:model +type CreateRepoTemplateOption struct { + RepoTemplate int64 + GitContent bool + Topics bool + GitHooks bool + Webhooks bool + Avatar bool + Labels bool +} + // CreateRepoOption options when creating repository // swagger:model type CreateRepoOption struct { @@ -114,6 +126,8 @@ type CreateRepoOption struct { Readme string `json:"readme"` // DefaultBranch of the repository (used when initializes and in template) DefaultBranch string `json:"default_branch" binding:"GitRefName;MaxSize(100)"` + // AAAA + Template *CreateRepoTemplateOption } // EditRepoOption options when editing a repository's properties diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index e5055daa2b10b..2584e5b974bcd 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -233,17 +233,43 @@ func CreateUserRepo(ctx *context.APIContext, owner *models.User, opt api.CreateR if opt.AutoInit && opt.Readme == "" { opt.Readme = "Default" } - repo, err := repo_service.CreateRepository(ctx.User, owner, models.CreateRepoOptions{ - Name: opt.Name, - Description: opt.Description, - IssueLabels: opt.IssueLabels, - Gitignores: opt.Gitignores, - License: opt.License, - Readme: opt.Readme, - IsPrivate: opt.Private, - AutoInit: opt.AutoInit, - DefaultBranch: opt.DefaultBranch, - }) + + var err error + var repo *models.Repository + + if opt.Template != nil { + templateRepo, err2 := models.GetRepositoryByID(opt.Template.RepoTemplate) + if err2 != nil { + if models.IsErrRepoNotExist(err) { + ctx.Error(http.StatusNotFound, "GetTemplateRepo", fmt.Errorf("Template Repo [%d] not found", opt.Template.RepoTemplate)) + } + ctx.InternalServerError(err) + return + } + repo, err = repo_service.GenerateRepository(ctx.User, owner, templateRepo, models.GenerateRepoOptions{ + Name: opt.Name, + Description: opt.Description, + Private: opt.Private, + GitContent: opt.Template.GitContent, + Topics: opt.Template.Topics, + GitHooks: opt.Template.GitHooks, + Webhooks: opt.Template.Webhooks, + Avatar: opt.Template.Avatar, + IssueLabels: opt.Template.Labels, + }) + } else { + repo, err = repo_service.CreateRepository(ctx.User, owner, models.CreateRepoOptions{ + Name: opt.Name, + Description: opt.Description, + IssueLabels: opt.IssueLabels, + Gitignores: opt.Gitignores, + License: opt.License, + Readme: opt.Readme, + IsPrivate: opt.Private, + AutoInit: opt.AutoInit, + DefaultBranch: opt.DefaultBranch, + }) + } if err != nil { if models.IsErrRepoAlreadyExist(err) { ctx.Error(http.StatusConflict, "", "The repository with the same name already exists.") From 96f2d089b3e6956b125c08916ab64bd547f4fc67 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 20 Aug 2020 18:34:29 +0200 Subject: [PATCH 2/4] omitempty Co-authored-by: zeripath --- modules/structs/repo.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/structs/repo.go b/modules/structs/repo.go index a082a77b28e3e..b333de1df7d91 100644 --- a/modules/structs/repo.go +++ b/modules/structs/repo.go @@ -129,7 +129,7 @@ type CreateRepoOption struct { // DefaultBranch of the repository (used when initializes and in template) DefaultBranch string `json:"default_branch" binding:"GitRefName;MaxSize(100)"` // AAAA - Template *CreateRepoTemplateOption + Template *CreateRepoTemplateOption `json:"template,omitempty" } // EditRepoOption options when editing a repository's properties From f1339b37844d41467bbd85525c355e19ea455c32 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 20 Oct 2020 13:32:32 +0200 Subject: [PATCH 3/4] CI.restart() From 5f57cd5519eda11405f9cbc73021e918fced0dd0 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Wed, 21 Oct 2020 23:40:32 +0200 Subject: [PATCH 4/4] Update modules/structs/repo.go Co-authored-by: zeripath --- modules/structs/repo.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/structs/repo.go b/modules/structs/repo.go index c6c8ef8e154dd..904a8fa89da8a 100644 --- a/modules/structs/repo.go +++ b/modules/structs/repo.go @@ -134,7 +134,7 @@ type CreateRepoOption struct { // TrustModel of the repository // enum: default,collaborator,committer,collaboratorcommitter TrustModel string `json:"trust_model"` - // Template contain al options to create a repo based on a template + // Template contains all options to generate a repo based on a template Template *CreateRepoTemplateOption `json:"template,omitempty"` }