Skip to content

Commit

Permalink
Add absent repounits to create/edit repo API (#23500)
Browse files Browse the repository at this point in the history
Adds the ability to enable/disable Actions, Packages and Releases from
the API, via the Edit and Get Repository API endpoints.
  • Loading branch information
jpts authored Mar 16, 2023
1 parent 8d9f8e1 commit 574d8fe
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 0 deletions.
9 changes: 9 additions & 0 deletions modules/structs/repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"`
Expand Down Expand Up @@ -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.
Expand Down
33 changes: 33 additions & 0 deletions routers/api/v1/repo/repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
18 changes: 18 additions & 0 deletions services/convert/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down Expand Up @@ -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,
Expand Down
27 changes: 27 additions & 0 deletions templates/swagger/v1_json.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down Expand Up @@ -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"
Expand All @@ -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"
Expand Down

0 comments on commit 574d8fe

Please sign in to comment.