mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 21:16:26 +01:00 
			
		
		
		
	Add absent repounits to create/edit repo API (#23500)
Adds the ability to enable/disable Actions, Packages and Releases from the API, via the Edit and Get Repository API endpoints.
This commit is contained in:
		
							parent
							
								
									8d9f8e10b1
								
							
						
					
					
						commit
						574d8fe6d6
					
				@ -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.
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user