aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/structs/repo.go9
-rw-r--r--routers/api/v1/repo/repo.go33
-rw-r--r--services/convert/repository.go18
-rw-r--r--templates/swagger/v1_json.tmpl27
4 files changed, 87 insertions, 0 deletions
diff --git a/modules/structs/repo.go b/modules/structs/repo.go
index b5a26a8155..6d3e2c2909 100644
--- a/modules/structs/repo.go
+++ b/modules/structs/repo.go
@@ -88,6 +88,9 @@ type Repository struct {
ExternalWiki *ExternalWiki `json:"external_wiki,omitempty"`
HasPullRequests bool `json:"has_pull_requests"`
HasProjects bool `json:"has_projects"`
+ HasReleases bool `json:"has_releases"`
+ HasPackages bool `json:"has_packages"`
+ HasActions bool `json:"has_actions"`
IgnoreWhitespaceConflicts bool `json:"ignore_whitespace_conflicts"`
AllowMerge bool `json:"allow_merge_commits"`
AllowRebase bool `json:"allow_rebase"`
@@ -168,6 +171,12 @@ type EditRepoOption struct {
HasPullRequests *bool `json:"has_pull_requests,omitempty"`
// either `true` to enable project unit, or `false` to disable them.
HasProjects *bool `json:"has_projects,omitempty"`
+ // either `true` to enable releases unit, or `false` to disable them.
+ HasReleases *bool `json:"has_releases,omitempty"`
+ // either `true` to enable packages unit, or `false` to disable them.
+ HasPackages *bool `json:"has_packages,omitempty"`
+ // either `true` to enable actions unit, or `false` to disable them.
+ HasActions *bool `json:"has_actions,omitempty"`
// either `true` to ignore whitespace for conflicts, or `false` to not ignore whitespace.
IgnoreWhitespaceConflicts *bool `json:"ignore_whitespace_conflicts,omitempty"`
// either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go
index 16608e5bbb..4f43b10259 100644
--- a/routers/api/v1/repo/repo.go
+++ b/routers/api/v1/repo/repo.go
@@ -936,6 +936,39 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
}
}
+ if opts.HasReleases != nil && !unit_model.TypeReleases.UnitGlobalDisabled() {
+ if *opts.HasReleases {
+ units = append(units, repo_model.RepoUnit{
+ RepoID: repo.ID,
+ Type: unit_model.TypeReleases,
+ })
+ } else {
+ deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeReleases)
+ }
+ }
+
+ if opts.HasPackages != nil && !unit_model.TypePackages.UnitGlobalDisabled() {
+ if *opts.HasPackages {
+ units = append(units, repo_model.RepoUnit{
+ RepoID: repo.ID,
+ Type: unit_model.TypePackages,
+ })
+ } else {
+ deleteUnitTypes = append(deleteUnitTypes, unit_model.TypePackages)
+ }
+ }
+
+ if opts.HasActions != nil && !unit_model.TypeActions.UnitGlobalDisabled() {
+ if *opts.HasActions {
+ units = append(units, repo_model.RepoUnit{
+ RepoID: repo.ID,
+ Type: unit_model.TypeActions,
+ })
+ } else {
+ deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeActions)
+ }
+ }
+
if err := repo_model.UpdateRepositoryUnits(repo, units, deleteUnitTypes); err != nil {
ctx.Error(http.StatusInternalServerError, "UpdateRepositoryUnits", err)
return err
diff --git a/services/convert/repository.go b/services/convert/repository.go
index fc965a9457..a2a8570cc9 100644
--- a/services/convert/repository.go
+++ b/services/convert/repository.go
@@ -100,6 +100,21 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, mode perm.Acc
hasProjects = true
}
+ hasReleases := false
+ if _, err := repo.GetUnit(ctx, unit_model.TypeReleases); err == nil {
+ hasReleases = true
+ }
+
+ hasPackages := false
+ if _, err := repo.GetUnit(ctx, unit_model.TypePackages); err == nil {
+ hasPackages = true
+ }
+
+ hasActions := false
+ if _, err := repo.GetUnit(ctx, unit_model.TypeActions); err == nil {
+ hasActions = true
+ }
+
if err := repo.LoadOwner(ctx); err != nil {
return nil
}
@@ -174,6 +189,9 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, mode perm.Acc
InternalTracker: internalTracker,
HasWiki: hasWiki,
HasProjects: hasProjects,
+ HasReleases: hasReleases,
+ HasPackages: hasPackages,
+ HasActions: hasActions,
ExternalWiki: externalWiki,
HasPullRequests: hasPullRequests,
IgnoreWhitespaceConflicts: ignoreWhitespaceConflicts,
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index 9e35724315..ddcdc94b81 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -16861,11 +16861,21 @@
"external_wiki": {
"$ref": "#/definitions/ExternalWiki"
},
+ "has_actions": {
+ "description": "either `true` to enable actions unit, or `false` to disable them.",
+ "type": "boolean",
+ "x-go-name": "HasActions"
+ },
"has_issues": {
"description": "either `true` to enable issues for this repository or `false` to disable them.",
"type": "boolean",
"x-go-name": "HasIssues"
},
+ "has_packages": {
+ "description": "either `true` to enable packages unit, or `false` to disable them.",
+ "type": "boolean",
+ "x-go-name": "HasPackages"
+ },
"has_projects": {
"description": "either `true` to enable project unit, or `false` to disable them.",
"type": "boolean",
@@ -16876,6 +16886,11 @@
"type": "boolean",
"x-go-name": "HasPullRequests"
},
+ "has_releases": {
+ "description": "either `true` to enable releases unit, or `false` to disable them.",
+ "type": "boolean",
+ "x-go-name": "HasReleases"
+ },
"has_wiki": {
"description": "either `true` to enable the wiki for this repository or `false` to disable it.",
"type": "boolean",
@@ -19421,10 +19436,18 @@
"type": "string",
"x-go-name": "FullName"
},
+ "has_actions": {
+ "type": "boolean",
+ "x-go-name": "HasActions"
+ },
"has_issues": {
"type": "boolean",
"x-go-name": "HasIssues"
},
+ "has_packages": {
+ "type": "boolean",
+ "x-go-name": "HasPackages"
+ },
"has_projects": {
"type": "boolean",
"x-go-name": "HasProjects"
@@ -19433,6 +19456,10 @@
"type": "boolean",
"x-go-name": "HasPullRequests"
},
+ "has_releases": {
+ "type": "boolean",
+ "x-go-name": "HasReleases"
+ },
"has_wiki": {
"type": "boolean",
"x-go-name": "HasWiki"