mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 09:15:26 +01:00 
			
		
		
		
	tea branches list/protect/unprotect (#645)
Hello, This is a proposal to support consulting / protecting / unprotecting branches for a specific repository. I copied the existing code for "issues" report and adapted to branches. There is no change of legacy code so I do not expect any impact. Supported commands are "list", "protect", "unprotect": - "List" print the list of branches with some available fields from gitea.Branch type. - "protect" creates a gitea.BranchProtection with some default parameters for some specific branches - "unprotect" destroys gitea.BranchProtection for some specific branches What is printed now could be enriched with additional information gitea datatypes already offer. Could you please evaluate this proposal? I would be happy to receive any comment or remark to take into account. **tea branches unprotect** --login opsi --repo opensky main **tea branches list** --login opsi --repo opensky --fields name,protected,user-can-merge,user-can-push,protection [name protected user-can-merge user-can-push protection] +--------+-----------+----------------+---------------+------------+ | NAME | PROTECTED | USER-CAN-MERGE | USER-CAN-PUSH | PROTECTION | +--------+-----------+----------------+---------------+------------+ | b_test | false | true | true | <None> | | main | false | true | true | <None> | +--------+-----------+----------------+---------------+------------+ **tea branches protect** --login opsi --repo opensky main **tea branches list** --login opsi --repo opensky --fields name,protected,user-can-merge,user-can-push,protection [name protected user-can-merge user-can-push protection] +--------+-----------+----------------+---------------+----------------------+ | NAME | PROTECTED | USER-CAN-MERGE | USER-CAN-PUSH | PROTECTION | +--------+-----------+----------------+---------------+----------------------+ | b_test | false | true | true | <None> | | main | true | true | false | - enable-push: false | | | | | | - approving: - | | | | | | merging: - pushing: | | | | | | | +--------+-----------+----------------+---------------+----------------------+ Following commands run OK: > make test > make fmt > make lint Co-authored-by: Leonard Vimond <leonard.vimond.e@thalesdigital.io> Co-authored-by: techknowlogick <techknowlogick@noreply.gitea.com> Reviewed-on: https://gitea.com/gitea/tea/pulls/645 Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com> Co-authored-by: leonard.vimond <leonard.vimond@noreply.gitea.com> Co-committed-by: leonard.vimond <leonard.vimond@noreply.gitea.com>
This commit is contained in:
		 leonard.vimond
					leonard.vimond
				
			
				
					committed by
					
						 techknowlogick
						techknowlogick
					
				
			
			
				
	
			
			
			 techknowlogick
						techknowlogick
					
				
			
						parent
						
							22370698bf
						
					
				
				
					commit
					20479663f0
				
			
							
								
								
									
										73
									
								
								cmd/branches/list.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								cmd/branches/list.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| // Copyright 2024 The Gitea Authors. All rights reserved. | ||||
| // SPDX-License-Identifier: MIT | ||||
|  | ||||
| package branches | ||||
|  | ||||
| import ( | ||||
| 	"code.gitea.io/tea/cmd/flags" | ||||
| 	"code.gitea.io/tea/modules/context" | ||||
| 	"code.gitea.io/tea/modules/print" | ||||
|  | ||||
| 	"code.gitea.io/sdk/gitea" | ||||
| 	"github.com/urfave/cli/v2" | ||||
| ) | ||||
|  | ||||
| var branchFieldsFlag = flags.FieldsFlag(print.BranchFields, []string{ | ||||
| 	"name", "protected", "user-can-merge", "user-can-push", | ||||
| }) | ||||
|  | ||||
| // CmdBranchesListFlags Flags for command list | ||||
| var CmdBranchesListFlags = append([]cli.Flag{ | ||||
| 	branchFieldsFlag, | ||||
| 	&flags.PaginationPageFlag, | ||||
| 	&flags.PaginationLimitFlag, | ||||
| }, flags.AllDefaultFlags...) | ||||
|  | ||||
| // CmdBranchesList represents a sub command of branches to list branches | ||||
| var CmdBranchesList = cli.Command{ | ||||
| 	Name:        "list", | ||||
| 	Aliases:     []string{"ls"}, | ||||
| 	Usage:       "List branches of the repository", | ||||
| 	Description: `List branches of the repository`, | ||||
| 	ArgsUsage:   " ", // command does not accept arguments | ||||
| 	Action:      RunBranchesList, | ||||
| 	Flags:       CmdBranchesListFlags, | ||||
| } | ||||
|  | ||||
| // RunBranchesList list branches | ||||
| func RunBranchesList(cmd *cli.Context) error { | ||||
| 	ctx := context.InitCommand(cmd) | ||||
| 	ctx.Ensure(context.CtxRequirement{RemoteRepo: true}) | ||||
|  | ||||
| 	owner := ctx.Owner | ||||
| 	if ctx.IsSet("owner") { | ||||
| 		owner = ctx.String("owner") | ||||
| 	} | ||||
|  | ||||
| 	var branches []*gitea.Branch | ||||
| 	var protections []*gitea.BranchProtection | ||||
| 	var err error | ||||
| 	branches, _, err = ctx.Login.Client().ListRepoBranches(owner, ctx.Repo, gitea.ListRepoBranchesOptions{ | ||||
| 		ListOptions: ctx.GetListOptions(), | ||||
| 	}) | ||||
|  | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	protections, _, err = ctx.Login.Client().ListBranchProtections(owner, ctx.Repo, gitea.ListBranchProtectionsOptions{ | ||||
| 		ListOptions: ctx.GetListOptions(), | ||||
| 	}) | ||||
|  | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	fields, err := branchFieldsFlag.GetValues(cmd) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	print.BranchesList(branches, protections, ctx.Output, fields) | ||||
| 	return nil | ||||
| } | ||||
		Reference in New Issue
	
	Block a user