utils

package
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 7, 2025 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildRepoMapsAndKeys added in v0.8.0

func BuildRepoMapsAndKeys(src, tgt []models.ExtendedRepository) (map[string]models.ExtendedRepository, map[string]models.ExtendedRepository, []string)

BuildRepoMapsAndKeys builds source/target maps keyed by projectKey/repositorySlug and returns the union of keys in a deterministic slice order (insertion order: all keys from source, then new keys from target).

func BuildRollbackPlan added in v0.8.0

func BuildRollbackPlan[T any, ID comparable](source []models.ExtendedRepository, diff models.RepoDiff, updated, created []models.ExtendedRepository, ops RepoItemOps[T, ID]) *models.RollbackPlan

BuildRollbackPlan constructs a rollback plan based on source state and diff result

func DiffRepoItems added in v0.8.0

func DiffRepoItems[T any, ID comparable](sourceRepo, targetRepo models.ExtendedRepository, ops RepoItemOps[T, ID]) (create []T, update []T, delete_ []T)

DiffRepoItems computes create/update/delete sets between two repositories for a given item type. - create: target items without ID, plus items whose ID is in target but not in source - update: items with IDs present in both repos but differing by Equal - delete: items with IDs present in source but not in target

func ForceUpdateBySourceIDs added in v0.8.0

func ForceUpdateBySourceIDs[T any, ID comparable](source, target []models.ExtendedRepository, ops RepoItemOps[T, ID]) []models.ExtendedRepository

ForceUpdateBySourceIDs selects from target all items whose IDs are present in source for the same repo

func GenerateRepoDiff added in v0.8.0

func GenerateRepoDiff[T any, ID comparable](src, tgt []models.ExtendedRepository, ops RepoItemOps[T, ID]) (*models.RepoDiff, error)

GenerateRepoDiff builds a generic repo-level diff using the provided item ops

func GroupRepositories added in v0.8.0

func GroupRepositories(repos []models.ExtendedRepository) []models.ExtendedRepository

GroupRepositories merges items for the same repo and deduplicates both required-builds and webhooks by id.

func HasOption added in v0.3.0

func HasOption(options string, target string) bool

func Int32PtrToString added in v0.3.0

func Int32PtrToString(v *int32) string

func Int64PtrToString added in v0.7.0

func Int64PtrToString(v *int64) string

func OptionalBool added in v0.3.0

func OptionalBool(b bool) *bool

func OptionalString added in v0.3.0

func OptionalString(s string) *string

Helpers

func ParseColumnsToLower added in v0.4.3

func ParseColumnsToLower(columns string) []string

func ParseFile added in v0.6.0

func ParseFile[T any](filePath string, out *T) error

ParseFile is a universal function that parses YAML or JSON files into the provided struct pointer

func ParseRepositoriesFromArgs added in v0.9.0

func ParseRepositoriesFromArgs(repoIdent, input string) ([]models.ExtendedRepository, error)

ParseRepositoriesFromArgs parses repositories from either repoIdent (comma-separated project/repo) or input file/stdin. If input is provided, it takes precedence. Returns error if neither is provided.

func PrintRepos added in v0.2.0

func PrintRepos(repos []models.ExtendedRepository, columns []string)

PrintRepos prints a slice of Repository according to selected columns

func PrintStructured added in v0.3.0

func PrintStructured(name string, data interface{}, format string, columns string) error

PrintStructured prints data in JSON, YAML, or plain table format

func ReadRollbackPlan added in v0.8.0

func ReadRollbackPlan(path string) (*models.RollbackPlan, error)

ReadRollbackPlan reads a rollback plan from JSON or YAML file

func SafeInterface added in v0.3.0

func SafeInterface(v interface{}) string

func SafeValue added in v0.4.1

func SafeValue[T any](v *T) T

func SortRepositoriesStable added in v0.8.0

func SortRepositoriesStable(repos []models.ExtendedRepository) []models.ExtendedRepository

SortRepositoriesStable returns a sorted copy of repositories ordered by projectKey, repositorySlug, and with inner collections sorted by id: - requiredBuilds[].id (int64) ascending, nil first - webhooks[].id (int32) ascending, nil first

func WriteRepositoriesToFile added in v0.8.0

func WriteRepositoriesToFile(path string, repos []models.ExtendedRepository, format string) error

WriteRepositoriesToFile writes repositories grouped by projectKey/repositorySlug to a file. The payload is wrapped under key "repositories". Format is controlled by the `format` argument (json|yaml). For each repository, both RequiredBuilds and Webhooks are merged across duplicates and de-duplicated by id.

func WriteRollbackPlan added in v0.8.0

func WriteRollbackPlan(path, format string, plan *models.RollbackPlan) error

WriteRollbackPlan writes plan to file in json or yaml based on format

Types

type RepoItemOps added in v0.8.0

type RepoItemOps[T any, ID comparable] struct {
	GetItems func(models.ExtendedRepository) []T
	SetItems func(*models.ExtendedRepository, []T)
	GetID    func(T) (ID, bool) // returns (id, true) if item has id, otherwise (_, false)
	Equal    func(T, T) bool    // semantic equality
}

RepoItemOps defines how to access, identify, and compare repository-scoped items. T is the item type (e.g., RestRequiredBuildCondition or RestWebhook), ID is the id type (e.g., int64 or int32).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL