// 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]] = "" } }