summaryrefslogtreecommitdiffstats
path: root/models/repo_generate.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2022-06-06 16:01:49 +0800
committerGitHub <noreply@github.com>2022-06-06 16:01:49 +0800
commit26095115f4ae90e3fdc6ab695978efd16e317f75 (patch)
tree92ec1c7ff54e0a65f4f0662baa8c0244dd9f324b /models/repo_generate.go
parentebeb6e7c71a0c763b52153f4eb427e7c5b89a95e (diff)
downloadgitea-26095115f4ae90e3fdc6ab695978efd16e317f75.tar.gz
gitea-26095115f4ae90e3fdc6ab695978efd16e317f75.zip
Move some repository related code into sub package (#19711)
* Move some repository related code into sub package * Move more repository functions out of models * Fix lint * Some performance optimization for webhooks and others * some refactors * Fix lint * Fix * Update modules/repository/delete.go Co-authored-by: delvh <dev.lh@web.de> * Fix test * Merge * Fix test * Fix test * Fix test * Fix test Co-authored-by: delvh <dev.lh@web.de>
Diffstat (limited to 'models/repo_generate.go')
-rw-r--r--models/repo_generate.go118
1 files changed, 0 insertions, 118 deletions
diff --git a/models/repo_generate.go b/models/repo_generate.go
deleted file mode 100644
index 6b720b4969..0000000000
--- a/models/repo_generate.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2019 The Gitea Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package models
-
-import (
- "bufio"
- "bytes"
- "context"
- "strings"
-
- "code.gitea.io/gitea/models/db"
- repo_model "code.gitea.io/gitea/models/repo"
- "code.gitea.io/gitea/models/webhook"
- "code.gitea.io/gitea/modules/log"
-
- "github.com/gobwas/glob"
-)
-
-// GenerateRepoOptions contains the template units to generate
-type GenerateRepoOptions struct {
- Name string
- DefaultBranch string
- Description string
- Private bool
- GitContent bool
- Topics bool
- GitHooks bool
- Webhooks bool
- Avatar bool
- IssueLabels bool
-}
-
-// IsValid checks whether at least one option is chosen for generation
-func (gro GenerateRepoOptions) IsValid() bool {
- return gro.GitContent || gro.Topics || gro.GitHooks || gro.Webhooks || gro.Avatar || gro.IssueLabels // or other items as they are added
-}
-
-// GiteaTemplate holds information about a .gitea/template file
-type GiteaTemplate struct {
- Path string
- Content []byte
-
- globs []glob.Glob
-}
-
-// Globs parses the .gitea/template globs or returns them if they were already parsed
-func (gt GiteaTemplate) Globs() []glob.Glob {
- if gt.globs != nil {
- return gt.globs
- }
-
- gt.globs = make([]glob.Glob, 0)
- scanner := bufio.NewScanner(bytes.NewReader(gt.Content))
- for scanner.Scan() {
- line := strings.TrimSpace(scanner.Text())
- if line == "" || strings.HasPrefix(line, "#") {
- continue
- }
- g, err := glob.Compile(line, '/')
- if err != nil {
- log.Info("Invalid glob expression '%s' (skipped): %v", line, err)
- continue
- }
- gt.globs = append(gt.globs, g)
- }
- return gt.globs
-}
-
-// GenerateWebhooks generates webhooks from a template repository
-func GenerateWebhooks(ctx context.Context, templateRepo, generateRepo *repo_model.Repository) error {
- templateWebhooks, err := webhook.ListWebhooksByOpts(ctx, &webhook.ListWebhookOptions{RepoID: templateRepo.ID})
- if err != nil {
- return err
- }
-
- for _, templateWebhook := range templateWebhooks {
- generateWebhook := &webhook.Webhook{
- RepoID: generateRepo.ID,
- URL: templateWebhook.URL,
- HTTPMethod: templateWebhook.HTTPMethod,
- ContentType: templateWebhook.ContentType,
- Secret: templateWebhook.Secret,
- HookEvent: templateWebhook.HookEvent,
- IsActive: templateWebhook.IsActive,
- Type: templateWebhook.Type,
- OrgID: templateWebhook.OrgID,
- Events: templateWebhook.Events,
- Meta: templateWebhook.Meta,
- }
- if err := webhook.CreateWebhook(ctx, generateWebhook); err != nil {
- return err
- }
- }
- return nil
-}
-
-// GenerateIssueLabels generates issue labels from a template repository
-func GenerateIssueLabels(ctx context.Context, templateRepo, generateRepo *repo_model.Repository) error {
- templateLabels, err := GetLabelsByRepoID(ctx, templateRepo.ID, "", db.ListOptions{})
- if err != nil {
- return err
- }
-
- for _, templateLabel := range templateLabels {
- generateLabel := &Label{
- RepoID: generateRepo.ID,
- Name: templateLabel.Name,
- Description: templateLabel.Description,
- Color: templateLabel.Color,
- }
- if err := db.Insert(ctx, generateLabel); err != nil {
- return err
- }
- }
- return nil
-}