mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Make git push options accept short name (#32245)
Just like what most CLI parsers do: `--opt` means `opt=true` Then users could use `-o force-push` as `-o force-push=true`
This commit is contained in:
		
							
								
								
									
										45
									
								
								modules/private/pushoptions.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								modules/private/pushoptions.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| // Copyright 2024 The Gitea Authors. All rights reserved. | ||||
| // SPDX-License-Identifier: MIT | ||||
|  | ||||
| package private | ||||
|  | ||||
| import ( | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
|  | ||||
| 	"code.gitea.io/gitea/modules/optional" | ||||
| ) | ||||
|  | ||||
| // GitPushOptions is a wrapper around a map[string]string | ||||
| type GitPushOptions map[string]string | ||||
|  | ||||
| // GitPushOptions keys | ||||
| const ( | ||||
| 	GitPushOptionRepoPrivate  = "repo.private" | ||||
| 	GitPushOptionRepoTemplate = "repo.template" | ||||
| 	GitPushOptionForcePush    = "force-push" | ||||
| ) | ||||
|  | ||||
| // Bool checks for a key in the map and parses as a boolean | ||||
| // An option without value is considered true, eg: "-o force-push" or "-o repo.private" | ||||
| func (g GitPushOptions) Bool(key string) optional.Option[bool] { | ||||
| 	if val, ok := g[key]; ok { | ||||
| 		if val == "" { | ||||
| 			return optional.Some(true) | ||||
| 		} | ||||
| 		if b, err := strconv.ParseBool(val); err == nil { | ||||
| 			return optional.Some(b) | ||||
| 		} | ||||
| 	} | ||||
| 	return optional.None[bool]() | ||||
| } | ||||
|  | ||||
| // AddFromKeyValue adds a key value pair to the map by "key=value" format or "key" for empty value | ||||
| func (g GitPushOptions) AddFromKeyValue(line string) { | ||||
| 	kv := strings.SplitN(line, "=", 2) | ||||
| 	if len(kv) == 2 { | ||||
| 		g[kv[0]] = kv[1] | ||||
| 	} else { | ||||
| 		g[kv[0]] = "" | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user