hack/operatorhub/cmd/flags/flags.go (84 lines of code) (raw):
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
// or more contributor license agreements. Licensed under the Elastic License 2.0;
// you may not use this file except in compliance with the Elastic License 2.0.
package flags
import (
"time"
)
const (
// common missing flag error
RequiredErrFmt = "%s is required"
// root flags
ConfFlag = "conf"
DryRunFlag = "dry-run"
EnableVaultFlag = "enable-vault"
VaultAddressFlag = "vault-addr"
VaultTokenFlag = "vault-token"
RedhatVaultSecretFlag = "redhat-vault-secret"
GithubVaultSecretFlag = "github-vault-secret" //nolint:gosec
// bundle command flags
DirFlag = "dir"
GithubTokenFlag = "github-token"
GithubUsernameFlag = "github-username"
GithubFullnameFlag = "github-fullname"
GithubEmailFlag = "github-email"
DeleteTempDirectoryFlag = "delete-temp-directory"
// container command flags
APIKeyFlags = "api-key"
RegistryPasswordFlag = "registry-password"
ProjectIDFlag = "project-id"
ForceFlag = "force"
ScanTimeoutFlag = "scan-timeout"
PreReleaseFlag = "pre-release"
// operatorhub command flags
YamlManifestFlag = "yaml-manifest"
TemplatesFlag = "templates"
RootPathFlag = "root-path"
)
var (
// bundle command variables
Dir string
GithubToken string
GithubUsername string
GithubFullname string
GithubEmail string
DeleteTempDirectory bool
// container command variables
APIKey string
RegistryPassword string
ProjectID string
Force bool
ScanTimeout time.Duration
PreRelease bool
// root command variables
ConfigPath string
DryRun bool
EnableVault bool
GithubVaultSecret string
RedhatVaultSecret string
VaultAddress string
VaultToken string
// operatorhub command variables
Conf *Config
YamlManifest []string
Templates string
RootPath string
)
// Config is the configuration that matches the config.yaml
type Config struct {
NewVersion string `json:"newVersion"`
PrevVersion string `json:"prevVersion"`
StackVersion string `json:"stackVersion"`
CRDs []struct {
Name string `json:"name"`
DisplayName string `json:"displayName"`
Description string `json:"description"`
} `json:"crds"`
Packages []struct {
OutputPath string `json:"outputPath"`
PackageName string `json:"packageName"`
DistributionChannel string `json:"distributionChannel"`
MinSupportedOpenShiftVersion string `json:"minSupportedOpenShiftVersion"`
OperatorRepo string `json:"operatorRepo"`
UbiOnly bool `json:"ubiOnly"`
DigestPinning bool `json:"digestPinning"`
} `json:"packages"`
}
// HasDigestPinning will return true if any package
// within the configuration has DigestPinning enabled.
func (c *Config) HasDigestPinning() bool {
if c == nil {
return false
}
for _, pkg := range c.Packages {
if pkg.DigestPinning {
return true
}
}
return false
}