drone/types/enum/git.go

117 lines
3.2 KiB
Go

// Copyright 2023 Harness, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package enum
import (
"fmt"
"strings"
)
// BranchSortOption specifies the available sort options for branches.
type BranchSortOption int
const (
BranchSortOptionDefault BranchSortOption = iota
BranchSortOptionName
BranchSortOptionDate
)
// ParseBranchSortOption parses the branch sort option string
// and returns the equivalent enumeration.
func ParseBranchSortOption(s string) BranchSortOption {
switch strings.ToLower(s) {
case name:
return BranchSortOptionName
case date:
return BranchSortOptionDate
default:
return BranchSortOptionDefault
}
}
// String returns a string representation of the branch sort option.
func (o BranchSortOption) String() string {
switch o {
case BranchSortOptionName:
return name
case BranchSortOptionDate:
return date
case BranchSortOptionDefault:
return defaultString
default:
return undefined
}
}
// TagSortOption specifies the available sort options for tags.
type TagSortOption int
const (
TagSortOptionDefault TagSortOption = iota
TagSortOptionName
TagSortOptionDate
)
// ParseTagSortOption parses the tag sort option string
// and returns the equivalent enumeration.
func ParseTagSortOption(s string) TagSortOption {
switch strings.ToLower(s) {
case name:
return TagSortOptionName
case date:
return TagSortOptionDate
default:
return TagSortOptionDefault
}
}
// String returns a string representation of the tag sort option.
func (o TagSortOption) String() string {
switch o {
case TagSortOptionName:
return name
case TagSortOptionDate:
return date
case TagSortOptionDefault:
return defaultString
default:
return undefined
}
}
// GitServiceType represents the different types of service values send by git's smart http protocol.
// See https://git-scm.com/docs/http-protocol#_smart_clients for more details.
type GitServiceType string
const (
// GitServiceTypeReceivePack is sent by git push operations (server "receives" data from client).
GitServiceTypeReceivePack GitServiceType = "receive-pack"
// GitServiceTypeUploadPack is sent by git pull operations (server "uploads" data to client).
GitServiceTypeUploadPack GitServiceType = "upload-pack"
)
// ParseGitServiceType parses the git service type string and returns the equivalent enumeration.
// If the value is unknown and doesn't represent a git service type, an error is returned.
func ParseGitServiceType(s string) (GitServiceType, error) {
switch strings.ToLower(s) {
case string(GitServiceTypeReceivePack):
return GitServiceTypeReceivePack, nil
case string(GitServiceTypeUploadPack):
return GitServiceTypeUploadPack, nil
default:
return "", fmt.Errorf("unknown git service type provided: %q", s)
}
}