diff --git a/api/config/cpi/content.go b/api/config/cpi/content.go index abcc1a78d1..8909450569 100644 --- a/api/config/cpi/content.go +++ b/api/config/cpi/content.go @@ -5,10 +5,10 @@ import ( "encoding/json" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/osfs" "github.com/mandelsoft/vfs/pkg/vfs" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess/blobaccess" ) @@ -76,5 +76,5 @@ func (k ContentSpec) Get() (interface{}, error) { fs = osfs.New() } - return utils.ReadFile(k.Path, fs) + return optionutils.ReadFile(k.Path, fs) } diff --git a/api/config/internal/configtypes.go b/api/config/internal/configtypes.go index a4a2cd55d1..e659a714b7 100644 --- a/api/config/internal/configtypes.go +++ b/api/config/internal/configtypes.go @@ -5,9 +5,10 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/stringutils" "github.com/modern-go/reflect2" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -36,7 +37,7 @@ type configTypeScheme struct { } func NewConfigTypeScheme(defaultDecoder ConfigDecoder, base ...ConfigTypeScheme) ConfigTypeScheme { - scheme := runtime.MustNewDefaultTypeScheme[Config, ConfigType](&GenericConfig{}, true, defaultDecoder, utils.Optional(base...)) + scheme := runtime.MustNewDefaultTypeScheme[Config, ConfigType](&GenericConfig{}, true, defaultDecoder, general.Optional(base...)) return &configTypeScheme{scheme} } @@ -54,7 +55,7 @@ type versionRegistry struct { } func NewStrictConfigTypeScheme(base ...ConfigTypeScheme) runtime.VersionedTypeRegistry[Config, ConfigType] { - scheme := runtime.MustNewDefaultTypeScheme[Config, ConfigType](nil, false, nil, utils.Optional(base...)) + scheme := runtime.MustNewDefaultTypeScheme[Config, ConfigType](nil, false, nil, general.Optional(base...)) return &versionRegistry{scheme} } @@ -80,7 +81,7 @@ func (t *configTypeScheme) Usage() string { for strings.HasSuffix(u, "\n") { u = u[:len(u)-1] } - s = fmt.Sprintf("%s\n- %s\n%s", s, ct.GetKind(), utils.IndentLines(u, " ")) + s = fmt.Sprintf("%s\n- %s\n%s", s, ct.GetKind(), stringutils.IndentLines(u, " ")) } return s + "\n" } diff --git a/api/config/internal/context.go b/api/config/internal/context.go index 6f1e6c58b5..0f3349157b 100644 --- a/api/config/internal/context.go +++ b/api/config/internal/context.go @@ -5,16 +5,16 @@ import ( "reflect" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/datacontext" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) // OCM_CONFIG_TYPE_SUFFIX is the standard suffix used for configuration // types provided by this library. -const OCM_CONFIG_TYPE_SUFFIX = ".config" + common.OCM_TYPE_GROUP_SUFFIX +const OCM_CONFIG_TYPE_SUFFIX = ".config" + misc.OCM_TYPE_GROUP_SUFFIX type ConfigSelector interface { Select(Config) bool @@ -157,7 +157,7 @@ type gcWrapper struct { } func newView(c *_context, ref ...bool) Context { - if utils.Optional(ref...) { + if general.Optional(ref...) { return datacontext.FinalizedContext[gcWrapper](c) } return c diff --git a/api/credentials/builtin/github/ghcr.go b/api/credentials/builtin/github/ghcr.go index 86d5b21752..541df50072 100644 --- a/api/credentials/builtin/github/ghcr.go +++ b/api/credentials/builtin/github/ghcr.go @@ -5,7 +5,7 @@ import ( "ocm.software/ocm/api/credentials/cpi" "ocm.software/ocm/api/tech/oci/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const HOST = "ghcr.io" @@ -23,7 +23,7 @@ func init() { user = "any" } if src, err := cpi.DefaultContext.GetCredentialsForConsumer(id); err != nil || src == nil { - creds := cpi.NewCredentials(common.Properties{cpi.ATTR_IDENTITY_TOKEN: t, cpi.ATTR_USERNAME: user}) + creds := cpi.NewCredentials(misc.Properties{cpi.ATTR_IDENTITY_TOKEN: t, cpi.ATTR_USERNAME: user}) cpi.DefaultContext.SetCredentialsForConsumer(id, creds) } } diff --git a/api/credentials/builtin/github/github.go b/api/credentials/builtin/github/github.go index 29b0112ae5..591581ab00 100644 --- a/api/credentials/builtin/github/github.go +++ b/api/credentials/builtin/github/github.go @@ -5,7 +5,7 @@ import ( "ocm.software/ocm/api/credentials/cpi" "ocm.software/ocm/api/tech/github/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) func init() { @@ -15,7 +15,7 @@ func init() { id := identity.GetConsumerId(us) if src, err := cpi.DefaultContext.GetCredentialsForConsumer(id); err != nil || src == nil { - creds := cpi.NewCredentials(common.Properties{cpi.ATTR_TOKEN: t}) + creds := cpi.NewCredentials(misc.Properties{cpi.ATTR_TOKEN: t}) cpi.DefaultContext.SetCredentialsForConsumer(id, creds) } } diff --git a/api/credentials/config/config_test.go b/api/credentials/config/config_test.go index 2e7752452c..14159e0dc8 100644 --- a/api/credentials/config/config_test.go +++ b/api/credentials/config/config_test.go @@ -15,14 +15,14 @@ import ( "ocm.software/ocm/api/credentials/extensions/repositories/aliases" "ocm.software/ocm/api/credentials/extensions/repositories/directcreds" "ocm.software/ocm/api/credentials/extensions/repositories/memory" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) var DefaultContext = credentials.New() var _ = Describe("generic credentials", func() { - props := common.Properties{ + props := misc.Properties{ "user": "USER", "password": "PASSWORD", } @@ -154,7 +154,7 @@ var _ = Describe("generic credentials", func() { credentials.ID_TYPE: "mytype", "host": "localhost", } - props := common.Properties{"token": "mytoken"} + props := misc.Properties{"token": "mytoken"} creds := directcreds.NewCredentials(props) Expect(cfg.AddConsumer(consumer, creds)).To(Succeed()) @@ -182,7 +182,7 @@ type: credentials.config.ocm.software }) It("applies a config for consumers", func() { - props := common.Properties{"token": "mytoken"} + props := misc.Properties{"token": "mytoken"} consumer := credentials.ConsumerIdentity{ credentials.ID_TYPE: "mytype", "host": "localhost", diff --git a/api/credentials/cpi/interface.go b/api/credentials/cpi/interface.go index f2870d8fed..edb5fd175b 100644 --- a/api/credentials/cpi/interface.go +++ b/api/credentials/cpi/interface.go @@ -5,7 +5,7 @@ package cpi import ( "ocm.software/ocm/api/credentials/internal" "ocm.software/ocm/api/datacontext" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -83,7 +83,7 @@ func RegisterStandardIdentity(typ string, matcher IdentityMatcher, desc string, internal.StandardIdentityMatchers.Register(typ, matcher, desc, attrs) } -func NewCredentials(props common.Properties) Credentials { +func NewCredentials(props misc.Properties) Credentials { return internal.NewCredentials(props) } diff --git a/api/credentials/extensions/repositories/aliases/repo_test.go b/api/credentials/extensions/repositories/aliases/repo_test.go index 36bbe8b2cf..d6aaebab93 100644 --- a/api/credentials/extensions/repositories/aliases/repo_test.go +++ b/api/credentials/extensions/repositories/aliases/repo_test.go @@ -9,13 +9,13 @@ import ( "ocm.software/ocm/api/credentials" local "ocm.software/ocm/api/credentials/extensions/repositories/aliases" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var DefaultContext = credentials.New() var _ = Describe("alias credentials", func() { - props := common.Properties{ + props := misc.Properties{ "user": "USER", "password": "PASSWORD", } diff --git a/api/credentials/extensions/repositories/directcreds/credentials.go b/api/credentials/extensions/repositories/directcreds/credentials.go index 460545563f..8570c1fc76 100644 --- a/api/credentials/extensions/repositories/directcreds/credentials.go +++ b/api/credentials/extensions/repositories/directcreds/credentials.go @@ -2,9 +2,9 @@ package directcreds import ( "ocm.software/ocm/api/credentials/cpi" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) -func NewCredentials(props common.Properties) cpi.CredentialsSpec { +func NewCredentials(props misc.Properties) cpi.CredentialsSpec { return cpi.NewCredentialsSpec(Type, NewRepositorySpec(props)) } diff --git a/api/credentials/extensions/repositories/directcreds/repo_test.go b/api/credentials/extensions/repositories/directcreds/repo_test.go index be1e07ec9b..fc1fc36df5 100644 --- a/api/credentials/extensions/repositories/directcreds/repo_test.go +++ b/api/credentials/extensions/repositories/directcreds/repo_test.go @@ -9,13 +9,13 @@ import ( "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/credentials/extensions/repositories/directcreds" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var DefaultContext = credentials.New() var _ = Describe("direct credentials", func() { - props := common.Properties{ + props := misc.Properties{ "user": "USER", "password": "PASSWORD", } diff --git a/api/credentials/extensions/repositories/directcreds/type.go b/api/credentials/extensions/repositories/directcreds/type.go index 1c36963df7..d8a6b083d9 100644 --- a/api/credentials/extensions/repositories/directcreds/type.go +++ b/api/credentials/extensions/repositories/directcreds/type.go @@ -2,7 +2,7 @@ package directcreds import ( "ocm.software/ocm/api/credentials/cpi" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -19,7 +19,7 @@ func init() { // RepositorySpec describes a repository interface for single direct credentials. type RepositorySpec struct { runtime.ObjectVersionedType `json:",inline"` - Properties common.Properties `json:"properties"` + Properties misc.Properties `json:"properties"` } var ( @@ -28,7 +28,7 @@ var ( ) // NewRepositorySpec creates a new RepositorySpec. -func NewRepositorySpec(credentials common.Properties) *RepositorySpec { +func NewRepositorySpec(credentials misc.Properties) *RepositorySpec { return &RepositorySpec{ ObjectVersionedType: runtime.NewVersionedTypedObject(Type), Properties: credentials, diff --git a/api/credentials/extensions/repositories/dockerconfig/credentials.go b/api/credentials/extensions/repositories/dockerconfig/credentials.go index 92d966f882..9a90271a79 100644 --- a/api/credentials/extensions/repositories/dockerconfig/credentials.go +++ b/api/credentials/extensions/repositories/dockerconfig/credentials.go @@ -7,7 +7,7 @@ import ( "github.com/mandelsoft/goutils/set" "ocm.software/ocm/api/credentials/cpi" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Credentials struct { @@ -27,10 +27,10 @@ func NewCredentials(cfg *configfile.ConfigFile, name string, store dockercred.St } } -func (c *Credentials) get() common.Properties { +func (c *Credentials) get() misc.Properties { auth, err := c.config.GetAuthConfig(c.name) if err != nil { - return common.Properties{} + return misc.Properties{} } return newCredentials(auth).Properties() } @@ -62,6 +62,6 @@ func (c *Credentials) PropertyNames() set.Set[string] { return c.get().Names() } -func (c *Credentials) Properties() common.Properties { +func (c *Credentials) Properties() misc.Properties { return c.get() } diff --git a/api/credentials/extensions/repositories/dockerconfig/repo_test.go b/api/credentials/extensions/repositories/dockerconfig/repo_test.go index 0e6352d215..28d545012c 100644 --- a/api/credentials/extensions/repositories/dockerconfig/repo_test.go +++ b/api/credentials/extensions/repositories/dockerconfig/repo_test.go @@ -16,18 +16,18 @@ import ( local "ocm.software/ocm/api/credentials/extensions/repositories/dockerconfig" "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/tech/oci/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtimefinalizer" ) var _ = Describe("docker config", func() { - props := common.Properties{ + props := misc.Properties{ "username": "mandelsoft", "password": "password", "serverAddress": "https://index.docker.io/v1/", } - props2 := common.Properties{ + props2 := misc.Properties{ "username": "mandelsoft", "password": "token", "serverAddress": "https://ghcr.io", diff --git a/api/credentials/extensions/repositories/dockerconfig/repository.go b/api/credentials/extensions/repositories/dockerconfig/repository.go index e82fc5548c..b8fa203240 100644 --- a/api/credentials/extensions/repositories/dockerconfig/repository.go +++ b/api/credentials/extensions/repositories/dockerconfig/repository.go @@ -11,11 +11,11 @@ import ( "github.com/docker/cli/cli/config/configfile" "github.com/docker/cli/cli/config/types" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/ioutils" "ocm.software/ocm/api/credentials/cpi" "ocm.software/ocm/api/datacontext" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtimefinalizer" ) @@ -87,7 +87,7 @@ func (r *Repository) Read(force bool) error { id runtimefinalizer.ObjectIdentity ) if r.path != "" { - path, err := utils.ResolvePath(r.path) + path, err := ioutils.ResolvePath(r.path) if err != nil { return errors.Wrapf(err, "cannot resolve path %q", r.path) } @@ -113,7 +113,7 @@ func (r *Repository) Read(force bool) error { } func newCredentials(auth types.AuthConfig) cpi.Credentials { - props := common.Properties{ + props := misc.Properties{ cpi.ATTR_USERNAME: norm(auth.Username), cpi.ATTR_PASSWORD: norm(auth.Password), } diff --git a/api/credentials/extensions/repositories/dockerconfig/type.go b/api/credentials/extensions/repositories/dockerconfig/type.go index 6ec2282a14..965a3fbb12 100644 --- a/api/credentials/extensions/repositories/dockerconfig/type.go +++ b/api/credentials/extensions/repositories/dockerconfig/type.go @@ -4,10 +4,11 @@ import ( "encoding/json" "fmt" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" + "github.com/mandelsoft/goutils/optionutils" "ocm.software/ocm/api/credentials/cpi" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -38,7 +39,7 @@ func (s RepositorySpec) WithConsumerPropagation(propagate bool) *RepositorySpec func NewRepositorySpec(path string, prop ...bool) *RepositorySpec { var p *bool if len(prop) > 0 { - p = generics.Pointer(utils.Optional(prop...)) + p = generics.PointerTo(general.Optional(prop...)) } if path == "" { path = "~/.docker/config.json" @@ -53,7 +54,7 @@ func NewRepositorySpec(path string, prop ...bool) *RepositorySpec { func NewRepositorySpecForConfig(data []byte, prop ...bool) *RepositorySpec { var p *bool if len(prop) > 0 { - p = generics.Pointer(utils.Optional(prop...)) + p = generics.PointerTo(general.Optional(prop...)) } return &RepositorySpec{ ObjectVersionedType: runtime.NewVersionedTypedObject(Type), @@ -72,5 +73,5 @@ func (a *RepositorySpec) Repository(ctx cpi.Context, creds cpi.Credentials) (cpi if !ok { return nil, fmt.Errorf("failed to assert type %T to Repositories", r) } - return repos.GetRepository(ctx, a.DockerConfigFile, a.DockerConfig, utils.AsBool(a.PropgateConsumerIdentity, true)) + return repos.GetRepository(ctx, a.DockerConfigFile, a.DockerConfig, optionutils.AsBool(a.PropgateConsumerIdentity, true)) } diff --git a/api/credentials/extensions/repositories/gardenerconfig/handler/container_registry/handler.go b/api/credentials/extensions/repositories/gardenerconfig/handler/container_registry/handler.go index 08dbfc32b3..a67d954fbb 100644 --- a/api/credentials/extensions/repositories/gardenerconfig/handler/container_registry/handler.go +++ b/api/credentials/extensions/repositories/gardenerconfig/handler/container_registry/handler.go @@ -11,7 +11,7 @@ import ( "ocm.software/ocm/api/credentials/identity/hostpath" "ocm.software/ocm/api/tech/oci/identity" "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) func init() { @@ -90,7 +90,7 @@ func (h Handler) ParseConfig(configReader io.Reader) ([]gardenercfgcpi.Credentia } func newCredentialsFromContainerRegistryCredentials(auth *containerRegistryCredentials) cpi.Credentials { - props := common.Properties{ + props := misc.Properties{ cpi.ATTR_USERNAME: auth.Username, cpi.ATTR_PASSWORD: auth.Password, } diff --git a/api/credentials/extensions/repositories/gardenerconfig/identity/identity.go b/api/credentials/extensions/repositories/gardenerconfig/identity/identity.go index e5b18c4a04..033ba4a99c 100644 --- a/api/credentials/extensions/repositories/gardenerconfig/identity/identity.go +++ b/api/credentials/extensions/repositories/gardenerconfig/identity/identity.go @@ -8,10 +8,10 @@ import ( "ocm.software/ocm/api/credentials/identity/hostpath" "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/listformat" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) -const CONSUMER_TYPE = "Buildcredentials" + common.OCM_TYPE_GROUP_SUFFIX +const CONSUMER_TYPE = "Buildcredentials" + misc.OCM_TYPE_GROUP_SUFFIX // used identity attributes. const ( diff --git a/api/credentials/extensions/repositories/gardenerconfig/type.go b/api/credentials/extensions/repositories/gardenerconfig/type.go index 2b0d959527..5ee983447b 100644 --- a/api/credentials/extensions/repositories/gardenerconfig/type.go +++ b/api/credentials/extensions/repositories/gardenerconfig/type.go @@ -3,13 +3,14 @@ package gardenerconfig import ( "fmt" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" + "github.com/mandelsoft/goutils/optionutils" "ocm.software/ocm/api/credentials/cpi" gardenercfgcpi "ocm.software/ocm/api/credentials/extensions/repositories/gardenerconfig/cpi" "ocm.software/ocm/api/credentials/extensions/repositories/gardenerconfig/identity" "ocm.software/ocm/api/credentials/internal" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -41,7 +42,7 @@ func NewRepositorySpec(url string, configType gardenercfgcpi.ConfigType, cipher URL: url, ConfigType: configType, Cipher: cipher, - PropagateConsumerIdentity: generics.Pointer(utils.OptionalDefaultedBool(true, propagateConsumerIdentity...)), + PropagateConsumerIdentity: generics.PointerTo(general.OptionalDefaultedBool(true, propagateConsumerIdentity...)), } } @@ -61,7 +62,7 @@ func (a *RepositorySpec) Repository(ctx cpi.Context, creds cpi.Credentials) (cpi return nil, fmt.Errorf("unable to get key from context: %w", err) } - return repos.GetRepository(ctx, a.URL, a.ConfigType, a.Cipher, key, utils.AsBool(a.PropagateConsumerIdentity, true)) + return repos.GetRepository(ctx, a.URL, a.ConfigType, a.Cipher, key, optionutils.AsBool(a.PropagateConsumerIdentity, true)) } func (a *RepositorySpec) GetConsumerId(uctx ...internal.UsageContext) internal.ConsumerIdentity { diff --git a/api/credentials/extensions/repositories/memory/config/config_test.go b/api/credentials/extensions/repositories/memory/config/config_test.go index 2c0647a26c..0371ee27f1 100644 --- a/api/credentials/extensions/repositories/memory/config/config_test.go +++ b/api/credentials/extensions/repositories/memory/config/config_test.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/config" "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/credentials/extensions/repositories/memory" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var _ = Describe("configure credentials", func() { @@ -41,7 +41,7 @@ var _ = Describe("configure credentials", func() { Expect(mem.ExistsCredentials("ref")).To(BeTrue()) creds, err := mem.LookupCredentials("ref") Expect(err).To(Succeed()) - Expect(creds.Properties()).To(Equal(common.Properties{"username": "mandelsoft", "password": "specialsecret"})) + Expect(creds.Properties()).To(Equal(misc.Properties{"username": "mandelsoft", "password": "specialsecret"})) }) It("reads config with direct", func() { @@ -57,6 +57,6 @@ var _ = Describe("configure credentials", func() { Expect(mem.ExistsCredentials("direct")).To(BeTrue()) creds, err := mem.LookupCredentials("direct") Expect(err).To(Succeed()) - Expect(creds.Properties()).To(Equal(common.Properties{"username": "mandelsoft2", "password": "specialsecret2"})) + Expect(creds.Properties()).To(Equal(misc.Properties{"username": "mandelsoft2", "password": "specialsecret2"})) }) }) diff --git a/api/credentials/extensions/repositories/memory/config/type.go b/api/credentials/extensions/repositories/memory/config/type.go index 3f9ec2cae0..5f36e6b7c1 100644 --- a/api/credentials/extensions/repositories/memory/config/type.go +++ b/api/credentials/extensions/repositories/memory/config/type.go @@ -8,7 +8,7 @@ import ( cfgcpi "ocm.software/ocm/api/config/cpi" "ocm.software/ocm/api/credentials/cpi" "ocm.software/ocm/api/credentials/extensions/repositories/memory" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -34,7 +34,7 @@ type CredentialsSpec struct { // Reference refers to credentials store in some other repo Reference *cpi.GenericCredentialsSpec `json:"reference,omitempty"` // Credentials are direct credentials (one of Reference or Credentials must be set) - Credentials common.Properties `json:"credentials"` + Credentials misc.Properties `json:"credentials"` } // New creates a new memory ConfigSpec. @@ -50,7 +50,7 @@ func (a *Config) GetType() string { return ConfigType } -func (a *Config) AddCredentials(name string, props common.Properties) error { +func (a *Config) AddCredentials(name string, props misc.Properties) error { a.Credentials = append(a.Credentials, CredentialsSpec{CredentialsName: name, Credentials: props}) return nil } diff --git a/api/credentials/extensions/repositories/memory/repo_test.go b/api/credentials/extensions/repositories/memory/repo_test.go index c1a244f487..97d709fbc3 100644 --- a/api/credentials/extensions/repositories/memory/repo_test.go +++ b/api/credentials/extensions/repositories/memory/repo_test.go @@ -9,18 +9,18 @@ import ( "ocm.software/ocm/api/credentials" local "ocm.software/ocm/api/credentials/extensions/repositories/memory" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var DefaultContext = credentials.New() var _ = Describe("direct credentials", func() { - props := common.Properties{ + props := misc.Properties{ "user": "USER", "password": "PASSWORD", } - props2 := common.Properties{ + props2 := misc.Properties{ "user": "OTHER", "password": "OTHERPASSWORD", } diff --git a/api/credentials/extensions/repositories/npm/config.go b/api/credentials/extensions/repositories/npm/config.go index eb22e51f8a..6a65daea9a 100644 --- a/api/credentials/extensions/repositories/npm/config.go +++ b/api/credentials/extensions/repositories/npm/config.go @@ -6,15 +6,14 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" - - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/ioutils" ) type npmConfig map[string]string // readNpmConfigFile reads "~/.npmrc" file line by line, parse it and return the result as a npmConfig. func readNpmConfigFile(path string) (npmConfig, string, error) { - path, err := utils.ResolvePath(path) + path, err := ioutils.ResolvePath(path) if err != nil { return nil, path, errors.Wrapf(err, "cannot resolve path %q", path) } diff --git a/api/credentials/extensions/repositories/npm/config_test.go b/api/credentials/extensions/repositories/npm/config_test.go index 1d64719ad6..7c34ca2524 100644 --- a/api/credentials/extensions/repositories/npm/config_test.go +++ b/api/credentials/extensions/repositories/npm/config_test.go @@ -8,15 +8,15 @@ import ( "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/credentials/extensions/repositories/npm" "ocm.software/ocm/api/tech/npm/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var _ = Describe("Config deserialization Test Environment", func() { It("read .npmrc", func() { ctx := credentials.New() repo := Must(npm.NewRepository(ctx, "testdata/.npmrc")) - Expect(Must(repo.LookupCredentials("registry.npmjs.org")).Properties()).To(Equal(common.Properties{identity.ATTR_TOKEN: "npm_TOKEN"})) - Expect(Must(repo.LookupCredentials("npm.registry.acme.com/api/npm")).Properties()).To(Equal(common.Properties{identity.ATTR_TOKEN: "bearer_TOKEN"})) + Expect(Must(repo.LookupCredentials("registry.npmjs.org")).Properties()).To(Equal(misc.Properties{identity.ATTR_TOKEN: "npm_TOKEN"})) + Expect(Must(repo.LookupCredentials("npm.registry.acme.com/api/npm")).Properties()).To(Equal(misc.Properties{identity.ATTR_TOKEN: "bearer_TOKEN"})) }) It("propagates credentials", func() { diff --git a/api/credentials/extensions/repositories/npm/repository.go b/api/credentials/extensions/repositories/npm/repository.go index 7ef2063f62..fbcb93c37e 100644 --- a/api/credentials/extensions/repositories/npm/repository.go +++ b/api/credentials/extensions/repositories/npm/repository.go @@ -4,11 +4,11 @@ import ( "fmt" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/credentials/cpi" npmCredentials "ocm.software/ocm/api/tech/npm/identity" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const PROVIDER = "ocm.software/credentialprovider/" + Type @@ -21,7 +21,7 @@ type Repository struct { } func NewRepository(ctx cpi.Context, path string, prop ...bool) (*Repository, error) { - return newRepository(ctx, path, utils.OptionalDefaultedBool(true, prop...)) + return newRepository(ctx, path, general.OptionalDefaultedBool(true, prop...)) } func newRepository(ctx cpi.Context, path string, prop bool) (*Repository, error) { @@ -81,7 +81,7 @@ func (r *Repository) Read(force bool) error { } func newCredentials(token string) cpi.Credentials { - props := common.Properties{ + props := misc.Properties{ npmCredentials.ATTR_TOKEN: token, } return cpi.NewCredentials(props) diff --git a/api/credentials/extensions/repositories/npm/repository_test.go b/api/credentials/extensions/repositories/npm/repository_test.go index e141e1e428..e7ff8414f6 100644 --- a/api/credentials/extensions/repositories/npm/repository_test.go +++ b/api/credentials/extensions/repositories/npm/repository_test.go @@ -12,16 +12,16 @@ import ( "ocm.software/ocm/api/credentials/cpi" local "ocm.software/ocm/api/credentials/extensions/repositories/npm" npmCredentials "ocm.software/ocm/api/tech/npm/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtimefinalizer" ) var _ = Describe("NPM config - .npmrc", func() { - props := common.Properties{ + props := misc.Properties{ npmCredentials.ATTR_TOKEN: "npm_TOKEN", } - props2 := common.Properties{ + props2 := misc.Properties{ npmCredentials.ATTR_TOKEN: "bearer_TOKEN", } diff --git a/api/credentials/extensions/repositories/npm/type.go b/api/credentials/extensions/repositories/npm/type.go index 91fca87d2d..4816739d80 100644 --- a/api/credentials/extensions/repositories/npm/type.go +++ b/api/credentials/extensions/repositories/npm/type.go @@ -3,10 +3,11 @@ package npm import ( "fmt" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" + "github.com/mandelsoft/goutils/optionutils" "ocm.software/ocm/api/credentials/cpi" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -38,7 +39,7 @@ func NewRepositorySpec(path string, propagate ...bool) *RepositorySpec { } } if len(propagate) > 0 { - p = generics.Pointer(utils.OptionalDefaultedBool(true, propagate...)) + p = generics.PointerTo(general.OptionalDefaultedBool(true, propagate...)) } return &RepositorySpec{ @@ -58,5 +59,5 @@ func (rs *RepositorySpec) Repository(ctx cpi.Context, _ cpi.Credentials) (cpi.Re if !ok { return nil, fmt.Errorf("failed to assert type %T to Cache", r) } - return cache.GetRepository(ctx, rs.NpmrcFile, utils.AsBool(rs.PropgateConsumerIdentity, true)) + return cache.GetRepository(ctx, rs.NpmrcFile, optionutils.AsBool(rs.PropgateConsumerIdentity, true)) } diff --git a/api/credentials/extensions/repositories/vault/auth.go b/api/credentials/extensions/repositories/vault/auth.go index 1f61fd162a..8abad67dcb 100644 --- a/api/credentials/extensions/repositories/vault/auth.go +++ b/api/credentials/extensions/repositories/vault/auth.go @@ -7,10 +7,10 @@ import ( "github.com/hashicorp/vault-client-go" "github.com/hashicorp/vault-client-go/schema" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" "ocm.software/ocm/api/credentials/cpi" "ocm.software/ocm/api/credentials/extensions/repositories/vault/identity" - "ocm.software/ocm/api/utils" ) type AuthMethod interface { @@ -50,7 +50,7 @@ func (r *AuthMethods) Names() []string { r.lock.Lock() defer r.lock.Unlock() - return utils.StringMapKeys(r.methods) + return maputils.OrderedKeys(r.methods) } func RegisterAuthMethod(m AuthMethod) { diff --git a/api/credentials/extensions/repositories/vault/options.go b/api/credentials/extensions/repositories/vault/options.go index adb6dfb956..a5e28c5335 100644 --- a/api/credentials/extensions/repositories/vault/options.go +++ b/api/credentials/extensions/repositories/vault/options.go @@ -4,8 +4,6 @@ import ( "slices" "github.com/mandelsoft/goutils/optionutils" - - "ocm.software/ocm/api/utils" ) type Option = optionutils.Option[*Options] @@ -93,5 +91,5 @@ func (o pr) ApplyTo(opts *Options) { } func WithPropagation(b ...bool) Option { - return pr(utils.OptionalDefaultedBool(true, b...)) + return pr(optionutils.BoolOption(b...)) } diff --git a/api/credentials/extensions/repositories/vault/provider.go b/api/credentials/extensions/repositories/vault/provider.go index 4e5b022550..cdde714767 100644 --- a/api/credentials/extensions/repositories/vault/provider.go +++ b/api/credentials/extensions/repositories/vault/provider.go @@ -16,7 +16,7 @@ import ( "ocm.software/ocm/api/credentials/cpi" "ocm.software/ocm/api/credentials/extensions/repositories/vault/identity" "ocm.software/ocm/api/credentials/internal" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const PROVIDER = "ocm.software/credentialprovider/" + Type @@ -199,7 +199,7 @@ func (p *ConsumerProvider) error(err error, msg string, secret string, keypairs ) } -func (p *ConsumerProvider) read(ctx context.Context, client *vault.Client, secret string) (common.Properties, common.Properties, []string, error) { +func (p *ConsumerProvider) read(ctx context.Context, client *vault.Client, secret string) (misc.Properties, misc.Properties, []string, error) { // read the secret secret = path.Join(p.repository.spec.Path, secret) @@ -209,14 +209,14 @@ func (p *ConsumerProvider) read(ctx context.Context, client *vault.Client, secre return nil, nil, nil, err } - var id common.Properties + var id misc.Properties var list []string props := getProps(s.Data.Data) if meta, ok := s.Data.Metadata["custom_metadata"].(map[string]interface{}); ok { sub := false if cid := meta[CUSTOM_CONSUMERID]; cid != nil { - id = common.Properties{} + id = misc.Properties{} if err := json.Unmarshal([]byte(cid.(string)), &id); err != nil { id = nil } @@ -240,8 +240,8 @@ func (p *ConsumerProvider) read(ctx context.Context, client *vault.Client, secre return props, id, list, nil } -func getProps(data map[string]interface{}) common.Properties { - props := common.Properties{} +func getProps(data map[string]interface{}) misc.Properties { + props := misc.Properties{} for k, v := range data { if s, ok := v.(string); ok { props[k] = s diff --git a/api/credentials/extensions/repositories/vault/repo_int_test.go b/api/credentials/extensions/repositories/vault/repo_int_test.go index a52e228a18..9465e23253 100644 --- a/api/credentials/extensions/repositories/vault/repo_int_test.go +++ b/api/credentials/extensions/repositories/vault/repo_int_test.go @@ -20,7 +20,7 @@ import ( me "ocm.software/ocm/api/credentials/extensions/repositories/vault" "ocm.software/ocm/api/credentials/extensions/repositories/vault/identity" "ocm.software/ocm/api/credentials/identity/hostpath" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -96,7 +96,7 @@ var _ = Describe("vault config", func() { consumerId := Must(identity.GetConsumerId(vaultClient.Configuration().Address, "", "secret", VAULT_PATH_REPO1)) - creds := credentials.NewCredentials(common.Properties{ + creds := credentials.NewCredentials(misc.Properties{ identity.ATTR_AUTHMETH: identity.AUTH_TOKEN, identity.ATTR_TOKEN: VAULT_ROOT_TOKEN, }) @@ -481,7 +481,7 @@ func SetUpVaultAccess(ctx context.Context, credctx credentials.Context, client * secretid := secret.Data["secret_id"].(string) consumerId := Must(identity.GetConsumerId(client.Configuration().Address, "", "secret", VAULT_PATH_REPO1)) - creds := credentials.NewCredentials(common.Properties{ + creds := credentials.NewCredentials(misc.Properties{ identity.ATTR_AUTHMETH: identity.AUTH_APPROLE, identity.ATTR_ROLEID: roleid, identity.ATTR_SECRETID: secretid, diff --git a/api/credentials/extensions/repositories/vault/repo_test.go b/api/credentials/extensions/repositories/vault/repo_test.go index c1b5b07f3b..2506c1f24f 100644 --- a/api/credentials/extensions/repositories/vault/repo_test.go +++ b/api/credentials/extensions/repositories/vault/repo_test.go @@ -12,7 +12,7 @@ import ( "ocm.software/ocm/api/credentials" me "ocm.software/ocm/api/credentials/extensions/repositories/vault" "ocm.software/ocm/api/credentials/extensions/repositories/vault/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -57,7 +57,7 @@ var _ = Describe("", func() { // for a corresponding consumer exist. Thus, creating such credentials is required to test the method even // though they are not used consumerId := Must(identity.GetConsumerId(VAULT_HTTP_URL, VAULT_NAMESPACE, VAULT_MOUNT_PATH, VAULT_PATH_REPO1)) - creds := credentials.NewCredentials(common.Properties{ + creds := credentials.NewCredentials(misc.Properties{ identity.ATTR_AUTHMETH: identity.AUTH_TOKEN, identity.ATTR_TOKEN: "token", }) diff --git a/api/credentials/interface.go b/api/credentials/interface.go index b0aa3f2044..363b2060fe 100644 --- a/api/credentials/interface.go +++ b/api/credentials/interface.go @@ -5,7 +5,7 @@ import ( "ocm.software/ocm/api/credentials/extensions/repositories/directcreds" "ocm.software/ocm/api/credentials/internal" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -77,7 +77,7 @@ func NewGenericRepositorySpec(data []byte, unmarshaler runtime.Unmarshaler) (Rep return internal.NewGenericRepositorySpec(data, unmarshaler) } -func NewCredentials(props common.Properties) Credentials { +func NewCredentials(props misc.Properties) Credentials { return internal.NewCredentials(props) } diff --git a/api/credentials/internal/context.go b/api/credentials/internal/context.go index 222b8d6c44..aa967d9f73 100644 --- a/api/credentials/internal/context.go +++ b/api/credentials/internal/context.go @@ -7,13 +7,13 @@ import ( "reflect" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" "github.com/mandelsoft/goutils/maputils" "ocm.software/ocm/api/config" cfgcpi "ocm.software/ocm/api/config/cpi" "ocm.software/ocm/api/datacontext" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/api/utils/runtimefinalizer" ) @@ -148,7 +148,7 @@ type gcWrapper struct { } func newView(c *_context, ref ...bool) Context { - if utils.Optional(ref...) { + if general.Optional(ref...) { return datacontext.FinalizedContext[gcWrapper](c) } return c diff --git a/api/credentials/internal/cred_test.go b/api/credentials/internal/cred_test.go index bf1233986c..f8de45df93 100644 --- a/api/credentials/internal/cred_test.go +++ b/api/credentials/internal/cred_test.go @@ -10,13 +10,13 @@ import ( "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/credentials/extensions/repositories/memory" "ocm.software/ocm/api/credentials/internal" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var DefaultContext = credentials.New() var _ = Describe("generic credentials", func() { - props := common.Properties{ + props := misc.Properties{ "user": "USER", "password": "PASSWORD", } diff --git a/api/credentials/internal/repository.go b/api/credentials/internal/repository.go index 337d2f4bc8..3f0a306d2b 100644 --- a/api/credentials/internal/repository.go +++ b/api/credentials/internal/repository.go @@ -3,7 +3,7 @@ package internal import ( "github.com/mandelsoft/goutils/set" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Repository interface { @@ -17,16 +17,16 @@ type Credentials interface { ExistsProperty(name string) bool GetProperty(name string) string PropertyNames() set.Set[string] - Properties() common.Properties + Properties() misc.Properties } -type DirectCredentials common.Properties +type DirectCredentials misc.Properties var _ Credentials = (*DirectCredentials)(nil) -func NewCredentials(props common.Properties) DirectCredentials { +func NewCredentials(props misc.Properties) DirectCredentials { if props == nil { - props = common.Properties{} + props = misc.Properties{} } else { props = props.Copy() } @@ -43,11 +43,11 @@ func (c DirectCredentials) GetProperty(name string) string { } func (c DirectCredentials) PropertyNames() set.Set[string] { - return common.Properties(c).Names() + return misc.Properties(c).Names() } -func (c DirectCredentials) Properties() common.Properties { - return common.Properties(c).Copy() +func (c DirectCredentials) Properties() misc.Properties { + return misc.Properties(c).Copy() } func (c DirectCredentials) Credentials(Context, ...CredentialsSource) (Credentials, error) { @@ -55,9 +55,9 @@ func (c DirectCredentials) Credentials(Context, ...CredentialsSource) (Credentia } func (c DirectCredentials) Copy() DirectCredentials { - return DirectCredentials(common.Properties(c).Copy()) + return DirectCredentials(misc.Properties(c).Copy()) } func (c DirectCredentials) String() string { - return common.Properties(c).String() + return misc.Properties(c).String() } diff --git a/api/credentials/internal/repotypes.go b/api/credentials/internal/repotypes.go index dafe999f32..59c9df89fa 100644 --- a/api/credentials/internal/repotypes.go +++ b/api/credentials/internal/repotypes.go @@ -4,10 +4,10 @@ import ( "encoding/json" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" "github.com/modern-go/reflect2" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/api/utils/runtime/descriptivetype" ) @@ -38,12 +38,12 @@ type repositoryTypeScheme struct { } func NewRepositoryTypeScheme(defaultDecoder RepositorySpecDecoder, base ...RepositoryTypeScheme) RepositoryTypeScheme { - scheme := descriptivetype.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType, RepositoryTypeScheme]("Credential provider", nil, &UnknownRepositorySpec{}, true, defaultDecoder, utils.Optional(base...)) + scheme := descriptivetype.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType, RepositoryTypeScheme]("Credential provider", nil, &UnknownRepositorySpec{}, true, defaultDecoder, general.Optional(base...)) return &repositoryTypeScheme{scheme} } func NewStrictRepositoryTypeScheme(base ...RepositoryTypeScheme) runtime.VersionedTypeRegistry[RepositorySpec, RepositoryType] { - scheme := descriptivetype.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType, RepositoryTypeScheme]("Credential provider", nil, nil, false, nil, utils.Optional(base...)) + scheme := descriptivetype.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType, RepositoryTypeScheme]("Credential provider", nil, nil, false, nil, general.Optional(base...)) return &repositoryTypeScheme{scheme} } diff --git a/api/datacontext/action/api/action_test.go b/api/datacontext/action/api/action_test.go index a3ba0d119b..c2cb77d674 100644 --- a/api/datacontext/action/api/action_test.go +++ b/api/datacontext/action/api/action_test.go @@ -4,7 +4,7 @@ import ( "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/credentials/identity/hostpath" "ocm.software/ocm/api/datacontext/action/api" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -47,8 +47,8 @@ func (a *ActionSpec) Selector() api.Selector { return api.Selector(a.Field) } -func (a *ActionSpec) GetConsumerAttributes() common.Properties { - return common.Properties(credentials.NewConsumerIdentity(CONSUMER_TYPE, +func (a *ActionSpec) GetConsumerAttributes() misc.Properties { + return misc.Properties(credentials.NewConsumerIdentity(CONSUMER_TYPE, ID_HOSTNAME, a.Field, )) } diff --git a/api/datacontext/action/api/interface.go b/api/datacontext/action/api/interface.go index 545ae79853..0aaf2d0f49 100644 --- a/api/datacontext/action/api/interface.go +++ b/api/datacontext/action/api/interface.go @@ -1,7 +1,7 @@ package api import ( - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -27,7 +27,7 @@ type ActionSpec interface { runtime.VersionedTypedObject SetVersion(string) Selector() Selector - GetConsumerAttributes() common.Properties + GetConsumerAttributes() misc.Properties } type ActionSpecType runtime.VersionedTypedObjectType[ActionSpec] diff --git a/api/datacontext/action/api/registry.go b/api/datacontext/action/api/registry.go index 0657e27014..c4738e0008 100644 --- a/api/datacontext/action/api/registry.go +++ b/api/datacontext/action/api/registry.go @@ -8,7 +8,6 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/maputils" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -68,7 +67,7 @@ func (a *action) GetVersion(v string) ActionType { } func (a *action) SupportedVersions() []string { - return utils.StringMapKeys(a.types) + return maputils.OrderedKeys(a.types) } type actionRegistry struct { diff --git a/api/datacontext/action/api/registry_test.go b/api/datacontext/action/api/registry_test.go index e9c694670d..ebee5c0c6a 100644 --- a/api/datacontext/action/api/registry_test.go +++ b/api/datacontext/action/api/registry_test.go @@ -8,16 +8,16 @@ import ( "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/datacontext/action/api" "ocm.software/ocm/api/datacontext/action/handlers" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) type Handler struct { spec api.ActionSpec - creds common.Properties + creds misc.Properties } -func (h *Handler) Handle(spec api.ActionSpec, creds common.Properties) (api.ActionResult, error) { +func (h *Handler) Handle(spec api.ActionSpec, creds misc.Properties) (api.ActionResult, error) { h.spec = spec h.creds = creds r := NewActionResult(spec.(*ActionSpec).Field) @@ -88,7 +88,7 @@ var _ = Describe("action registry", func() { It("", func() { spec := NewActionSpec("acme.com") - creds := common.Properties{"alice": "bob"} + creds := misc.Properties{"alice": "bob"} r := Must(ctx.GetActions().Execute(spec, creds)) Expect(handler.spec).To(Equal(spec)) Expect(handler.creds).To(Equal(creds)) diff --git a/api/datacontext/action/api/utils.go b/api/datacontext/action/api/utils.go index a6602c45f9..605b573ac6 100644 --- a/api/datacontext/action/api/utils.go +++ b/api/datacontext/action/api/utils.go @@ -1,8 +1,9 @@ package api import ( - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "github.com/mandelsoft/goutils/stringutils" + + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -40,15 +41,15 @@ func (a *actionType) ResultType() ActionResultType { } func Usage(reg ActionTypeRegistry) string { - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() for _, n := range reg.GetActionNames() { a := reg.GetAction(n) p.Printf("- Name: %s\n", n) if a.Description() != "" { - p.Printf("%s\n", utils.IndentLines(a.Description(), " ")) + p.Printf("%s\n", stringutils.IndentLines(a.Description(), " ")) } if a.Usage() != "" { - p.Printf("\n%s\n", utils.IndentLines(a.Usage(), " ")) + p.Printf("\n%s\n", stringutils.IndentLines(a.Usage(), " ")) } p := p.AddGap(" ") diff --git a/api/datacontext/action/handlers/registry.go b/api/datacontext/action/handlers/registry.go index 5a22fc7fbc..42c24b25a7 100644 --- a/api/datacontext/action/handlers/registry.go +++ b/api/datacontext/action/handlers/registry.go @@ -12,8 +12,7 @@ import ( "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/datacontext/action/api" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/registrations" "ocm.software/ocm/api/utils/semverutils" ) @@ -31,7 +30,7 @@ type ActionsProvider interface { } type ActionHandler interface { - Handle(api.ActionSpec, common.Properties) (api.ActionResult, error) + Handle(api.ActionSpec, misc.Properties) (api.ActionResult, error) } type ActionHandlerMatch struct { @@ -57,7 +56,7 @@ type Registry interface { GetActionTypes() api.ActionTypeRegistry Register(h ActionHandler, opts ...Option) error - Execute(spec api.ActionSpec, creds common.Properties) (api.ActionResult, error) + Execute(spec api.ActionSpec, creds misc.Properties) (api.ActionResult, error) Get(spec api.ActionSpec, possible ...string) []ActionHandlerMatch AddTo(t Registry) } @@ -86,7 +85,7 @@ type registry struct { var _ Registry = (*registry)(nil) func NewRegistry(types api.ActionTypeRegistry, base ...Registry) Registry { - b := utils.Optional(base...) + b := general.Optional(base...) if types == nil { if b == nil { types = api.DefaultRegistry() @@ -156,7 +155,7 @@ func (r *registry) Register(h ActionHandler, olist ...Option) error { return nil } -func (r *registry) Execute(spec api.ActionSpec, creds common.Properties) (api.ActionResult, error) { +func (r *registry) Execute(spec api.ActionSpec, creds misc.Properties) (api.ActionResult, error) { result := r.Get(spec) sort.SliceStable(result, func(a, b int) bool { return result[a].Priority < result[b].Priority diff --git a/api/datacontext/attrs.go b/api/datacontext/attrs.go index 80cc13e496..78867e70e1 100644 --- a/api/datacontext/attrs.go +++ b/api/datacontext/attrs.go @@ -6,7 +6,7 @@ import ( "github.com/mandelsoft/goutils/errors" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -33,7 +33,7 @@ type AttributeScheme interface { GetType(attr string) (AttributeType, error) AddKnownTypes(scheme AttributeScheme) - Shortcuts() common.Properties + Shortcuts() misc.Properties KnownTypes() KnownTypes KnownTypeNames() []string } @@ -65,13 +65,13 @@ func (t KnownTypes) TypeNames() []string { type defaultScheme struct { lock sync.RWMutex types KnownTypes - short common.Properties + short misc.Properties } func NewDefaultAttributeScheme() AttributeScheme { return &defaultScheme{ types: KnownTypes{}, - short: common.Properties{}, + short: misc.Properties{}, } } @@ -92,7 +92,7 @@ func (d *defaultScheme) KnownTypes() KnownTypes { return d.types.Copy() } -func (d *defaultScheme) Shortcuts() common.Properties { +func (d *defaultScheme) Shortcuts() misc.Properties { d.lock.RLock() defer d.lock.RUnlock() return d.short.Copy() diff --git a/api/datacontext/attrs/rootcertsattr/config.go b/api/datacontext/attrs/rootcertsattr/config.go index 4a2fd9b3b6..f284703dc3 100644 --- a/api/datacontext/attrs/rootcertsattr/config.go +++ b/api/datacontext/attrs/rootcertsattr/config.go @@ -4,11 +4,11 @@ import ( "sync" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/vfs/pkg/vfs" cfgcpi "ocm.software/ocm/api/config/cpi" "ocm.software/ocm/api/tech/signing/signutils" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -40,7 +40,7 @@ func (a *Config) GetType() string { } func (a *Config) AddRootCertificateFile(name string, fss ...vfs.FileSystem) { - a.RootCertificates = append(a.RootCertificates, cfgcpi.ContentSpec{Path: name, FileSystem: utils.Optional(fss...)}) + a.RootCertificates = append(a.RootCertificates, cfgcpi.ContentSpec{Path: name, FileSystem: general.Optional(fss...)}) } func (a *Config) AddRootCertificateData(data []byte) { diff --git a/api/datacontext/context.go b/api/datacontext/context.go index 32414a07e3..d8151a0cd1 100644 --- a/api/datacontext/context.go +++ b/api/datacontext/context.go @@ -9,18 +9,18 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/finalizer" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/logging" "ocm.software/ocm/api/datacontext/action/handlers" - "ocm.software/ocm/api/utils" ocmlog "ocm.software/ocm/api/utils/logging" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/api/utils/runtimefinalizer" ) -const OCM_CONTEXT_SUFFIX = ".context" + common.OCM_TYPE_GROUP_SUFFIX +const OCM_CONTEXT_SUFFIX = ".context" + misc.OCM_TYPE_GROUP_SUFFIX // BuilderMode controls the handling of unset information in the // builder configuration when calling the New method. @@ -64,7 +64,7 @@ func (m BuilderMode) String() string { } func Mode(m ...BuilderMode) BuilderMode { - return utils.OptionalDefaulted(MODE_EXTENDED, m...) + return general.OptionalDefaulted(MODE_EXTENDED, m...) } type ContextIdentity = runtimefinalizer.ObjectIdentity @@ -218,7 +218,7 @@ type gcWrapper struct { } func newView(c *_context, ref ...bool) AttributesContext { - if utils.Optional(ref...) { + if general.Optional(ref...) { return FinalizedContext[gcWrapper](c) } return c @@ -235,7 +235,7 @@ var ( // New provides a root attribute context. func New(parentAttrs ...Attributes) AttributesContext { - return NewWithActions(utils.Optional(parentAttrs...), handlers.NewRegistry(nil, handlers.DefaultRegistry())) + return NewWithActions(general.Optional(parentAttrs...), handlers.NewRegistry(nil, handlers.DefaultRegistry())) } func NewWithActions(parentAttrs Attributes, actions handlers.Registry) AttributesContext { @@ -339,7 +339,7 @@ func (c *_attributes) GetAttribute(name string, def ...interface{}) interface{} return a } } - return utils.Optional(def...) + return general.Optional(def...) } func (c *_attributes) SetEncodedAttribute(name string, data []byte, unmarshaller runtime.Unmarshaler) error { diff --git a/api/helper/builder/builder.go b/api/helper/builder/builder.go index afaf600ad3..96de631cf5 100644 --- a/api/helper/builder/builder.go +++ b/api/helper/builder/builder.go @@ -2,6 +2,7 @@ package builder import ( "github.com/mandelsoft/goutils/exception" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/vfs/pkg/osfs" "github.com/modern-go/reflect2" "github.com/onsi/ginkgo/v2" @@ -12,7 +13,6 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/blobaccess/blobaccess" ) @@ -151,11 +151,11 @@ func (b *Builder) expect(p interface{}, msg string, tests ...func() bool) { } func (b *Builder) fail(msg string, callerSkip ...int) { - b.Fail(msg, utils.Optional(callerSkip...)+2) + b.Fail(msg, general.Optional(callerSkip...)+2) } func (b *Builder) failOn(err error, callerSkip ...int) { - b.FailOnErr(err, "", utils.Optional(callerSkip...)+2) + b.FailOnErr(err, "", general.Optional(callerSkip...)+2) } func (b *Builder) peek() element { @@ -186,7 +186,7 @@ func (b *Builder) configure(e element, funcs []func(), skip ...int) interface{} b.Configure(funcs...) err := b.pop().Close() if err != nil { - b.fail(err.Error(), utils.Optional(skip...)+1) + b.fail(err.Error(), general.Optional(skip...)+1) } return e.Result() } diff --git a/api/helper/builder/rsa_keypair.go b/api/helper/builder/rsa_keypair.go index 8daf449563..7957ff1dae 100644 --- a/api/helper/builder/rsa_keypair.go +++ b/api/helper/builder/rsa_keypair.go @@ -2,11 +2,11 @@ package builder import ( "github.com/mandelsoft/filepath/pkg/filepath" + "github.com/mandelsoft/goutils/ioutils" "ocm.software/ocm/api/ocm/extensions/attrs/signingattr" "ocm.software/ocm/api/tech/signing/handlers/rsa" "ocm.software/ocm/api/tech/signing/signutils" - "ocm.software/ocm/api/utils" ) // TODO: switch to context local setting. @@ -23,7 +23,7 @@ func (b *Builder) RSAKeyPair(name ...string) { func (b *Builder) ReadRSAKeyPair(name, path string) { reg := signingattr.Get(b.OCMContext()) pubfound := false - path, _ = utils.ResolvePath(path) + path, _ = ioutils.ResolvePath(path) if ok, _ := b.Exists(filepath.Join(path, "rsa.pub")); ok { pubbytes, err := b.ReadFile(filepath.Join(path, "rsa.pub")) b.failOn(err) diff --git a/api/helper/env/env.go b/api/helper/env/env.go index b36bed6dfb..8fed251b08 100644 --- a/api/helper/env/env.go +++ b/api/helper/env/env.go @@ -25,7 +25,6 @@ import ( "ocm.software/ocm/api/datacontext/attrs/vfsattr" "ocm.software/ocm/api/oci" ocm "ocm.software/ocm/api/ocm/cpi" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" ) @@ -132,7 +131,7 @@ type fsOpt struct { func FileSystem(fs vfs.FileSystem, path ...string) Option { return fsOpt{ - path: utils.Optional(path...), + path: general.Optional(path...), fs: fs, } } @@ -239,7 +238,7 @@ func projectTestData(modifiable bool, source string, dest ...string) Option { } pathToTestdata := filepath.Join(pathToRoot, source) - return testData(modifiable, pathToTestdata, general.OptionalDefaulted("/testdata", dest...)) + return testData(modifiable, pathToTestdata, general.OptionalNonZeroDefaulted("/testdata", dest...)) } func ProjectTestData(source string, dest ...string) Option { @@ -472,7 +471,7 @@ func (e *Environment) FileSystem() vfs.FileSystem { } func ExceptionFailHandler(msg string, callerSkip ...int) { - skip := utils.Optional(callerSkip...) + 1 + skip := general.Optional(callerSkip...) + 1 st, _ := gostackparse.Parse(bytes.NewReader(debug.Stack())) if st == nil { exception.Throw(fmt.Errorf("%s", msg)) @@ -486,7 +485,7 @@ func ExceptionFailHandler(msg string, callerSkip ...int) { // by default a fail handler throwing an exception // is set. func (e *Environment) SetFailHandler(h ...FailHandler) *Environment { - e.failhandler = utils.OptionalDefaulted(FailHandler(ExceptionFailHandler), h...) + e.failhandler = general.OptionalDefaulted(FailHandler(ExceptionFailHandler), h...) return e } @@ -504,14 +503,14 @@ func (e *Environment) FailOnErr(err error, msg string, callerSkip ...int) { func (e *Environment) fail(msg string, callerSkip ...int) { fh := e.failhandler if fh == nil { - ExceptionFailHandler(msg, utils.Optional(callerSkip...)+2) + ExceptionFailHandler(msg, general.Optional(callerSkip...)+2) } else { - fh(msg, utils.Optional(callerSkip...)+2) + fh(msg, general.Optional(callerSkip...)+2) } } func (e *Environment) failOn(err error, callerSkip ...int) { if err != nil { - e.fail(err.Error(), utils.Optional(callerSkip...)+1) + e.fail(err.Error(), general.Optional(callerSkip...)+1) } } diff --git a/api/helper/env/keypair.go b/api/helper/env/keypair.go index a9139b95b4..792969f4c7 100644 --- a/api/helper/env/keypair.go +++ b/api/helper/env/keypair.go @@ -2,11 +2,11 @@ package env import ( "github.com/mandelsoft/filepath/pkg/filepath" + "github.com/mandelsoft/goutils/ioutils" "ocm.software/ocm/api/ocm/extensions/attrs/signingattr" "ocm.software/ocm/api/tech/signing/handlers/rsa" "ocm.software/ocm/api/tech/signing/signutils" - "ocm.software/ocm/api/utils" ) func (e *Environment) RSAKeyPair(name ...string) { @@ -22,7 +22,7 @@ func (e *Environment) RSAKeyPair(name ...string) { func (e *Environment) ReadRSAKeyPair(name, path string) { reg := signingattr.Get(e.OCMContext()) pubfound := false - path, _ = utils.ResolvePath(path) + path, _ = ioutils.ResolvePath(path) if ok, _ := e.Exists(filepath.Join(path, "rsa.pub")); ok { pubbytes, err := e.ReadFile(filepath.Join(path, "rsa.pub")) e.failOn(err) diff --git a/api/oci/cpi/view.go b/api/oci/cpi/view.go index c32e7a14c8..36eaef69f7 100644 --- a/api/oci/cpi/view.go +++ b/api/oci/cpi/view.go @@ -5,6 +5,7 @@ import ( "io" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/opencontainers/go-digest" "ocm.software/ocm/api/credentials" @@ -72,7 +73,7 @@ func repositoryViewCreator(i RepositoryImpl, v resource.CloserView, d Repository } func NewRepository(impl RepositoryImpl, name ...string) Repository { - return resource.NewResource[Repository](impl, repositoryViewCreator, utils.OptionalDefaulted("OCI repo", name...), true) + return resource.NewResource[Repository](impl, repositoryViewCreator, general.OptionalNonZeroDefaulted("OCI repo", name...), true) } func (r *repositoryView) GetConsumerId(uctx ...credentials.UsageContext) credentials.ConsumerIdentity { @@ -179,7 +180,7 @@ func namespaceAccessViewCreator(i NamespaceAccessImpl, v resource.CloserView, d } func NewNamespaceAccess(impl NamespaceAccessImpl, kind ...string) NamespaceAccess { - return resource.NewResource[NamespaceAccess](impl, namespaceAccessViewCreator, fmt.Sprintf("%s %s", utils.OptionalDefaulted("namespace", kind...), impl.GetNamespace()), true) + return resource.NewResource[NamespaceAccess](impl, namespaceAccessViewCreator, fmt.Sprintf("%s %s", general.OptionalNonZeroDefaulted("namespace", kind...), impl.GetNamespace()), true) } func (n *namespaceAccessView) GetNamespace() string { diff --git a/api/oci/extensions/actions/oci-repository-prepare/exec.go b/api/oci/extensions/actions/oci-repository-prepare/exec.go index cb2b753679..982f5882a5 100644 --- a/api/oci/extensions/actions/oci-repository-prepare/exec.go +++ b/api/oci/extensions/actions/oci-repository-prepare/exec.go @@ -4,9 +4,9 @@ import ( "github.com/mandelsoft/goutils/generics" "ocm.software/ocm/api/datacontext/action/handlers" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) -func Execute(hdlrs handlers.Registry, host, repo string, creds common.Properties) (*ActionResult, error) { +func Execute(hdlrs handlers.Registry, host, repo string, creds misc.Properties) (*ActionResult, error) { return generics.CastR[*ActionResult](hdlrs.Execute(Spec(host, repo), creds)) } diff --git a/api/oci/extensions/actions/oci-repository-prepare/type.go b/api/oci/extensions/actions/oci-repository-prepare/type.go index 4218f6862e..8fd4e0846b 100644 --- a/api/oci/extensions/actions/oci-repository-prepare/type.go +++ b/api/oci/extensions/actions/oci-repository-prepare/type.go @@ -7,7 +7,7 @@ import ( "ocm.software/ocm/api/datacontext/action/api" "ocm.software/ocm/api/tech/oci/identity" "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -66,9 +66,9 @@ func (s *ActionSpecV1) Selector() api.Selector { return api.Selector(s.Hostname) } -func (s *ActionSpecV1) GetConsumerAttributes() common.Properties { +func (s *ActionSpecV1) GetConsumerAttributes() misc.Properties { host, port, base := utils.SplitLocator(s.Hostname) - return common.Properties{ + return misc.Properties{ cpi.ID_TYPE: identity.CONSUMER_TYPE, identity.ID_HOSTNAME: host, identity.ID_PATHPREFIX: path.Join(base, s.Repository), diff --git a/api/oci/extensions/attrs/cacheattr/attr.go b/api/oci/extensions/attrs/cacheattr/attr.go index 0544232079..64e9be9307 100644 --- a/api/oci/extensions/attrs/cacheattr/attr.go +++ b/api/oci/extensions/attrs/cacheattr/attr.go @@ -5,9 +5,9 @@ import ( "os" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/ioutils" "ocm.software/ocm/api/datacontext" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/runtime" ) @@ -45,7 +45,7 @@ func (a AttributeType) Decode(data []byte, unmarshaller runtime.Unmarshaler) (in var value string err := unmarshaller.Unmarshal(data, &value) if value != "" { - value, err = utils.ResolvePath(value) + value, err = ioutils.ResolvePath(value) if err != nil { return nil, err } diff --git a/api/oci/extensions/repositories/docker/type.go b/api/oci/extensions/repositories/docker/type.go index 8fd2ade17a..40d789e705 100644 --- a/api/oci/extensions/repositories/docker/type.go +++ b/api/oci/extensions/repositories/docker/type.go @@ -3,11 +3,11 @@ package docker import ( "context" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/logging" "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/oci/cpi" - "ocm.software/ocm/api/utils" ocmlog "ocm.software/ocm/api/utils/logging" "ocm.software/ocm/api/utils/runtime" ) @@ -32,7 +32,7 @@ type RepositorySpec struct { func NewRepositorySpec(host ...string) *RepositorySpec { return &RepositorySpec{ ObjectVersionedType: runtime.NewVersionedTypedObject(Type), - DockerHost: utils.Optional(host...), + DockerHost: general.OptionalNonZero(host...), } } diff --git a/api/oci/extensions/repositories/ocireg/namespace.go b/api/oci/extensions/repositories/ocireg/namespace.go index d48786c276..f6fe75b60a 100644 --- a/api/oci/extensions/repositories/ocireg/namespace.go +++ b/api/oci/extensions/repositories/ocireg/namespace.go @@ -16,7 +16,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/logging" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type NamespaceContainer struct { @@ -179,7 +179,7 @@ func (n *NamespaceContainer) assureCreated() error { if n.checked { return nil } - var props common.Properties + var props misc.Properties if creds, err := n.repo.getCreds(n.impl.GetNamespace()); err == nil && creds != nil { props = creds.Properties() } diff --git a/api/oci/extensions/repositories/ocireg/repository.go b/api/oci/extensions/repositories/ocireg/repository.go index 37fd892730..547463e02d 100644 --- a/api/oci/extensions/repositories/ocireg/repository.go +++ b/api/oci/extensions/repositories/ocireg/repository.go @@ -10,6 +10,7 @@ import ( "github.com/containerd/errdefs" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/logging" "github.com/moby/locker" "oras.land/oras-go/v2/registry/remote/auth" @@ -91,7 +92,7 @@ func (r *RepositoryImpl) Close() error { } func (r *RepositoryImpl) GetConsumerId(uctx ...credentials.UsageContext) credentials.ConsumerIdentity { - if c, ok := utils.Optional(uctx...).(credentials.StringUsageContext); ok { + if c, ok := general.Optional(uctx...).(credentials.StringUsageContext); ok { return identity.GetConsumerId(r.info.Locator, c.String()) } return identity.GetConsumerId(r.info.Locator, "") diff --git a/api/oci/extensions/repositories/ocireg/type.go b/api/oci/extensions/repositories/ocireg/type.go index 00bba2ced4..e623fb8a82 100644 --- a/api/oci/extensions/repositories/ocireg/type.go +++ b/api/oci/extensions/repositories/ocireg/type.go @@ -7,11 +7,11 @@ import ( "time" "github.com/containerd/containerd/reference" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/oci/cpi" "ocm.software/ocm/api/tech/oci/identity" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/api/utils/tcp" ) @@ -147,7 +147,7 @@ func (a *RepositorySpec) GetConsumerId(uctx ...credentials.UsageContext) credent if err != nil { return nil } - if c, ok := utils.Optional(uctx...).(credentials.StringUsageContext); ok { + if c, ok := general.Optional(uctx...).(credentials.StringUsageContext); ok { return identity.GetConsumerId(info.Locator, c.String()) } return identity.GetConsumerId(info.Locator, "") diff --git a/api/oci/internal/context.go b/api/oci/internal/context.go index 883d8caac1..d086b81a92 100644 --- a/api/oci/internal/context.go +++ b/api/oci/internal/context.go @@ -5,11 +5,12 @@ import ( "reflect" "strings" + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/config" cfgcpi "ocm.software/ocm/api/config/cpi" "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/datacontext" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -96,7 +97,7 @@ type gcWrapper struct { } func newView(c *_context, ref ...bool) Context { - if utils.Optional(ref...) { + if general.Optional(ref...) { return datacontext.FinalizedContext[gcWrapper](c) } return c diff --git a/api/oci/internal/repotypes.go b/api/oci/internal/repotypes.go index cb2024aeb8..0cf1917a92 100644 --- a/api/oci/internal/repotypes.go +++ b/api/oci/internal/repotypes.go @@ -4,11 +4,11 @@ import ( "encoding/json" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" "github.com/modern-go/reflect2" "ocm.software/ocm/api/credentials" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -46,12 +46,12 @@ type repositoryTypeScheme struct { } func NewRepositoryTypeScheme(defaultDecoder RepositorySpecDecoder, base ...RepositoryTypeScheme) RepositoryTypeScheme { - scheme := runtime.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType](&UnknownRepositorySpec{}, true, defaultDecoder, utils.Optional(base...)) + scheme := runtime.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType](&UnknownRepositorySpec{}, true, defaultDecoder, general.Optional(base...)) return &repositoryTypeScheme{scheme} } func NewStrictRepositoryTypeScheme(base ...RepositoryTypeScheme) runtime.VersionedTypeRegistry[RepositorySpec, RepositoryType] { - scheme := runtime.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType](nil, false, nil, utils.Optional(base...)) + scheme := runtime.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType](nil, false, nil, general.Optional(base...)) return &repositoryTypeScheme{scheme} } diff --git a/api/oci/ociutils/handler.go b/api/oci/ociutils/handler.go index ff3cc687fe..a059a1d4e3 100644 --- a/api/oci/ociutils/handler.go +++ b/api/oci/ociutils/handler.go @@ -4,11 +4,11 @@ import ( "sync" "ocm.software/ocm/api/oci/cpi" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type InfoHandler interface { - Description(pr common.Printer, m cpi.ManifestAccess, config []byte) + Description(pr misc.Printer, m cpi.ManifestAccess, config []byte) Info(m cpi.ManifestAccess, config []byte) interface{} } diff --git a/api/oci/ociutils/info.go b/api/oci/ociutils/info.go index 6d449e5347..ff0466dcb8 100644 --- a/api/oci/ociutils/info.go +++ b/api/oci/ociutils/info.go @@ -15,7 +15,7 @@ import ( "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/compression" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type BlobInfo struct { @@ -73,7 +73,7 @@ func GetManifestInfo(m cpi.ManifestAccess, layerFiles bool) *ArtifactInfo { h := getHandler(man.Config.MediaType) if h != nil { - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() h.Description(pr, m, config) cfg.Info = buf.String() } diff --git a/api/oci/ociutils/print.go b/api/oci/ociutils/print.go index c10a6a8a81..5f82065361 100644 --- a/api/oci/ociutils/print.go +++ b/api/oci/ociutils/print.go @@ -8,16 +8,17 @@ import ( "io" "strings" + "github.com/mandelsoft/goutils/maputils" + "ocm.software/ocm/api/oci/artdesc" "ocm.software/ocm/api/oci/cpi" "ocm.software/ocm/api/tech/signing" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/compression" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) -func PrintArtifact(pr common.Printer, art cpi.ArtifactAccess, listFiles bool) { +func PrintArtifact(pr misc.Printer, art cpi.ArtifactAccess, listFiles bool) { if art.IsManifest() { pr.Printf("type: %s\n", artdesc.MediaTypeImageManifest) PrintManifest(pr, art.ManifestAccess(), listFiles) @@ -31,7 +32,7 @@ func PrintArtifact(pr common.Printer, art cpi.ArtifactAccess, listFiles bool) { pr.Printf("unspecific\n") } -func PrintManifest(pr common.Printer, m cpi.ManifestAccess, listFiles bool) { +func PrintManifest(pr misc.Printer, m cpi.ManifestAccess, listFiles bool) { data, err := blobaccess.BlobData(m.Blob()) if err != nil { pr.Printf("descriptor: invalid: %s\n", err) @@ -70,7 +71,7 @@ func PrintManifest(pr common.Printer, m cpi.ManifestAccess, listFiles bool) { } } -func PrintLayer(pr common.Printer, blob blobaccess.BlobAccess, listFiles bool) { +func PrintLayer(pr misc.Printer, blob blobaccess.BlobAccess, listFiles bool) { reader, err := blob.Reader() if err != nil { pr.Printf("cannot read blob: %s\n", err.Error()) @@ -114,7 +115,7 @@ func PrintLayer(pr common.Printer, blob blobaccess.BlobAccess, listFiles bool) { } } -func PrintIndex(pr common.Printer, i cpi.IndexAccess, listFiles bool) { +func PrintIndex(pr misc.Printer, i cpi.IndexAccess, listFiles bool) { data, err := blobaccess.BlobData(i.Blob()) if err != nil { pr.Printf("descriptor: invalid: %s\n", err) @@ -148,17 +149,17 @@ func PrintIndex(pr common.Printer, i cpi.IndexAccess, listFiles bool) { } } -func optS(pr common.Printer, key string, value string) { +func optS(pr misc.Printer, key string, value string) { if value != "" { desc := strings.Replace(key, " ", ":", 1) pr.Printf("%s %s\n", desc, value) } } -func printAnnotations(pr common.Printer, annos map[string]string) { +func printAnnotations(pr misc.Printer, annos map[string]string) { if len(annos) > 0 { pr.Printf("annotations:\n") - keys := utils.StringMapKeys(annos) + keys := maputils.OrderedKeys(annos) l := 0 for _, k := range keys { if len(k) > l { diff --git a/api/oci/ociutils/ref.go b/api/oci/ociutils/ref.go index b419e30a3d..490e98dca0 100644 --- a/api/oci/ociutils/ref.go +++ b/api/oci/ociutils/ref.go @@ -27,7 +27,7 @@ func ParseVersion(vers string) (*ArtVersion, error) { return nil, err } return &ArtVersion{ - Tag: generics.Pointer(vers[:i]), + Tag: generics.PointerTo(vers[:i]), Digest: &dig, }, nil } diff --git a/api/oci/ref_test.go b/api/oci/ref_test.go index c95850ef03..3e27c072d5 100644 --- a/api/oci/ref_test.go +++ b/api/oci/ref_test.go @@ -848,7 +848,7 @@ var _ = Describe("ref parsing", func() { v := Must(oci.ParseVersion("tag")) Expect(v).To(Equal(&oci.ArtVersion{ - Tag: generics.Pointer("tag"), + Tag: generics.PointerTo("tag"), Digest: nil, })) }) @@ -858,7 +858,7 @@ var _ = Describe("ref parsing", func() { Expect(v).To(Equal(&oci.ArtVersion{ Tag: nil, - Digest: generics.Pointer(godigest.Digest("sha256:3d05e105e350edf5be64fe356f4906dd3f9bf442a279e4142db9879bba8e677a")), + Digest: generics.PointerTo(godigest.Digest("sha256:3d05e105e350edf5be64fe356f4906dd3f9bf442a279e4142db9879bba8e677a")), })) }) @@ -866,8 +866,8 @@ var _ = Describe("ref parsing", func() { v := Must(oci.ParseVersion("tag@sha256:3d05e105e350edf5be64fe356f4906dd3f9bf442a279e4142db9879bba8e677a")) Expect(v).To(Equal(&oci.ArtVersion{ - Tag: generics.Pointer("tag"), - Digest: generics.Pointer(godigest.Digest("sha256:3d05e105e350edf5be64fe356f4906dd3f9bf442a279e4142db9879bba8e677a")), + Tag: generics.PointerTo("tag"), + Digest: generics.PointerTo(godigest.Digest("sha256:3d05e105e350edf5be64fe356f4906dd3f9bf442a279e4142db9879bba8e677a")), })) }) }) diff --git a/api/oci/tools/transfer/filters/filter.go b/api/oci/tools/transfer/filters/filter.go index 486b083db3..035dfd927e 100644 --- a/api/oci/tools/transfer/filters/filter.go +++ b/api/oci/tools/transfer/filters/filter.go @@ -3,11 +3,11 @@ package filters import ( "encoding/json" + "github.com/mandelsoft/goutils/general" ociv1 "github.com/opencontainers/image-spec/specs-go/v1" "ocm.software/ocm/api/oci/artdesc" "ocm.software/ocm/api/oci/cpi" - "ocm.software/ocm/api/utils" ) type Filter interface { @@ -88,7 +88,7 @@ type platform struct { } func Platform(os string, arch string, excl ...bool) Filter { - return &platform{os, arch, utils.Optional(excl...)} + return &platform{os, arch, general.Optional(excl...)} } func (f *platform) Accept(art cpi.ArtifactAccess, platform *artdesc.Platform) bool { diff --git a/api/oci/tools/transfer/transfer.go b/api/oci/tools/transfer/transfer.go index e3d2f1912f..1575a792f6 100644 --- a/api/oci/tools/transfer/transfer.go +++ b/api/oci/tools/transfer/transfer.go @@ -23,7 +23,7 @@ func TransferArtifactWithFilter(art cpi.ArtifactAccess, set cpi.ArtifactSink, fi if filter != nil && !filter.Accept(art, nil) { return nil, errors.ErrNoMatch(cpi.KIND_OCIARTIFACT, art.Digest().String()) } - return generics.Pointer(art.Digest()), TransferManifest(art.ManifestAccess(), set, tags...) + return generics.PointerTo(art.Digest()), TransferManifest(art.ManifestAccess(), set, tags...) } } @@ -74,7 +74,7 @@ func TransferIndexWithFilter(art cpi.IndexAccess, set cpi.ArtifactSink, filter f if err != nil { return nil, errors.Wrapf(err, "transferring indexed artifact %s", l.Digest) } - dig = generics.Pointer(l.Digest) + dig = generics.PointerTo(l.Digest) } else { index.Manifests = append(index.Manifests[:i-ign], index.Manifests[i-ign+1:]...) ign++ @@ -104,7 +104,7 @@ func TransferIndexWithFilter(art cpi.IndexAccess, set cpi.ArtifactSink, filter f if err != nil { return nil, errors.Wrapf(err, "transferring index artifact") } - return generics.Pointer(modified.Digest()), err + return generics.PointerTo(modified.Digest()), err } func TransferManifest(art cpi.ManifestAccess, set cpi.ArtifactSink, tags ...string) (err error) { diff --git a/api/ocm/compdesc/generic.go b/api/ocm/compdesc/generic.go index e9a37171bb..d86e3c50c3 100644 --- a/api/ocm/compdesc/generic.go +++ b/api/ocm/compdesc/generic.go @@ -14,7 +14,7 @@ var ( ) func (g GenericComponentDescriptor) MarshalJSON() ([]byte, error) { - return Encode(generics.Pointer(ComponentDescriptor(g)), DefaultJSONCodec) + return Encode(generics.PointerTo(ComponentDescriptor(g)), DefaultJSONCodec) } func (g *GenericComponentDescriptor) UnmarshalJSON(bytes []byte) error { diff --git a/api/ocm/compdesc/resolver.go b/api/ocm/compdesc/resolver.go index 791533ff94..d9a800e55a 100644 --- a/api/ocm/compdesc/resolver.go +++ b/api/ocm/compdesc/resolver.go @@ -5,7 +5,7 @@ import ( "github.com/mandelsoft/goutils/errors" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type ComponentVersionResolver interface { @@ -16,15 +16,15 @@ type ComponentVersionResolver interface { type ComponentVersionSet struct { lock sync.RWMutex - cds map[common.NameVersion]*ComponentDescriptor + cds map[misc.NameVersion]*ComponentDescriptor } var _ ComponentVersionResolver = (*ComponentVersionSet)(nil) func NewComponentVersionSet(cds ...*ComponentDescriptor) *ComponentVersionSet { - r := map[common.NameVersion]*ComponentDescriptor{} + r := map[misc.NameVersion]*ComponentDescriptor{} for _, cd := range cds { - r[common.NewNameVersion(cd.Name, cd.Version)] = cd.Copy() + r[misc.NewNameVersion(cd.Name, cd.Version)] = cd.Copy() } return &ComponentVersionSet{cds: r} } @@ -33,7 +33,7 @@ func (c *ComponentVersionSet) LookupComponentVersion(name string, version string c.lock.RLock() defer c.lock.RUnlock() - nv := common.NewNameVersion(name, version) + nv := misc.NewNameVersion(name, version) cd := c.cds[nv] if cd == nil { @@ -46,7 +46,7 @@ func (c *ComponentVersionSet) AddVersion(cd *ComponentDescriptor) { c.lock.Lock() defer c.lock.Unlock() - c.cds[common.NewNameVersion(cd.Name, cd.Version)] = cd.Copy() + c.cds[misc.NewNameVersion(cd.Name, cd.Version)] = cd.Copy() } //////////////////////////////////////////////////////////////////////////////// @@ -86,7 +86,7 @@ func (c *CompoundResolver) LookupComponentVersion(name string, version string) ( return nil, err } } - return nil, errors.ErrNotFound(KIND_REFERENCE, common.NewNameVersion(name, version).String()) + return nil, errors.ErrNotFound(KIND_REFERENCE, misc.NewNameVersion(name, version).String()) } func (c *CompoundResolver) AddResolver(r ComponentVersionResolver) { diff --git a/api/ocm/compdesc/resourceref.go b/api/ocm/compdesc/resourceref.go index 13abe4db73..4909f9d116 100644 --- a/api/ocm/compdesc/resourceref.go +++ b/api/ocm/compdesc/resourceref.go @@ -6,7 +6,7 @@ import ( "github.com/mandelsoft/goutils/errors" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) func ResolveReferencePath(cv *ComponentDescriptor, path []metav1.Identity, resolver ComponentVersionResolver) (*ComponentDescriptor, error) { @@ -18,7 +18,7 @@ func ResolveReferencePath(cv *ComponentDescriptor, path []metav1.Identity, resol for _, cr := range path { cref, err := eff.GetReferenceByIdentity(cr) if err != nil { - return nil, errors.Wrapf(err, "%s", common.VersionedElementKey(cv)) + return nil, errors.Wrapf(err, "%s", misc.VersionedElementKey(cv)) } compoundResolver := NewCompoundResolver(NewComponentVersionSet(cv), resolver) diff --git a/api/ocm/cpi/accspeccpi/method.go b/api/ocm/cpi/accspeccpi/method.go index 84f077c001..d498851f0c 100644 --- a/api/ocm/cpi/accspeccpi/method.go +++ b/api/ocm/cpi/accspeccpi/method.go @@ -4,9 +4,9 @@ import ( "io" "sync" + "github.com/mandelsoft/goutils/general" "github.com/opencontainers/go-digest" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess/blobaccess" ) @@ -43,7 +43,7 @@ func NewDefaultMethodImpl(c ComponentVersionAccess, a AccessSpec, digest digest. mime: mime, digest: digest, factory: fac, - local: utils.Optional(local...), + local: general.Optional(local...), } } @@ -63,7 +63,7 @@ func NewDefaultMethodImplForBlobAccess(c ComponentVersionAccess, a AccessSpec, d mime: blob.MimeType(), digest: digest, factory: nil, - local: utils.Optional(local...), + local: general.Optional(local...), }, nil } diff --git a/api/ocm/cpi/repocpi/backend.go b/api/ocm/cpi/repocpi/backend.go index a2984b5ccf..4b956d96d9 100644 --- a/api/ocm/cpi/repocpi/backend.go +++ b/api/ocm/cpi/repocpi/backend.go @@ -5,11 +5,11 @@ import ( "sync/atomic" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/ocm/compdesc" "ocm.software/ocm/api/ocm/cpi" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" ) @@ -29,15 +29,15 @@ type StorageBackendImpl interface { // IsReadOnly returns readonly mode for repo, // if key is given for the dedicated component version access. - IsReadOnly(key ...common.NameVersion) bool + IsReadOnly(key ...misc.NameVersion) bool // SetReadOnly sets readonly mode for repo, // if key is given for the dedicated component version access. - SetReadOnly(key ...common.NameVersion) + SetReadOnly(key ...misc.NameVersion) ComponentLister() cpi.ComponentLister HasComponent(name string) (bool, error) - HasComponentVersion(key common.NameVersion) (bool, error) + HasComponentVersion(key misc.NameVersion) (bool, error) // component related methods. @@ -46,12 +46,12 @@ type StorageBackendImpl interface { // version related methods. - GetDescriptor(key common.NameVersion) (*compdesc.ComponentDescriptor, error) - SetDescriptor(key common.NameVersion, descriptor *compdesc.ComponentDescriptor) (bool, error) - AccessMethod(key common.NameVersion, acc cpi.AccessSpec, cv refmgmt.ExtendedAllocatable) (cpi.AccessMethod, error) - GetStorageContext(key common.NameVersion) cpi.StorageContext - GetBlob(key common.NameVersion, name string) (cpi.DataAccess, error) - AddBlob(key common.NameVersion, blob cpi.BlobAccess, refName string, global cpi.AccessSpec) (cpi.AccessSpec, error) + GetDescriptor(key misc.NameVersion) (*compdesc.ComponentDescriptor, error) + SetDescriptor(key misc.NameVersion, descriptor *compdesc.ComponentDescriptor) (bool, error) + AccessMethod(key misc.NameVersion, acc cpi.AccessSpec, cv refmgmt.ExtendedAllocatable) (cpi.AccessMethod, error) + GetStorageContext(key misc.NameVersion) cpi.StorageContext + GetBlob(key misc.NameVersion, name string) (cpi.DataAccess, error) + AddBlob(key misc.NameVersion, blob cpi.BlobAccess, refName string, global cpi.AccessSpec) (cpi.AccessSpec, error) } type storageBackendRepository struct { @@ -114,7 +114,7 @@ func (s *storageBackendRepository) ComponentLister() cpi.ComponentLister { } func (s *storageBackendRepository) ExistsComponentVersion(name string, version string) (bool, error) { - return s.impl.HasComponentVersion(common.NewNameVersion(name, version)) + return s.impl.HasComponentVersion(misc.NewNameVersion(name, version)) } func (s *storageBackendRepository) LookupComponent(name string) (*ComponentAccessInfo, error) { @@ -175,11 +175,11 @@ func (s *storageBackendComponent) HasVersion(vers string) (bool, error) { } func (s *storageBackendComponent) LookupVersion(version string) (*ComponentVersionAccessInfo, error) { - if ok, err := s.repo.impl.HasComponentVersion(common.NewNameVersion(s.name, version)); !ok || err != nil { + if ok, err := s.repo.impl.HasComponentVersion(misc.NewNameVersion(s.name, version)); !ok || err != nil { return nil, err } - name := common.NewNameVersion(s.name, version) + name := misc.NewNameVersion(s.name, version) d, err := s.repo.impl.GetDescriptor(name) if err != nil { return nil, err @@ -198,15 +198,15 @@ func (s *storageBackendComponent) LookupVersion(version string) (*ComponentVersi } func (s *storageBackendComponent) NewVersion(version string, overwrite ...bool) (*ComponentVersionAccessInfo, error) { - ok, err := s.repo.impl.HasComponentVersion(common.NewNameVersion(s.name, version)) + ok, err := s.repo.impl.HasComponentVersion(misc.NewNameVersion(s.name, version)) if err != nil { return nil, err } - if ok && !utils.Optional(overwrite...) { + if ok && !general.Optional(overwrite...) { return nil, errors.ErrAlreadyExists(cpi.KIND_COMPONENTVERSION, s.name+"/"+version) } - name := common.NewNameVersion(s.name, version) + name := misc.NewNameVersion(s.name, version) d := compdesc.New(s.name, version) impl := &storageBackendComponentVersion{ @@ -226,7 +226,7 @@ func (s *storageBackendComponent) NewVersion(version string, overwrite ...bool) type storageBackendComponentVersion struct { bridge ComponentVersionAccessBridge comp *storageBackendComponent - name common.NameVersion + name misc.NameVersion descriptor *compdesc.ComponentDescriptor } diff --git a/api/ocm/cpi/repocpi/bridge_cv.go b/api/ocm/cpi/repocpi/bridge_cv.go index bba694d198..5ce8b33327 100644 --- a/api/ocm/cpi/repocpi/bridge_cv.go +++ b/api/ocm/cpi/repocpi/bridge_cv.go @@ -8,6 +8,7 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/finalizer" + "github.com/mandelsoft/goutils/generics" "github.com/mandelsoft/goutils/optionutils" "ocm.software/ocm/api/ocm/compdesc" @@ -21,7 +22,7 @@ import ( "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/blobaccess/blobaccess" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" "ocm.software/ocm/api/utils/refmgmt/resource" "ocm.software/ocm/api/utils/runtimefinalizer" @@ -118,8 +119,8 @@ func GetComponentVersionImpl[T ComponentVersionAccessImpl](cv cpi.ComponentVersi } func (b *componentVersionAccessBridge) Close() error { - list := errors.ErrListf("closing component version %s", common.VersionedElementKey(b)) - refmgmt.AllocLog.Trace("closing component version base", "name", common.VersionedElementKey(b)) + list := errors.ErrListf("closing component version %s", misc.VersionedElementKey(b)) + refmgmt.AllocLog.Trace("closing component version base", "name", misc.VersionedElementKey(b)) // prepare artifact access for final close in // direct access mode. if !compositionmodeattr.Get(b.ctx) { @@ -128,7 +129,7 @@ func (b *componentVersionAccessBridge) Close() error { list.Add(b.impl.Close()) list.Add(b._componentVersionAccessBridgeBase.Close()) list.Add(b.blobcache.Clear()) - refmgmt.AllocLog.Trace("closed component version base", "name", common.VersionedElementKey(b)) + refmgmt.AllocLog.Trace("closed component version base", "name", misc.VersionedElementKey(b)) return list.Result() } @@ -197,7 +198,7 @@ func (b *componentVersionAccessBridge) AccessMethod(spec cpi.AccessSpec, cv refm } blob := b.getLocalBlob(cspec) if blob == nil { - return nil, errors.ErrUnknown(blobaccess.KIND_BLOB, cspec.Id, common.VersionedElementKey(b).String()) + return nil, errors.ErrUnknown(blobaccess.KIND_BLOB, cspec.Id, misc.VersionedElementKey(b).String()) } meth, err = compose.NewMethod(cspec, blob) case spec.IsLocal(b.ctx): @@ -261,7 +262,7 @@ func (b *componentVersionAccessBridge) update(final bool) error { d := b.getDescriptor() opts := &cpi.BlobUploadOptions{ - UseNoDefaultIfNotSet: optionutils.PointerTo(true), + UseNoDefaultIfNotSet: generics.PointerTo(true), } err := b.setupLocalBlobs("resource", b.composeAccess, d.Resources, true, opts) if err == nil { @@ -283,7 +284,7 @@ func (b *componentVersionAccessBridge) update(final bool) error { return err } if pub != nil { - err := pub.NotifyComponentVersion(common.VersionedElementKey(b)) + err := pub.NotifyComponentVersion(misc.VersionedElementKey(b)) if err != nil { return err } @@ -398,7 +399,7 @@ func (b *componentVersionAccessBridge) composeAccess(spec cpi.AccessSpec) (bloba } blob := b.getLocalBlob(cspec) if blob == nil { - return nil, "", nil, errors.ErrUnknown(blobaccess.KIND_BLOB, cspec.Id, common.VersionedElementKey(b).String()) + return nil, "", nil, errors.ErrUnknown(blobaccess.KIND_BLOB, cspec.Id, misc.VersionedElementKey(b).String()) } blob, err := blob.Dup() if err != nil { diff --git a/api/ocm/cpi/repocpi/view_c.go b/api/ocm/cpi/repocpi/view_c.go index c4f5727c71..5e8265cd7d 100644 --- a/api/ocm/cpi/repocpi/view_c.go +++ b/api/ocm/cpi/repocpi/view_c.go @@ -5,6 +5,7 @@ import ( "io" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/utils" @@ -116,7 +117,7 @@ func (c *componentAccessView) AddVersion(acc cpi.ComponentVersionAccess, overwri } return c.Execute(func() error { - return c.bridge.AddVersion(acc, cpi.NewAddVersionOptions(cpi.Overwrite(utils.Optional(overwrite...)))) + return c.bridge.AddVersion(acc, cpi.NewAddVersionOptions(cpi.Overwrite(general.Optional(overwrite...)))) }) } diff --git a/api/ocm/cpi/repocpi/view_cv.go b/api/ocm/cpi/repocpi/view_cv.go index 2e35912679..979b375c64 100644 --- a/api/ocm/cpi/repocpi/view_cv.go +++ b/api/ocm/cpi/repocpi/view_cv.go @@ -20,7 +20,7 @@ import ( "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/blobaccess/blobaccess" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" "ocm.software/ocm/api/utils/refmgmt/resource" ) @@ -42,7 +42,7 @@ type ComponentVersionAccessViewManager = resource.ViewManager[cpi.ComponentVersi type ComponentVersionAccessBridge interface { resource.ResourceImplementation[cpi.ComponentVersionAccess] - common.VersionedElement + misc.VersionedElement io.Closer GetContext() cpi.Context @@ -150,7 +150,7 @@ func (c *componentVersionAccessView) SetReadOnly() { } func (c *componentVersionAccessView) Close() error { - list := errors.ErrListf("closing %s", common.VersionedElementKey(c)) + list := errors.ErrListf("closing %s", misc.VersionedElementKey(c)) err := c._componentVersionAccessView.Close() return list.Add(c.err, err).Result() } diff --git a/api/ocm/elements/artifactblob/dockerdaemonblob/options.go b/api/ocm/elements/artifactblob/dockerdaemonblob/options.go index 60d1907f0d..e4c63db741 100644 --- a/api/ocm/elements/artifactblob/dockerdaemonblob/options.go +++ b/api/ocm/elements/artifactblob/dockerdaemonblob/options.go @@ -6,7 +6,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/elements/artifactblob/api" base "ocm.software/ocm/api/utils/blobaccess/dockerdaemon" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] @@ -64,6 +64,6 @@ func WithVersionOverride(v string, flag ...bool) Option { return wrapBase(base.WithVersionOverride(v, flag...)) } -func WithOrigin(o common.NameVersion) Option { +func WithOrigin(o misc.NameVersion) Option { return wrapBase(base.WithOrigin(o)) } diff --git a/api/ocm/elements/artifactblob/dockermultiblob/options.go b/api/ocm/elements/artifactblob/dockermultiblob/options.go index e7f5630a1a..aebd56c872 100644 --- a/api/ocm/elements/artifactblob/dockermultiblob/options.go +++ b/api/ocm/elements/artifactblob/dockermultiblob/options.go @@ -6,7 +6,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/elements/artifactblob/api" base "ocm.software/ocm/api/utils/blobaccess/dockermulti" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] @@ -60,10 +60,10 @@ func WithVersion(v string) Option { return wrapBase(base.WithVersion(v)) } -func WithOrigin(o common.NameVersion) Option { +func WithOrigin(o misc.NameVersion) Option { return wrapBase(base.WithOrigin(o)) } -func WithPrinter(p common.Printer) Option { +func WithPrinter(p misc.Printer) Option { return wrapBase(base.WithPrinter(p)) } diff --git a/api/ocm/elements/artifactblob/helmblob/options.go b/api/ocm/elements/artifactblob/helmblob/options.go index 97aa0f3a4e..3d47bf42d2 100644 --- a/api/ocm/elements/artifactblob/helmblob/options.go +++ b/api/ocm/elements/artifactblob/helmblob/options.go @@ -8,7 +8,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/elements/artifactblob/api" base "ocm.software/ocm/api/utils/blobaccess/helm" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] @@ -82,6 +82,6 @@ func WithHelmRepository(v string) Option { return wrapBase(base.WithHelmRepository(v)) } -func WithPrinter(v common.Printer) Option { +func WithPrinter(v misc.Printer) Option { return wrapBase(base.WithPrinter(v)) } diff --git a/api/ocm/elements/artifactblob/npmblob/resource.go b/api/ocm/elements/artifactblob/npmblob/resource.go index 41d403db5a..198487334b 100644 --- a/api/ocm/elements/artifactblob/npmblob/resource.go +++ b/api/ocm/elements/artifactblob/npmblob/resource.go @@ -9,13 +9,13 @@ import ( "ocm.software/ocm/api/ocm/cpi" resourcetypes "ocm.software/ocm/api/ocm/extensions/artifacttypes" base "ocm.software/ocm/api/utils/blobaccess/npm" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const TYPE = resourcetypes.NPM_PACKAGE func Access[M any, P compdesc.ArtifactMetaPointer[M]](ctx ocm.Context, meta P, repo, pkg, version string, opts ...Option) cpi.ArtifactAccess[M] { - eff := optionutils.EvalOptions(optionutils.WithDefaults(opts, WithHint(common.NewNameVersion(pkg, version).String()), WithCredentialContext(ctx))...) + eff := optionutils.EvalOptions(optionutils.WithDefaults(opts, WithHint(misc.NewNameVersion(pkg, version).String()), WithCredentialContext(ctx))...) if meta.GetType() == "" { meta.SetType(TYPE) diff --git a/api/ocm/elements/artifactblob/ociartifactblob/options.go b/api/ocm/elements/artifactblob/ociartifactblob/options.go index 65a4fe6d0b..2d75aa4162 100644 --- a/api/ocm/elements/artifactblob/ociartifactblob/options.go +++ b/api/ocm/elements/artifactblob/ociartifactblob/options.go @@ -7,7 +7,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/elements/artifactblob/api" base "ocm.software/ocm/api/utils/blobaccess/ociartifact" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] @@ -61,6 +61,6 @@ func WithVersion(v string) Option { return wrapBase(base.WithVersion(v)) } -func WithPrinter(v common.Printer) Option { +func WithPrinter(v misc.Printer) Option { return wrapBase(base.WithPrinter(v)) } diff --git a/api/ocm/elements/resources.go b/api/ocm/elements/resources.go index 1938877f02..da3dcfa32a 100644 --- a/api/ocm/elements/resources.go +++ b/api/ocm/elements/resources.go @@ -2,10 +2,10 @@ package elements import ( "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - "ocm.software/ocm/api/utils" ) type ResourceMetaOption interface { @@ -38,12 +38,12 @@ func (o local) ApplyToResourceMeta(m *compdesc.ResourceMeta) error { // WithLocalRelation sets the resource relation to metav1.LocalRelation. func WithLocalRelation(flag ...bool) ResourceMetaOption { - return local(utils.OptionalDefaultedBool(true, flag...)) + return local(general.OptionalDefaultedBool(true, flag...)) } // WithExternalRelation sets the resource relation to metav1.ExternalRelation. func WithExternalRelation(flag ...bool) ResourceMetaOption { - return local(!utils.OptionalDefaultedBool(true, flag...)) + return local(!general.OptionalDefaultedBool(true, flag...)) } //////////////////////////////////////////////////////////////////////////////// diff --git a/api/ocm/extensions/accessmethods/helm/method.go b/api/ocm/extensions/accessmethods/helm/method.go index 683952a6b4..679ef7ce0d 100644 --- a/api/ocm/extensions/accessmethods/helm/method.go +++ b/api/ocm/extensions/accessmethods/helm/method.go @@ -13,7 +13,7 @@ import ( "ocm.software/ocm/api/tech/helm" "ocm.software/ocm/api/tech/helm/identity" "ocm.software/ocm/api/utils/blobaccess/blobaccess" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -167,7 +167,7 @@ func (m *accessMethod) getBlob() (blobaccess.BlobAccess, error) { return nil, errors.ErrInvalid("helm chart", m.spec.HelmChart) } - acc, err := helm.DownloadChart(common.NonePrinter, m.comp.GetContext(), name, vers, m.spec.HelmRepository, + acc, err := helm.DownloadChart(misc.NonePrinter, m.comp.GetContext(), name, vers, m.spec.HelmRepository, helm.WithCredentials(identity.GetCredentials(m.comp.GetContext(), m.spec.HelmRepository, m.spec.GetChartName())), helm.WithKeyring([]byte(m.spec.Keyring)), helm.WithRootCert([]byte(m.spec.CACert))) diff --git a/api/ocm/extensions/accessmethods/ociartifact/utils.go b/api/ocm/extensions/accessmethods/ociartifact/utils.go index 55ba756890..92f52af317 100644 --- a/api/ocm/extensions/accessmethods/ociartifact/utils.go +++ b/api/ocm/extensions/accessmethods/ociartifact/utils.go @@ -6,7 +6,7 @@ import ( "ocm.software/ocm/api/oci/grammar" "ocm.software/ocm/api/ocm/cpi" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) // OCIArtifactReferenceProvider should be implemented by @@ -41,7 +41,7 @@ func GetOCIArtifactReference(ctx cpi.Context, spec cpi.AccessSpec, cv cpi.Compon //////////////////////////////////////////////////////////////////////////////// -func Hint(nv common.NameVersion, locator, repo, version string) string { +func Hint(nv misc.NameVersion, locator, repo, version string) string { if i := strings.LastIndex(version, "@"); i >= 0 { version = version[:i] // remove digest } @@ -61,7 +61,7 @@ func Hint(nv common.NameVersion, locator, repo, version string) string { return repository } -func repoName(nv common.NameVersion, locator string) string { +func repoName(nv misc.NameVersion, locator string) string { if nv.GetName() == "" { return locator } else { diff --git a/api/ocm/extensions/accessmethods/s3/method.go b/api/ocm/extensions/accessmethods/s3/method.go index b455ab9f0e..d908e94b1f 100644 --- a/api/ocm/extensions/accessmethods/s3/method.go +++ b/api/ocm/extensions/accessmethods/s3/method.go @@ -5,11 +5,12 @@ import ( . "github.com/mandelsoft/goutils/exception" + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/credentials/identity/hostpath" "ocm.software/ocm/api/ocm/cpi/accspeccpi" "ocm.software/ocm/api/ocm/extensions/accessmethods/s3/identity" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessio/downloader" "ocm.software/ocm/api/utils/accessio/downloader/s3" @@ -76,7 +77,7 @@ func New(region, bucket, key, version, mediaType string, downloader ...downloade Key: key, Version: version, MediaType: mediaType, - downloader: utils.Optional(downloader...), + downloader: general.Optional(downloader...), } } diff --git a/api/ocm/extensions/actionhandler/plugin/actionhandler.go b/api/ocm/extensions/actionhandler/plugin/actionhandler.go index b2127bcfa8..a6e105e77a 100644 --- a/api/ocm/extensions/actionhandler/plugin/actionhandler.go +++ b/api/ocm/extensions/actionhandler/plugin/actionhandler.go @@ -8,7 +8,7 @@ import ( "ocm.software/ocm/api/datacontext/action" "ocm.software/ocm/api/datacontext/action/handlers" "ocm.software/ocm/api/ocm/plugin" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) // pluginHandler delegates action to a plugin based handler. @@ -29,7 +29,7 @@ func New(p plugin.Plugin, name string) (handlers.ActionHandler, error) { }, nil } -func (b *pluginHandler) Handle(spec action.ActionSpec, creds common.Properties) (action.ActionResult, error) { +func (b *pluginHandler) Handle(spec action.ActionSpec, creds misc.Properties) (action.ActionResult, error) { var err error var creddata json.RawMessage diff --git a/api/ocm/extensions/attrs/hashattr/attr.go b/api/ocm/extensions/attrs/hashattr/attr.go index 910c429e16..f7fc62882f 100644 --- a/api/ocm/extensions/attrs/hashattr/attr.go +++ b/api/ocm/extensions/attrs/hashattr/attr.go @@ -3,12 +3,13 @@ package hashattr import ( "fmt" + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/ocm/extensions/attrs/signingattr" ocm "ocm.software/ocm/api/ocm/types" "ocm.software/ocm/api/tech/signing" "ocm.software/ocm/api/tech/signing/hasher/sha256" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/listformat" "ocm.software/ocm/api/utils/runtime" ) @@ -87,7 +88,7 @@ type Attribute struct { } func (a *Attribute) GetHasher(ctx ContextProvider, names ...string) Hasher { - name := utils.Optional(names...) + name := general.Optional(names...) if name != "" { return signingattr.Get(ctx).GetHasher(name) } diff --git a/api/ocm/extensions/attrs/mapocirepoattr/attr.go b/api/ocm/extensions/attrs/mapocirepoattr/attr.go index 5185a7b810..d39dbfea01 100644 --- a/api/ocm/extensions/attrs/mapocirepoattr/attr.go +++ b/api/ocm/extensions/attrs/mapocirepoattr/attr.go @@ -8,10 +8,10 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/oci/grammar" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -192,7 +192,7 @@ func (a *Attribute) Map(name string) string { } func (a *Attribute) MapPrefix(name string) string { - keys := utils.StringMapKeys(a.PrefixMappings) + keys := maputils.OrderedKeys(a.PrefixMappings) for i := range keys { k := keys[len(keys)-i-1] if strings.HasPrefix(name, k+grammar.RepositorySeparator) { diff --git a/api/ocm/extensions/attrs/signingattr/config.go b/api/ocm/extensions/attrs/signingattr/config.go index c8f04d6b98..e2e351d4b1 100644 --- a/api/ocm/extensions/attrs/signingattr/config.go +++ b/api/ocm/extensions/attrs/signingattr/config.go @@ -8,6 +8,7 @@ import ( "slices" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/vfs/pkg/vfs" cfgcpi "ocm.software/ocm/api/config/cpi" @@ -15,7 +16,6 @@ import ( "ocm.software/ocm/api/datacontext/attrs/rootcertsattr" "ocm.software/ocm/api/tech/signing" "ocm.software/ocm/api/tech/signing/signutils" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -171,7 +171,7 @@ func (a *Config) AddPrivateKeyFile(name, path string, fss ...vfs.FileSystem) { } func (a *Config) AddRootCertificateFile(name string, fss ...vfs.FileSystem) { - a.RootCertificates = append(a.RootCertificates, KeySpec{Path: name, FileSystem: utils.Optional(fss...)}) + a.RootCertificates = append(a.RootCertificates, KeySpec{Path: name, FileSystem: general.Optional(fss...)}) } func (a *Config) addKeyData(set *map[string]KeySpec, name string, data []byte) { diff --git a/api/ocm/extensions/blobhandler/handlers/generic/ocirepo/blobhandler.go b/api/ocm/extensions/blobhandler/handlers/generic/ocirepo/blobhandler.go index 10d81d1828..efab20781f 100644 --- a/api/ocm/extensions/blobhandler/handlers/generic/ocirepo/blobhandler.go +++ b/api/ocm/extensions/blobhandler/handlers/generic/ocirepo/blobhandler.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/sliceutils" "ocm.software/ocm/api/oci" @@ -15,7 +16,6 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/extensions/accessmethods/ociartifact" "ocm.software/ocm/api/ocm/extensions/attrs/ociuploadattr" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess/blobaccess" ) @@ -37,7 +37,7 @@ type artifactHandler struct { } func NewArtifactHandler(repospec ...*ociuploadattr.Attribute) cpi.BlobHandler { - return &artifactHandler{utils.Optional(repospec...)} + return &artifactHandler{general.Optional(repospec...)} } func (b *artifactHandler) StoreBlob(blob cpi.BlobAccess, artType, hint string, global cpi.AccessSpec, ctx cpi.StorageContext) (cpi.AccessSpec, error) { diff --git a/api/ocm/extensions/blobhandler/handlers/ocm/comparch/blobhandler.go b/api/ocm/extensions/blobhandler/handlers/ocm/comparch/blobhandler.go index 9e05b22440..3f19ffd807 100644 --- a/api/ocm/extensions/blobhandler/handlers/ocm/comparch/blobhandler.go +++ b/api/ocm/extensions/blobhandler/handlers/ocm/comparch/blobhandler.go @@ -12,7 +12,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/attrs/compatattr" storagecontext "ocm.software/ocm/api/ocm/extensions/blobhandler/handlers/ocm" "ocm.software/ocm/api/ocm/extensions/repositories/comparch" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) // Deprecated: Component Archive (CA) - https://kubernetes.slack.com/archives/C05UWBE8R1D/p1734357630853489 @@ -45,7 +45,7 @@ func (b *blobHandler) StoreBlob(blob cpi.BlobAccess, artType, hint string, globa if err != nil { return nil, err } - path := common.DigestToFileName(digest.Digest(ref)) + path := misc.DigestToFileName(digest.Digest(ref)) if compatattr.Get(ctx.GetContext()) { return localfsblob.New(path, blob.MimeType()), nil } else { diff --git a/api/ocm/extensions/blobhandler/handlers/ocm/ctx.go b/api/ocm/extensions/blobhandler/handlers/ocm/ctx.go index 829c262a95..ef5298e388 100644 --- a/api/ocm/extensions/blobhandler/handlers/ocm/ctx.go +++ b/api/ocm/extensions/blobhandler/handlers/ocm/ctx.go @@ -1,8 +1,9 @@ package ocm import ( + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/ocm/cpi" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess/blobaccess" ) @@ -27,7 +28,7 @@ func New(repo cpi.Repository, compname string, access BlobSink, impltyp string, return &DefaultStorageContext{ DefaultStorageContext: *cpi.NewDefaultStorageContext(repo, compname, cpi.ImplementationRepositoryType{cpi.CONTEXT_TYPE, impltyp}), Sink: access, - Payload: utils.Optional(payload...), + Payload: general.Optional(payload...), } } diff --git a/api/ocm/extensions/download/download.go b/api/ocm/extensions/download/download.go index 36313d7615..947889e4c4 100644 --- a/api/ocm/extensions/download/download.go +++ b/api/ocm/extensions/download/download.go @@ -1,18 +1,19 @@ package download import ( + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/vfs" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] type Options struct { - Printer common.Printer + Printer misc.Printer FileSystem vfs.FileSystem } @@ -44,7 +45,7 @@ func WithFileSystem(fs vfs.FileSystem) Option { //////////////////////////////////////////////////////////////////////////////// type printer struct { - pr common.Printer + pr misc.Printer } func (o *printer) ApplyTo(opts *Options) { @@ -53,7 +54,7 @@ func (o *printer) ApplyTo(opts *Options) { } } -func WithPrinter(pr common.Printer) Option { +func WithPrinter(pr misc.Printer) Option { return &printer{pr} } @@ -63,7 +64,7 @@ func DownloadResource(ctx cpi.ContextProvider, r cpi.ResourceAccess, path string eff := optionutils.EvalOptions(opts...) fs := utils.FileSystem(eff.FileSystem) - pr := utils.OptionalDefaulted(common.NewPrinter(nil), eff.Printer) + pr := general.OptionalDefaulted(misc.NewPrinter(nil), eff.Printer) _, tgt, err := For(ctx).Download(pr, r, path, fs) return tgt, err } diff --git a/api/ocm/extensions/download/handlers/blob/handler.go b/api/ocm/extensions/download/handlers/blob/handler.go index af7449bfad..9f748a2338 100644 --- a/api/ocm/extensions/download/handlers/blob/handler.go +++ b/api/ocm/extensions/download/handlers/blob/handler.go @@ -8,7 +8,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/extensions/download" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Handler struct{} @@ -25,7 +25,7 @@ func wrapErr(err error, racc cpi.ResourceAccess) error { return errors.Wrapf(err, "resource %s/%s%s", m.GetName(), m.GetVersion(), m.ExtraIdentity.String()) } -func (_ Handler) Download(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { +func (_ Handler) Download(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { rd, err := cpi.GetResourceReader(racc) if err != nil { return true, "", wrapErr(err, racc) diff --git a/api/ocm/extensions/download/handlers/blueprint/blueprint_test.go b/api/ocm/extensions/download/handlers/blueprint/blueprint_test.go index 952ac0aff6..91af2db4a5 100644 --- a/api/ocm/extensions/download/handlers/blueprint/blueprint_test.go +++ b/api/ocm/extensions/download/handlers/blueprint/blueprint_test.go @@ -17,7 +17,7 @@ import ( ctfocm "ocm.software/ocm/api/ocm/extensions/repositories/ctf" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/tarutils" ) @@ -88,7 +88,7 @@ var _ = Describe("download blueprint", func() { racc := Must(cv.GetResourceByIndex(index)) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() ok, path := Must2(download.For(env).Download(p, racc, DOWNLOAD_PATH, env)) Expect(ok).To(BeTrue()) Expect(path).To(Equal(DOWNLOAD_PATH)) diff --git a/api/ocm/extensions/download/handlers/blueprint/extractor.go b/api/ocm/extensions/download/handlers/blueprint/extractor.go index 481eda4f42..7ddbda5270 100644 --- a/api/ocm/extensions/download/handlers/blueprint/extractor.go +++ b/api/ocm/extensions/download/handlers/blueprint/extractor.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/compression" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/tarutils" ) @@ -21,7 +21,7 @@ const ( BLUEPRINT_MIMETYPE_COMPRESSED = "application/vnd.gardener.landscaper.blueprint.v1+tar+gzip" ) -func ExtractArchive(pr common.Printer, _ *Handler, access blobaccess.DataAccess, path string, fs vfs.FileSystem) (_ bool, rerr error) { +func ExtractArchive(pr misc.Printer, _ *Handler, access blobaccess.DataAccess, path string, fs vfs.FileSystem) (_ bool, rerr error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagationf(&rerr, "extracting archived (and compressed) blueprint") @@ -54,7 +54,7 @@ func ExtractArchive(pr common.Printer, _ *Handler, access blobaccess.DataAccess, return true, nil } -func ExtractArtifact(pr common.Printer, handler *Handler, access blobaccess.DataAccess, path string, fs vfs.FileSystem) (_ bool, rerr error) { +func ExtractArtifact(pr misc.Printer, handler *Handler, access blobaccess.DataAccess, path string, fs vfs.FileSystem) (_ bool, rerr error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagationf(&rerr, "extracting oci artifact containing a blueprint") diff --git a/api/ocm/extensions/download/handlers/blueprint/handler.go b/api/ocm/extensions/download/handlers/blueprint/handler.go index f5736d8514..7aed2312a5 100644 --- a/api/ocm/extensions/download/handlers/blueprint/handler.go +++ b/api/ocm/extensions/download/handlers/blueprint/handler.go @@ -2,6 +2,7 @@ package blueprint import ( "github.com/mandelsoft/goutils/finalizer" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/set" "github.com/mandelsoft/vfs/pkg/vfs" @@ -9,10 +10,9 @@ import ( "ocm.software/ocm/api/ocm/cpi" resourcetypes "ocm.software/ocm/api/ocm/extensions/artifacttypes" registry "ocm.software/ocm/api/ocm/extensions/download" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -21,7 +21,7 @@ const ( CONFIG_MIME_TYPE = "application/vnd.gardener.landscaper.blueprint.config.v1" ) -type Extractor func(pr common.Printer, handler *Handler, access blobaccess.DataAccess, path string, fs vfs.FileSystem) (bool, error) +type Extractor func(pr misc.Printer, handler *Handler, access blobaccess.DataAccess, path string, fs vfs.FileSystem) (bool, error) var ( supportedArtifactTypes []string @@ -54,7 +54,7 @@ func init() { } func New(configmimetypes ...string) *Handler { - if len(configmimetypes) == 0 || utils.Optional(configmimetypes...) == "" { + if len(configmimetypes) == 0 || general.Optional(configmimetypes...) == "" { configmimetypes = []string{CONFIG_MIME_TYPE} } return &Handler{ @@ -62,7 +62,7 @@ func New(configmimetypes ...string) *Handler { } } -func (h *Handler) Download(pr common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (_ bool, _ string, err error) { +func (h *Handler) Download(pr misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (_ bool, _ string, err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagationf(&err, "downloading blueprint") diff --git a/api/ocm/extensions/download/handlers/blueprint/registration.go b/api/ocm/extensions/download/handlers/blueprint/registration.go index 7d572af86d..3cf8c3e7af 100644 --- a/api/ocm/extensions/download/handlers/blueprint/registration.go +++ b/api/ocm/extensions/download/handlers/blueprint/registration.go @@ -6,10 +6,10 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/extensions/download" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/listformat" "ocm.software/ocm/api/utils/registrations" ) @@ -85,7 +85,7 @@ If the config is given, the target is used as repository name prefixed with an optional repository prefix given by the configuration. The following artifact media types are supported: -`+listformat.FormatList("", utils.StringMapKeys(mimeTypeExtractorRegistry)...)+` +`+listformat.FormatList("", maputils.OrderedKeys(mimeTypeExtractorRegistry)...)+` It accepts a config with the following fields: `+listformat.FormatMapElements("", AttributeDescription())+` diff --git a/api/ocm/extensions/download/handlers/blueprint/registration_test.go b/api/ocm/extensions/download/handlers/blueprint/registration_test.go index 192eb26b7b..6eba043cd0 100644 --- a/api/ocm/extensions/download/handlers/blueprint/registration_test.go +++ b/api/ocm/extensions/download/handlers/blueprint/registration_test.go @@ -17,7 +17,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/repositories/ctf" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/tarutils" ) @@ -67,7 +67,7 @@ var _ = Describe("blueprint downloader registration", func() { defer Close(cv) racc := Must(cv.GetResourceByIndex(0)) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() ok, path := Must2(download.For(env).Download(p, racc, DOWNLOAD_PATH, env)) Expect(ok).To(BeTrue()) Expect(path).To(Equal(DOWNLOAD_PATH)) diff --git a/api/ocm/extensions/download/handlers/dirtree/dirtree_test.go b/api/ocm/extensions/download/handlers/dirtree/dirtree_test.go index 2a681ddc58..4a1d097592 100644 --- a/api/ocm/extensions/download/handlers/dirtree/dirtree_test.go +++ b/api/ocm/extensions/download/handlers/dirtree/dirtree_test.go @@ -23,7 +23,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/tarutils" ) @@ -68,7 +68,7 @@ var _ = Describe("artifact management", func() { h := dirtree.New(ociv1.MediaTypeImageConfig) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(h.Download(p, res, "result", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("result")) @@ -91,7 +91,7 @@ result: 2 file(s) with 25 byte(s) written h := dirtree.New(ociv1.MediaTypeImageConfig).SetArchiveMode(true) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path, err := h.Download(p, res, "target", env) Expect(err).To(Succeed()) Expect(accepted).To(BeTrue()) @@ -117,7 +117,7 @@ target: 3584 byte(s) written defer Close(cv) res := Must(cv.GetResource(metav1.NewIdentity(RESOURCE))) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path, err := download.For(env).Download(p, res, "result", env) Expect(err).To(Succeed()) Expect(accepted).To(BeTrue()) @@ -167,7 +167,7 @@ result: 2 file(s) with 25 byte(s) written h := dirtree.New(ociv1.MediaTypeImageConfig) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(h.Download(p, res, "result", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("result")) @@ -190,7 +190,7 @@ result: 2 file(s) with 25 byte(s) written h := dirtree.New(ociv1.MediaTypeImageConfig).SetArchiveMode(true) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(h.Download(p, res, "target", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("target")) @@ -215,7 +215,7 @@ target: 3584 byte(s) written defer Close(cv) res := Must(cv.GetResource(metav1.NewIdentity(RESOURCE))) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(download.For(env).Download(p, res, "result", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("result")) @@ -267,7 +267,7 @@ result: 2 file(s) with 25 byte(s) written h := dirtree.New(ociv1.MediaTypeImageConfig) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(h.Download(p, res, "result", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("result")) @@ -290,7 +290,7 @@ result: 2 file(s) with 25 byte(s) written h := dirtree.New(ociv1.MediaTypeImageConfig).SetArchiveMode(true) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(h.Download(p, res, "target", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("target")) @@ -315,7 +315,7 @@ target: 3584 byte(s) written defer Close(cv) res := Must(cv.GetResource(metav1.NewIdentity(RESOURCE))) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(download.For(env).Download(p, res, "result", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("result")) diff --git a/api/ocm/extensions/download/handlers/dirtree/handler.go b/api/ocm/extensions/download/handlers/dirtree/handler.go index 8bf8ca1803..557f203cfd 100644 --- a/api/ocm/extensions/download/handlers/dirtree/handler.go +++ b/api/ocm/extensions/download/handlers/dirtree/handler.go @@ -26,7 +26,7 @@ import ( "ocm.software/ocm/api/utils/compression" "ocm.software/ocm/api/utils/iotools" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/tarutils" ) @@ -73,7 +73,7 @@ func (h *Handler) SetArchiveMode(b bool) *Handler { return h } -func (h *Handler) Download(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { +func (h *Handler) Download(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { lfs, r, err := h.GetForResource(racc) if err != nil || (lfs == nil && r == nil) { return err != nil, "", err @@ -84,7 +84,7 @@ func (h *Handler) Download(p common.Printer, racc cpi.ResourceAccess, path strin return h.download(p, fs, path, lfs, r) } -func (h *Handler) DownloadFromArtifactSet(pr common.Printer, set *artifactset.ArtifactSet, path string, fs vfs.FileSystem) (bool, string, error) { +func (h *Handler) DownloadFromArtifactSet(pr misc.Printer, set *artifactset.ArtifactSet, path string, fs vfs.FileSystem) (bool, string, error) { lfs, r, err := h.GetForArtifactSet(set) if err != nil || (lfs == nil && r != nil) { return err != nil, "", err @@ -92,10 +92,10 @@ func (h *Handler) DownloadFromArtifactSet(pr common.Printer, set *artifactset.Ar if path == "" { path = set.GetMain().String() } - return h.download(common.NewPrinter(nil), fs, path, lfs, r) + return h.download(misc.NewPrinter(nil), fs, path, lfs, r) } -func (h *Handler) download(pr common.Printer, fs vfs.FileSystem, path string, lfs vfs.FileSystem, r io.ReadCloser) (ok bool, dest string, err error) { +func (h *Handler) download(pr misc.Printer, fs vfs.FileSystem, path string, lfs vfs.FileSystem, r io.ReadCloser) (ok bool, dest string, err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagation(&err) diff --git a/api/ocm/extensions/download/handlers/dirtree/registration_test.go b/api/ocm/extensions/download/handlers/dirtree/registration_test.go index 897b764498..d40659a428 100644 --- a/api/ocm/extensions/download/handlers/dirtree/registration_test.go +++ b/api/ocm/extensions/download/handlers/dirtree/registration_test.go @@ -19,7 +19,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/tarutils" ) @@ -58,7 +58,7 @@ var _ = Describe("artifact management", func() { defer Close(cv) res := Must(cv.GetResource(metav1.NewIdentity(RESOURCE))) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(download.For(env).Download(p, res, "result", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("result")) @@ -81,7 +81,7 @@ result: 2 file(s) with 25 byte(s) written defer Close(cv) res := Must(cv.GetResource(metav1.NewIdentity(RESOURCE))) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(download.For(env).Download(p, res, "target", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("target")) @@ -116,7 +116,7 @@ registrations: defer Close(cv) res := Must(cv.GetResource(metav1.NewIdentity(RESOURCE))) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() accepted, path := Must2(download.For(env).Download(p, res, "target", env)) Expect(accepted).To(BeTrue()) Expect(path).To(Equal("target")) diff --git a/api/ocm/extensions/download/handlers/executable/handler.go b/api/ocm/extensions/download/handlers/executable/handler.go index 8bfe9f1479..5137b26d1d 100644 --- a/api/ocm/extensions/download/handlers/executable/handler.go +++ b/api/ocm/extensions/download/handlers/executable/handler.go @@ -11,7 +11,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/download" "ocm.software/ocm/api/utils/compression" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Handler struct{} @@ -32,7 +32,7 @@ func wrapErr(err error, racc cpi.ResourceAccess) error { return errors.Wrapf(err, "resource %s/%s%s", m.GetName(), m.GetVersion(), m.ExtraIdentity.String()) } -func (_ Handler) Download(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { +func (_ Handler) Download(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { rd, err := cpi.GetResourceReader(racc) if err != nil { return true, "", wrapErr(err, racc) diff --git a/api/ocm/extensions/download/handlers/helm/download.go b/api/ocm/extensions/download/handlers/helm/download.go index 6cbc663e87..b7a05273ff 100644 --- a/api/ocm/extensions/download/handlers/helm/download.go +++ b/api/ocm/extensions/download/handlers/helm/download.go @@ -12,15 +12,15 @@ import ( "ocm.software/ocm/api/oci/extensions/repositories/artifactset" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) -func Download(p common.Printer, ctx oci.Context, ref string, path string, fs vfs.FileSystem, creds ...credentials.CredentialsSource) error { +func Download(p misc.Printer, ctx oci.Context, ref string, path string, fs vfs.FileSystem, creds ...credentials.CredentialsSource) error { _, _, _, err := Download2(p, ctx, ref, path, fs, false, creds...) return err } -func Download2(p common.Printer, ctx oci.Context, ref string, path string, fs vfs.FileSystem, asartifact bool, creds ...credentials.CredentialsSource) (chart, prov string, aset string, err error) { +func Download2(p misc.Printer, ctx oci.Context, ref string, path string, fs vfs.FileSystem, asartifact bool, creds ...credentials.CredentialsSource) (chart, prov string, aset string, err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagationf(&err, "downloading helm chart %q", ref) diff --git a/api/ocm/extensions/download/handlers/helm/handler.go b/api/ocm/extensions/download/handlers/helm/handler.go index 7a72f710a9..3ee90f6038 100644 --- a/api/ocm/extensions/download/handlers/helm/handler.go +++ b/api/ocm/extensions/download/handlers/helm/handler.go @@ -19,7 +19,7 @@ import ( "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const TYPE = resourcetypes.HELM_CHART @@ -41,7 +41,7 @@ func AssureArchiveSuffix(name string) string { return name } -func (h Handler) fromArchive(p common.Printer, meth cpi.AccessMethod, path string, fs vfs.FileSystem) (_ bool, _ string, err error) { +func (h Handler) fromArchive(p misc.Printer, meth cpi.AccessMethod, path string, fs vfs.FileSystem) (_ bool, _ string, err error) { basetype := mime.BaseType(helmregistry.ChartLayerMediaType) if mime.BaseType(meth.MimeType()) != basetype { return false, "", nil @@ -56,7 +56,7 @@ func (h Handler) fromArchive(p common.Printer, meth cpi.AccessMethod, path strin return true, chart, nil } -func (h Handler) fromOCIArtifact(p common.Printer, meth cpi.AccessMethod, path string, fs vfs.FileSystem) (_ bool, _ string, err error) { +func (h Handler) fromOCIArtifact(p misc.Printer, meth cpi.AccessMethod, path string, fs vfs.FileSystem) (_ bool, _ string, err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagationf(&err, "from OCI artifact") @@ -82,7 +82,7 @@ func (h Handler) fromOCIArtifact(p common.Printer, meth cpi.AccessMethod, path s return true, chart, nil } -func (h Handler) Download(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (_ bool, _ string, err error) { +func (h Handler) Download(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (_ bool, _ string, err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagationf(&err, "downloading helm chart") @@ -101,7 +101,7 @@ func (h Handler) Download(p common.Printer, racc cpi.ResourceAccess, path string return h.fromOCIArtifact(p, meth, path, fs) } -func download(p common.Printer, art oci.ArtifactAccess, path string, fs vfs.FileSystem) (chart, prov string, err error) { +func download(p misc.Printer, art oci.ArtifactAccess, path string, fs vfs.FileSystem) (chart, prov string, err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagation(&err) @@ -138,7 +138,7 @@ func download(p common.Printer, art oci.ArtifactAccess, path string, fs vfs.File return chart, prov, err } -func write(p common.Printer, blob blobaccess.DataReader, path string, fs vfs.FileSystem) (err error) { +func write(p misc.Printer, blob blobaccess.DataReader, path string, fs vfs.FileSystem) (err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagation(&err) diff --git a/api/ocm/extensions/download/handlers/ocirepo/handler.go b/api/ocm/extensions/download/handlers/ocirepo/handler.go index b6b8dcad66..d79695e69f 100644 --- a/api/ocm/extensions/download/handlers/ocirepo/handler.go +++ b/api/ocm/extensions/download/handlers/ocirepo/handler.go @@ -21,7 +21,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/attrs/ociuploadattr" "ocm.software/ocm/api/ocm/extensions/download" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) //////////////////////////////////////////////////////////////////////////////// @@ -34,7 +34,7 @@ func New(repospec ...*ociuploadattr.Attribute) download.Handler { return &handler{spec: general.Optional(repospec...)} } -func (h *handler) Download(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (accepted bool, target string, err error) { +func (h *handler) Download(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (accepted bool, target string, err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagationf(&err, "upload to OCI registry") diff --git a/api/ocm/extensions/download/handlers/plugin/download_test.go b/api/ocm/extensions/download/handlers/plugin/download_test.go index e2f1dcfe87..a9f15924eb 100644 --- a/api/ocm/extensions/download/handlers/plugin/download_test.go +++ b/api/ocm/extensions/download/handlers/plugin/download_test.go @@ -23,7 +23,7 @@ import ( "ocm.software/ocm/api/ocm/plugin/plugins" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/api/utils/runtime" ) @@ -114,7 +114,7 @@ var _ = Describe("setup plugin cache", func() { file := vfs.Join(env.FileSystem(), repodir, "download") octx, buf := out.NewBuffered() - ok, eff, err := download.For(env).Download(common.NewPrinter(octx.StdOut()), racc, file, nil) + ok, eff, err := download.For(env).Download(misc.NewPrinter(octx.StdOut()), racc, file, nil) MustBeSuccessful(err) Expect(buf.String()).To(Equal("")) diff --git a/api/ocm/extensions/download/handlers/plugin/handler.go b/api/ocm/extensions/download/handlers/plugin/handler.go index 0b08654539..248f01f366 100644 --- a/api/ocm/extensions/download/handlers/plugin/handler.go +++ b/api/ocm/extensions/download/handlers/plugin/handler.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/ocm/plugin" "ocm.software/ocm/api/ocm/plugin/descriptor" "ocm.software/ocm/api/utils/accessio" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) // pluginHandler delegates download format of artifacts to a plugin based handler. @@ -33,7 +33,7 @@ func New(p plugin.Plugin, name string, config []byte) (download.Handler, error) }, nil } -func (b *pluginHandler) Download(_ common.Printer, racc cpi.ResourceAccess, path string, _ vfs.FileSystem) (resp bool, eff string, rerr error) { +func (b *pluginHandler) Download(_ misc.Printer, racc cpi.ResourceAccess, path string, _ vfs.FileSystem) (resp bool, eff string, rerr error) { m, err := racc.AccessMethod() if err != nil { return true, "", err diff --git a/api/ocm/extensions/download/registry.go b/api/ocm/extensions/download/registry.go index 88264c6d5d..d5d763e90b 100644 --- a/api/ocm/extensions/download/registry.go +++ b/api/ocm/extensions/download/registry.go @@ -11,7 +11,7 @@ import ( "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/ocmutils/registry" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/registrations" "ocm.software/ocm/api/utils/runtimefinalizer" ) @@ -19,7 +19,7 @@ import ( const ALL = "*" type Handler interface { - Download(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) + Download(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) } const DEFAULT_BLOBHANDLER_PRIO = 100 @@ -34,7 +34,7 @@ type MultiHandler []Handler var _ sort.Interface = MultiHandler(nil) -func (m MultiHandler) Download(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { +func (m MultiHandler) Download(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { errs := errors.ErrListf("download") for _, h := range m { ok, p, err := h.Download(p, racc, path, fs) @@ -76,7 +76,7 @@ type Registry interface { Register(hdlr Handler, olist ...HandlerOption) LookupHandler(art, media string) MultiHandler Handler - DownloadAsBlob(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) + DownloadAsBlob(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) } func AsHandlerRegistrationRegistry(r Registry) registrations.HandlerRegistrationRegistry[Target, HandlerOption] { @@ -140,8 +140,8 @@ func (r *_registry) getHandlers(arttype, mediatype string) MultiHandler { return list } -func (r *_registry) Download(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { - p = common.AssurePrinter(p) +func (r *_registry) Download(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { + p = misc.AssurePrinter(p) art := racc.Meta().GetType() m, err := racc.AccessMethod() if err != nil { @@ -155,11 +155,11 @@ func (r *_registry) Download(p common.Printer, racc cpi.ResourceAccess, path str return r.download(r.LookupHandler(ALL, ""), p, racc, path, fs) } -func (r *_registry) DownloadAsBlob(p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { +func (r *_registry) DownloadAsBlob(p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { return r.download(r.LookupHandler(ALL, ""), p, racc, path, fs) } -func (r *_registry) download(list MultiHandler, p common.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { +func (r *_registry) download(list MultiHandler, p misc.Printer, racc cpi.ResourceAccess, path string, fs vfs.FileSystem) (bool, string, error) { sort.Stable(list) return list.Download(p, racc, path, fs) } diff --git a/api/ocm/extensions/labels/routingslip/internal/entrytypes.go b/api/ocm/extensions/labels/routingslip/internal/entrytypes.go index dbb7f42051..7e06360a63 100644 --- a/api/ocm/extensions/labels/routingslip/internal/entrytypes.go +++ b/api/ocm/extensions/labels/routingslip/internal/entrytypes.go @@ -7,13 +7,13 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/goutils/sliceutils" "github.com/modern-go/reflect2" "ocm.software/ocm/api/ocm/cpi" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/cobrautils/flagsets" "ocm.software/ocm/api/utils/cobrautils/flagsets/flagsetscheme" "ocm.software/ocm/api/utils/runtime" @@ -145,7 +145,7 @@ func ToGenericEntry(spec Entry) (*GenericEntry, error) { } func NewGenericEntry(data []byte, unmarshaler ...runtime.Unmarshaler) (Entry, error) { - return generics.CastPointerR[Entry](newGenericEntry(data, utils.Optional(unmarshaler...))) + return generics.CastPointerR[Entry](newGenericEntry(data, general.Optional(unmarshaler...))) } func newGenericEntry(data []byte, unmarshaler runtime.Unmarshaler) (*GenericEntry, error) { diff --git a/api/ocm/extensions/labels/routingslip/label.go b/api/ocm/extensions/labels/routingslip/label.go index 0bce149449..ea9d1f1633 100644 --- a/api/ocm/extensions/labels/routingslip/label.go +++ b/api/ocm/extensions/labels/routingslip/label.go @@ -3,24 +3,24 @@ package routingslip import ( "sort" + "github.com/mandelsoft/goutils/general" "github.com/opencontainers/go-digest" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/valuemergehandler/handlers/maplistmerge" "ocm.software/ocm/api/ocm/valuemergehandler/handlers/simplemapmerge" "ocm.software/ocm/api/ocm/valuemergehandler/hpi" - "ocm.software/ocm/api/utils" ) const NAME = "routing-slips" type LabelValue map[string]HistoryEntries -var spec = utils.Must(hpi.NewSpecification( +var spec = general.Must(hpi.NewSpecification( simplemapmerge.ALGORITHM, simplemapmerge.NewConfig( "", - utils.Must(hpi.NewSpecification( + general.Must(hpi.NewSpecification( maplistmerge.ALGORITHM, maplistmerge.NewConfig("digest", maplistmerge.MODE_INBOUND), )), diff --git a/api/ocm/extensions/labels/routingslip/transfer_test.go b/api/ocm/extensions/labels/routingslip/transfer_test.go index 113efc4584..ad8864d4fc 100644 --- a/api/ocm/extensions/labels/routingslip/transfer_test.go +++ b/api/ocm/extensions/labels/routingslip/transfer_test.go @@ -18,7 +18,7 @@ import ( "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard" "ocm.software/ocm/api/tech/signing/handlers/rsa" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -64,7 +64,7 @@ var _ = Describe("management", func() { target := Must(ctf.Open(env, accessobj.ACC_WRITABLE|accessobj.ACC_CREATE, TARGET, 0o700, env)) finalize.Close(target, "target") - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() MustBeSuccessful(transfer.TransferVersion(pr, nil, cv, target, Must(standard.New()))) diff --git a/api/ocm/extensions/labels/routingslip/usage.go b/api/ocm/extensions/labels/routingslip/usage.go index 2d61401e3d..198d0cbe01 100644 --- a/api/ocm/extensions/labels/routingslip/usage.go +++ b/api/ocm/extensions/labels/routingslip/usage.go @@ -4,7 +4,9 @@ import ( "fmt" "strings" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/maputils" + "github.com/mandelsoft/goutils/stringutils" + "ocm.software/ocm/api/utils/cobrautils/flagsets" "ocm.software/ocm/api/utils/runtime" ) @@ -56,24 +58,24 @@ kinds of entries can be configured using the --entry option. } } - for _, t := range utils.StringMapKeys(descs) { + for _, t := range maputils.OrderedKeys(descs) { info := descs[t] desc := strings.Trim(info.desc, "\n") if desc != "" { - s = fmt.Sprintf("%s\n- Entry type %s\n\n%s\n\n", s, t, utils.IndentLines(desc, " ")) + s = fmt.Sprintf("%s\n- Entry type %s\n\n%s\n\n", s, t, stringutils.IndentLines(desc, " ")) format := "" - for _, f := range utils.StringMapKeys(info.versions) { + for _, f := range maputils.OrderedKeys(info.versions) { desc = strings.Trim(info.versions[f], "\n") if desc != "" { - format = fmt.Sprintf("%s\n- Version %s\n\n%s\n", format, f, utils.IndentLines(desc, " ")) + format = fmt.Sprintf("%s\n- Version %s\n\n%s\n", format, f, stringutils.IndentLines(desc, " ")) } } if format != "" { - s += fmt.Sprintf(" The following versions are supported:\n%s\n", strings.Trim(utils.IndentLines(format, " "), "\n")) + s += fmt.Sprintf(" The following versions are supported:\n%s\n", strings.Trim(stringutils.IndentLines(format, " "), "\n")) } } - s += utils.IndentLines(flagsets.FormatConfigOptions(info.options), " ") + s += stringutils.IndentLines(flagsets.FormatConfigOptions(info.options), " ") } return s } diff --git a/api/ocm/extensions/pubsub/interface.go b/api/ocm/extensions/pubsub/interface.go index 744a14a82a..7807f6b8d8 100644 --- a/api/ocm/extensions/pubsub/interface.go +++ b/api/ocm/extensions/pubsub/interface.go @@ -14,7 +14,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/utils/errkind" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/api/utils/runtime/descriptivetype" ) @@ -54,7 +54,7 @@ type ( // PubSubMethod is the handler able to publish // an OCM component version event. type PubSubMethod interface { - NotifyComponentVersion(version common.NameVersion) error + NotifyComponentVersion(version misc.NameVersion) error } // TypeScheme is the registry for specification types for diff --git a/api/ocm/extensions/pubsub/pubsub_test.go b/api/ocm/extensions/pubsub/pubsub_test.go index cac6033e3c..9355262da2 100644 --- a/api/ocm/extensions/pubsub/pubsub_test.go +++ b/api/ocm/extensions/pubsub/pubsub_test.go @@ -17,7 +17,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/pubsub" "ocm.software/ocm/api/ocm/extensions/pubsub/types/compound" "ocm.software/ocm/api/ocm/extensions/repositories/composition" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -30,7 +30,7 @@ const ( type Provider struct { lock sync.Mutex settings map[string]pubsub.PubSubSpec - published sliceutils.Slice[common.NameVersion] + published sliceutils.Slice[misc.NameVersion] } var _ pubsub.Provider = (*Provider)(nil) @@ -114,7 +114,7 @@ type Method struct { var _ pubsub.PubSubMethod = (*Method)(nil) -func (m *Method) NotifyComponentVersion(version common.NameVersion) error { +func (m *Method) NotifyComponentVersion(version misc.NameVersion) error { m.provider.lock.Lock() defer m.provider.lock.Unlock() @@ -148,7 +148,7 @@ var _ = Describe("Pub SubTest Environment", func() { Expect(prov.published).To(BeNil()) MustBeSuccessful(repo.AddComponentVersion(cv)) - Expect(prov.published).To(ConsistOf(common.VersionedElementKey(cv))) + Expect(prov.published).To(ConsistOf(misc.VersionedElementKey(cv))) }) It("indirect setting", func() { @@ -164,6 +164,6 @@ var _ = Describe("Pub SubTest Environment", func() { Expect(prov.published).To(BeNil()) MustBeSuccessful(repo.AddComponentVersion(cv)) - Expect(prov.published).To(ConsistOf(common.VersionedElementKey(cv))) + Expect(prov.published).To(ConsistOf(misc.VersionedElementKey(cv))) }) }) diff --git a/api/ocm/extensions/pubsub/types/compound/type.go b/api/ocm/extensions/pubsub/types/compound/type.go index 7505344d9b..4707a0022a 100644 --- a/api/ocm/extensions/pubsub/types/compound/type.go +++ b/api/ocm/extensions/pubsub/types/compound/type.go @@ -8,7 +8,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/extensions/pubsub" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -93,7 +93,7 @@ type Method struct { var _ pubsub.PubSubMethod = (*Method)(nil) -func (m *Method) NotifyComponentVersion(version common.NameVersion) error { +func (m *Method) NotifyComponentVersion(version misc.NameVersion) error { list := errors.ErrList() for _, m := range m.meths { list.Add(m.NotifyComponentVersion(version)) diff --git a/api/ocm/extensions/pubsub/types/redis/redis_test.go b/api/ocm/extensions/pubsub/types/redis/redis_test.go index 8c1176faca..bcf0d82e40 100644 --- a/api/ocm/extensions/pubsub/types/redis/redis_test.go +++ b/api/ocm/extensions/pubsub/types/redis/redis_test.go @@ -17,7 +17,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/repositories/composition" "ocm.software/ocm/api/ocm/extensions/repositories/ctf" "ocm.software/ocm/api/utils/accessio" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -38,7 +38,7 @@ var _ = Describe("Test Environment", func() { env.CredentialsContext().SetCredentialsForConsumer( identity.GetConsumerId("localhost:6379", "ocm", 0), - credentials.NewCredentials(common.Properties{identity.ATTR_PASSWORD: "redis-test-0815"}), + credentials.NewCredentials(misc.Properties{identity.ATTR_PASSWORD: "redis-test-0815"}), ) repo = Must(ctf.Open(env, ctf.ACC_WRITABLE, ARCH, 0o600, env)) diff --git a/api/ocm/extensions/pubsub/types/redis/type.go b/api/ocm/extensions/pubsub/types/redis/type.go index 247710f650..d5eba7d289 100644 --- a/api/ocm/extensions/pubsub/types/redis/type.go +++ b/api/ocm/extensions/pubsub/types/redis/type.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/extensions/pubsub" "ocm.software/ocm/api/ocm/extensions/pubsub/types/redis/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -78,7 +78,7 @@ type Method struct { var _ pubsub.PubSubMethod = (*Method)(nil) -func (m *Method) NotifyComponentVersion(version common.NameVersion) error { +func (m *Method) NotifyComponentVersion(version misc.NameVersion) error { // TODO: update to credential provider interface opts := &redis.Options{ Addr: m.spec.ServerAddr, diff --git a/api/ocm/extensions/pubsub/utils.go b/api/ocm/extensions/pubsub/utils.go index 31b2abc4b1..be6ffc0917 100644 --- a/api/ocm/extensions/pubsub/utils.go +++ b/api/ocm/extensions/pubsub/utils.go @@ -6,7 +6,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/utils/listformat" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -38,7 +38,7 @@ func PubSubForRepo(repo cpi.Repository) (PubSubMethod, error) { return spec.PubSubMethod(repo) } -func Notify(repo cpi.Repository, nv common.NameVersion) error { +func Notify(repo cpi.Repository, nv misc.NameVersion) error { m, err := PubSubForRepo(repo) if m == nil || err != nil { return err diff --git a/api/ocm/extensions/repositories/comparch/componentarchive.go b/api/ocm/extensions/repositories/comparch/componentarchive.go index f291bcd9d8..555a02111a 100644 --- a/api/ocm/extensions/repositories/comparch/componentarchive.go +++ b/api/ocm/extensions/repositories/comparch/componentarchive.go @@ -14,7 +14,7 @@ import ( "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/errkind" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" ) @@ -219,7 +219,7 @@ func (c *componentArchiveContainer) AddBlob(blob cpi.BlobAccess, refName string, if err != nil { return nil, err } - return localblob.New(common.DigestToFileName(blob.Digest()), refName, blob.MimeType(), global), nil + return localblob.New(misc.DigestToFileName(blob.Digest()), refName, blob.MimeType(), global), nil } // Deprecated: Component Archive (CA) - https://kubernetes.slack.com/archives/C05UWBE8R1D/p1734357630853489 diff --git a/api/ocm/extensions/repositories/comparch/repository.go b/api/ocm/extensions/repositories/comparch/repository.go index 92d2ac0f0b..b340bcea64 100644 --- a/api/ocm/extensions/repositories/comparch/repository.go +++ b/api/ocm/extensions/repositories/comparch/repository.go @@ -6,6 +6,7 @@ import ( "sync" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/datacontext/attrs/vfsattr" @@ -15,10 +16,9 @@ import ( "ocm.software/ocm/api/ocm/extensions/accessmethods/localblob" "ocm.software/ocm/api/ocm/extensions/accessmethods/localfsblob" ocmhdlr "ocm.software/ocm/api/ocm/extensions/blobhandler/handlers/ocm" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/errkind" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" ) @@ -234,7 +234,7 @@ func (c *ComponentAccessImpl) NewVersion(version string, overrides ...bool) (*re if version != c.repo.arch.GetVersion() { return nil, errors.ErrNotSupported(cpi.KIND_COMPONENTVERSION, version, fmt.Sprintf("component archive %s:%s", c.GetName(), c.repo.arch.GetVersion())) } - if !utils.Optional(overrides...) { + if !general.Optional(overrides...) { return nil, errors.ErrAlreadyExists(cpi.KIND_COMPONENTVERSION, fmt.Sprintf("%s:%s", c.GetName(), c.repo.arch.GetVersion())) } return newComponentVersionAccess(c, version, false) @@ -341,7 +341,7 @@ func (c *ComponentVersionContainer) AddBlob(blob cpi.BlobAccess, refName string, if err != nil { return nil, err } - return localblob.New(common.DigestToFileName(blob.Digest()), refName, blob.MimeType(), global), nil + return localblob.New(misc.DigestToFileName(blob.Digest()), refName, blob.MimeType(), global), nil } // Deprecated: Component Archive (CA) - https://kubernetes.slack.com/archives/C05UWBE8R1D/p1734357630853489 diff --git a/api/ocm/extensions/repositories/composition/repository.go b/api/ocm/extensions/repositories/composition/repository.go index 041f9600eb..50ba95edda 100644 --- a/api/ocm/extensions/repositories/composition/repository.go +++ b/api/ocm/extensions/repositories/composition/repository.go @@ -14,7 +14,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/repositories/virtual" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/blobaccess/blobaccess" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) //////////////////////////////////////////////////////////////////////////////// @@ -39,7 +39,7 @@ func NewRepository(ctxp cpi.ContextProvider, names ...string) cpi.Repository { return repo } -type Index = virtual.Index[common.NameVersion] +type Index = virtual.Index[misc.NameVersion] type Access struct { lock sync.Mutex @@ -54,7 +54,7 @@ var _ virtual.Access = (*Access)(nil) func NewAccess(name string) *Access { return &Access{ name: name, - index: virtual.NewIndex[common.NameVersion](), + index: virtual.NewIndex[misc.NameVersion](), blobs: map[string]blobaccess.BlobAccess{}, } } @@ -178,7 +178,7 @@ func (v *VersionAccess) Update() (bool, error) { return false, accessio.ErrReadOnly } if v.desc.GetName() != v.comp || v.desc.GetVersion() != v.vers { - return false, errors.ErrInvalid(cpi.KIND_COMPONENTVERSION, common.VersionedElementKey(v.desc).String()) + return false, errors.ErrInvalid(cpi.KIND_COMPONENTVERSION, misc.VersionedElementKey(v.desc).String()) } i := v.access.index.Get(v.comp, v.vers) if !reflect.DeepEqual(v.desc, i.CD()) { diff --git a/api/ocm/extensions/repositories/genericocireg/componentversion.go b/api/ocm/extensions/repositories/genericocireg/componentversion.go index 950ff9018c..1e3ad2ce48 100644 --- a/api/ocm/extensions/repositories/genericocireg/componentversion.go +++ b/api/ocm/extensions/repositories/genericocireg/componentversion.go @@ -31,7 +31,7 @@ import ( "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/errkind" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/api/version" @@ -178,7 +178,7 @@ const ( ) func (c *ComponentVersionContainer) Update() (bool, error) { - logger := Logger(c.GetContext()).WithValues("cv", common.NewNameVersion(c.comp.name, c.version)) + logger := Logger(c.GetContext()).WithValues("cv", misc.NewNameVersion(c.comp.name, c.version)) err := c.Check() if err != nil { return false, fmt.Errorf("check failed: %w", err) @@ -230,7 +230,7 @@ func (c *ComponentVersionContainer) Update() (bool, error) { if m.Annotations == nil { m.Annotations = map[string]string{} } - m.Annotations[OCM_COMPONENTVERSION] = common.VersionedElementKey(c.bridge).String() + m.Annotations[OCM_COMPONENTVERSION] = misc.VersionedElementKey(c.bridge).String() m.Annotations[OCM_CREATOR] = "OCM Go Library " + version.Current() for layer, info := range layerAnnotations { diff --git a/api/ocm/extensions/repositories/genericocireg/cred_test.go b/api/ocm/extensions/repositories/genericocireg/cred_test.go index d8e37a86f7..7f0e4be8cb 100644 --- a/api/ocm/extensions/repositories/genericocireg/cred_test.go +++ b/api/ocm/extensions/repositories/genericocireg/cred_test.go @@ -12,7 +12,7 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/extensions/repositories/ocireg" "ocm.software/ocm/api/tech/oci/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var _ = Describe("consumer id handling", func() { @@ -41,7 +41,7 @@ var _ = Describe("consumer id handling", func() { creds = Must(credentials.CredentialsForConsumer(credctx, id)) - Expect(creds.Properties()).To(Equal(common.Properties{ + Expect(creds.Properties()).To(Equal(misc.Properties{ identity.ATTR_USERNAME: "test", identity.ATTR_PASSWORD: "password", })) diff --git a/api/ocm/extensions/repositories/genericocireg/info.go b/api/ocm/extensions/repositories/genericocireg/info.go index 73fdadf242..46821ec501 100644 --- a/api/ocm/extensions/repositories/genericocireg/info.go +++ b/api/ocm/extensions/repositories/genericocireg/info.go @@ -7,7 +7,7 @@ import ( "ocm.software/ocm/api/oci/ociutils" "ocm.software/ocm/api/ocm/extensions/repositories/genericocireg/componentmapping" "ocm.software/ocm/api/utils/blobaccess/blobaccess" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -44,7 +44,7 @@ func (h handler) Info(m cpi.ManifestAccess, config []byte) interface{} { return info } -func (h handler) Description(pr common.Printer, m cpi.ManifestAccess, config []byte) { +func (h handler) Description(pr misc.Printer, m cpi.ManifestAccess, config []byte) { pr.Printf("component version:\n") acc := NewStateAccess(m) data, err := blobaccess.BlobData(acc.Get()) diff --git a/api/ocm/extensions/repositories/genericocireg/state.go b/api/ocm/extensions/repositories/genericocireg/state.go index 834a768016..742dd66e7c 100644 --- a/api/ocm/extensions/repositories/genericocireg/state.go +++ b/api/ocm/extensions/repositories/genericocireg/state.go @@ -11,6 +11,7 @@ import ( "github.com/go-test/deep" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/logging" "github.com/opencontainers/go-digest" ociv1 "github.com/opencontainers/image-spec/specs-go/v1" @@ -21,7 +22,6 @@ import ( "ocm.software/ocm/api/ocm/compdesc" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/extensions/repositories/genericocireg/componentmapping" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess/blobaccess" ocmlog "ocm.software/ocm/api/utils/logging" @@ -42,7 +42,7 @@ var _ accessobj.StateAccess = (*StateAccess)(nil) func NewStateAccess(access oci.ManifestAccess, compat ...bool) accessobj.StateAccess { return &StateAccess{ - compat: utils.Optional(compat...), + compat: general.Optional(compat...), access: access, } } diff --git a/api/ocm/extensions/repositories/ocireg/type.go b/api/ocm/extensions/repositories/ocireg/type.go index 77d4e2e9f0..3a1b06a9cf 100644 --- a/api/ocm/extensions/repositories/ocireg/type.go +++ b/api/ocm/extensions/repositories/ocireg/type.go @@ -1,10 +1,11 @@ package ocireg import ( + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/oci/extensions/repositories/ocireg" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/extensions/repositories/genericocireg" - "ocm.software/ocm/api/utils" ) // ComponentNameMapping describes the method that is used to map the "Component Name", "Component Version"-tuples @@ -30,11 +31,11 @@ type RepositorySpec = genericocireg.RepositorySpec // If no ocm meta is given, the subPath part is extracted from the base URL. // Otherwise, the given URL is used as OCI registry URL as it is. func NewRepositorySpec(baseURL string, metas ...*ComponentRepositoryMeta) *RepositorySpec { - return genericocireg.NewRepositorySpec(ocireg.NewRepositorySpec(baseURL), utils.Optional(metas...)) + return genericocireg.NewRepositorySpec(ocireg.NewRepositorySpec(baseURL), general.Optional(metas...)) } func NewComponentRepositoryMeta(subPath string, mapping ...ComponentNameMapping) *ComponentRepositoryMeta { - return genericocireg.NewComponentRepositoryMeta(subPath, utils.OptionalDefaulted(OCIRegistryURLPathMapping, mapping...)) + return genericocireg.NewComponentRepositoryMeta(subPath, general.OptionalDefaulted(OCIRegistryURLPathMapping, mapping...)) } func NewRepository(ctx cpi.ContextProvider, baseURL string, metas ...*ComponentRepositoryMeta) (cpi.Repository, error) { diff --git a/api/ocm/extensions/repositories/virtual/example/example.go b/api/ocm/extensions/repositories/virtual/example/example.go index 40532dbd44..5d205e3efd 100644 --- a/api/ocm/extensions/repositories/virtual/example/example.go +++ b/api/ocm/extensions/repositories/virtual/example/example.go @@ -18,7 +18,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/repositories/virtual" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/blobaccess/file" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) //////////////////////////////////////////////////////////////////////////////// @@ -26,7 +26,7 @@ import ( func NewRepository(ctx cpi.ContextProvider, fs vfs.FileSystem, readonly bool, path ...string) (cpi.Repository, error) { var err error - p := general.Optional(path...) + p := general.OptionalNonZero(path...) if p != "" && p != "/" { fs, err = projectionfs.New(fs, p) if err != nil { @@ -128,7 +128,7 @@ func (a *Access) GetComponentVersion(comp, version string) (virtual.VersionAcces i := a.index.Get(comp, version) if i == nil { if a.readonly { - return nil, errors.ErrNotFound(cpi.KIND_COMPONENTVERSION, common.NewNameVersion(comp, version).String()) + return nil, errors.ErrNotFound(cpi.KIND_COMPONENTVERSION, misc.NewNameVersion(comp, version).String()) } cd = compdesc.New(comp, version) hash := sha256.Sum256([]byte(comp + ":" + version)) @@ -197,7 +197,7 @@ func (v *VersionAccess) Update() (bool, error) { defer v.access.lock.Unlock() if v.desc.GetName() != v.comp || v.desc.GetVersion() != v.vers { - return false, errors.ErrInvalid(cpi.KIND_COMPONENTVERSION, common.VersionedElementKey(v.desc).String()) + return false, errors.ErrInvalid(cpi.KIND_COMPONENTVERSION, misc.VersionedElementKey(v.desc).String()) } i := v.access.index.Get(v.comp, v.vers) if !reflect.DeepEqual(v.desc, i.CD()) { diff --git a/api/ocm/extensions/repositories/virtual/index.go b/api/ocm/extensions/repositories/virtual/index.go index bb3092ea24..77a38c0548 100644 --- a/api/ocm/extensions/repositories/virtual/index.go +++ b/api/ocm/extensions/repositories/virtual/index.go @@ -4,12 +4,12 @@ import ( "sync" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" ocicpi "ocm.software/ocm/api/oci/cpi" "ocm.software/ocm/api/ocm/compdesc" "ocm.software/ocm/api/ocm/cpi" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type IndexEntry[I interface{}] struct { @@ -45,7 +45,7 @@ func (i *Index[I]) NumComponents(prefix string) (int, error) { i.lock.Lock() defer i.lock.Unlock() - list := ocicpi.FilterByNamespacePrefix(prefix, utils.StringMapKeys(i.descriptors)) + list := ocicpi.FilterByNamespacePrefix(prefix, maputils.OrderedKeys(i.descriptors)) return len(list), nil } @@ -53,7 +53,7 @@ func (i *Index[I]) GetComponents(prefix string, closure bool) ([]string, error) i.lock.Lock() defer i.lock.Unlock() - return ocicpi.FilterChildren(closure, prefix, utils.StringMapKeys(i.descriptors)), nil + return ocicpi.FilterChildren(closure, prefix, maputils.OrderedKeys(i.descriptors)), nil } func (i *Index[I]) GetVersions(comp string) []string { @@ -64,7 +64,7 @@ func (i *Index[I]) GetVersions(comp string) []string { if len(vers) == 0 { return []string{} } - return utils.StringMapKeys(vers) + return maputils.OrderedKeys(vers) } func (i *Index[I]) Get(comp, vers string) *IndexEntry[I] { @@ -89,7 +89,7 @@ func (i *Index[I]) Add(cd *compdesc.ComponentDescriptor, info I) error { i.descriptors[cd.Name] = set } if set[cd.Version] != nil { - return errors.ErrAlreadyExists(cpi.KIND_COMPONENTVERSION, common.VersionedElementKey(cd).String()) + return errors.ErrAlreadyExists(cpi.KIND_COMPONENTVERSION, misc.VersionedElementKey(cd).String()) } set[cd.Version] = &IndexEntry[I]{cd, info} return nil diff --git a/api/ocm/internal/blobhandler.go b/api/ocm/internal/blobhandler.go index 06b81c0619..6b6d6e2144 100644 --- a/api/ocm/internal/blobhandler.go +++ b/api/ocm/internal/blobhandler.go @@ -6,7 +6,8 @@ import ( "strings" "sync" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/utils/registrations" ) @@ -303,7 +304,7 @@ type blobHandlerRegistry struct { var DefaultBlobHandlerRegistry = NewBlobHandlerRegistry() func NewBlobHandlerRegistry(base ...BlobHandlerRegistry) BlobHandlerRegistry { - b := utils.Optional(base...) + b := general.Optional(base...) r := &blobHandlerRegistry{ base: b, handlers: map[BlobHandlerKey]BlobHandler{}, diff --git a/api/ocm/internal/context.go b/api/ocm/internal/context.go index 67be7a1029..cf7100f1f1 100644 --- a/api/ocm/internal/context.go +++ b/api/ocm/internal/context.go @@ -7,6 +7,7 @@ import ( . "github.com/mandelsoft/goutils/finalizer" + "github.com/mandelsoft/goutils/general" "github.com/modern-go/reflect2" "ocm.software/ocm/api/config" @@ -16,7 +17,6 @@ import ( "ocm.software/ocm/api/oci" "ocm.software/ocm/api/oci/extensions/repositories/ctf" "ocm.software/ocm/api/ocm/compdesc" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -151,7 +151,7 @@ type gcWrapper struct { } func newView(c *_context, ref ...bool) Context { - if utils.Optional(ref...) { + if general.Optional(ref...) { return datacontext.FinalizedContext[gcWrapper](c) } return c diff --git a/api/ocm/internal/delegation.go b/api/ocm/internal/delegation.go index 22f1211e1d..586e73cd85 100644 --- a/api/ocm/internal/delegation.go +++ b/api/ocm/internal/delegation.go @@ -4,7 +4,9 @@ import ( "sort" "sync" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/maputils" + "ocm.software/ocm/api/utils/runtime" ) @@ -47,7 +49,7 @@ var _ DelegationRegistry[Context, RepositorySpec] = (*delegationRegistry[Context func NewDelegationRegistry[C any, T runtime.TypedObject](base ...DelegationRegistry[C, T]) DelegationRegistry[C, T] { return &delegationRegistry[C, T]{ decoders: map[string]PriorityDecoder[C, T]{}, - base: utils.Optional(base...), + base: general.Optional(base...), } } @@ -92,7 +94,7 @@ func (d *delegationRegistry[C, T]) Decode(ctx C, data []byte, unmarshaller runti var list []PriorityDecoder[C, T] delegates := d.Delegations() - names := utils.StringMapKeys(delegates) + names := maputils.OrderedKeys(delegates) for _, n := range names { list = append(list, delegates[n]) diff --git a/api/ocm/internal/digesthandler.go b/api/ocm/internal/digesthandler.go index 3fda994124..433d43e048 100644 --- a/api/ocm/internal/digesthandler.go +++ b/api/ocm/internal/digesthandler.go @@ -5,9 +5,10 @@ import ( "slices" "sync" + "github.com/mandelsoft/goutils/general" + metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/tech/signing" - "ocm.software/ocm/api/utils" ) type DigesterType struct { @@ -77,7 +78,7 @@ var DefaultBlobDigesterRegistry = NewBlobDigesterRegistry() func NewBlobDigesterRegistry(base ...BlobDigesterRegistry) BlobDigesterRegistry { return &blobDigesterRegistry{ - base: utils.Optional(base...), + base: general.Optional(base...), typehandlers: map[string][]BlobDigester{}, normhandlers: map[string][]BlobDigester{}, digesters: map[DigesterType]BlobDigester{}, diff --git a/api/ocm/internal/modopts.go b/api/ocm/internal/modopts.go index df43fc40f3..43f28e88fb 100644 --- a/api/ocm/internal/modopts.go +++ b/api/ocm/internal/modopts.go @@ -10,7 +10,6 @@ import ( "ocm.software/ocm/api/ocm/compdesc" v1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/ocm/selectors/accessors" - "ocm.software/ocm/api/utils" ) type BlobUploadOption interface { @@ -51,7 +50,7 @@ func (o *BlobUploadOptions) ApplyBlobUploadOption(opts *BlobUploadOptions) { optionutils.ApplyOption(o.UseNoDefaultIfNotSet, &opts.UseNoDefaultIfNotSet) if o.BlobHandlerProvider != nil { opts.BlobHandlerProvider = o.BlobHandlerProvider - opts.UseNoDefaultIfNotSet = utils.BoolP(true) + opts.UseNoDefaultIfNotSet = optionutils.BoolP(true) } } @@ -64,11 +63,11 @@ func (o nodefaulthandler) ApplyBlobModificationOption(opts *BlobModificationOpti } func (o nodefaulthandler) ApplyBlobUploadOption(opts *BlobUploadOptions) { - opts.UseNoDefaultIfNotSet = optionutils.PointerTo(bool(o)) + opts.UseNoDefaultIfNotSet = generics.PointerTo(bool(o)) } func UseNoDefaultBlobHandlers(b ...bool) BlobOptionImpl { - return nodefaulthandler(utils.OptionalDefaultedBool(true, b...)) + return nodefaulthandler(general.OptionalDefaultedBool(true, b...)) } //////////////////////////////////////////////////////////////////////////////// @@ -136,7 +135,7 @@ func (m *TargetElementOptions) ApplyTargetOption(opts *TargetElementOptions) { } func (m *TargetElementOptions) IsDisableExtraIdentityDefaulting() bool { - return utils.AsBool(m.DisableExtraIdentityDefaulting) + return optionutils.AsBool(m.DisableExtraIdentityDefaulting) } func (m *TargetElementOptions) ApplyTargetOptions(list ...TargetElementOption) *TargetElementOptions { @@ -188,7 +187,7 @@ func (m *ElementModificationOptions) ApplyElementModificationOptions(list ...Ele } func (m *ElementModificationOptions) IsModifyElement(def ...bool) bool { - return utils.AsBool(m.ModifyElement, def...) + return optionutils.AsBool(m.ModifyElement, def...) } func NewElementModificationOptions(list ...ElementModificationOption) *ElementModificationOptions { @@ -233,15 +232,15 @@ type ModificationOptions struct { } func (m *ModificationOptions) IsAcceptExistentDigests() bool { - return utils.AsBool(m.AcceptExistentDigests) + return optionutils.AsBool(m.AcceptExistentDigests) } func (m *ModificationOptions) IsSkipDigest() bool { - return utils.AsBool(m.SkipDigest) + return optionutils.AsBool(m.SkipDigest) } func (m *ModificationOptions) IsSkipVerify() bool { - return utils.AsBool(m.SkipVerify) + return optionutils.AsBool(m.SkipVerify) } func (m *ModificationOptions) ApplyModificationOptions(list ...ModificationOption) *ModificationOptions { @@ -298,7 +297,7 @@ func (m TargetIndex) ApplyModificationOption(opts *ModificationOptions) { func (m TargetIndex) ApplyElementModificationOption(opts *ElementModificationOptions) { if m < 0 { - opts.ModifyElement = generics.Pointer(true) + opts.ModifyElement = generics.PointerTo(true) } m.ApplyTargetOption(&opts.TargetElementOptions) } @@ -379,12 +378,12 @@ func (m disableextraidentitydefaulting) ApplyElementModificationOption(opts *Ele } func (m disableextraidentitydefaulting) ApplyTargetOption(opts *TargetElementOptions) { - opts.DisableExtraIdentityDefaulting = utils.BoolP(m) + opts.DisableExtraIdentityDefaulting = optionutils.BoolP(m) } // DisableExtraIdentityDefaulting disables the defaulting of the extra identity. func DisableExtraIdentityDefaulting(flag ...bool) TargetOptionImpl { - return disableextraidentitydefaulting(utils.OptionalDefaultedBool(true, flag...)) + return disableextraidentitydefaulting(general.OptionalDefaultedBool(true, flag...)) } //////////////////////////////////////////////////////////////////////////////// @@ -428,19 +427,19 @@ func (m modifyelement) ApplyBlobModificationOption(opts *BlobModificationOptions } func (m modifyelement) ApplyModificationOption(opts *ModificationOptions) { - opts.ModifyElement = utils.BoolP(m) + opts.ModifyElement = optionutils.BoolP(m) } func (m modifyelement) ApplyElementModificationOption(opts *ElementModificationOptions) { - opts.ModifyElement = utils.BoolP(m) + opts.ModifyElement = optionutils.BoolP(m) } func ModifyResource(flag ...bool) ModOptionImpl { - return modifyelement(utils.OptionalDefaultedBool(true, flag...)) + return modifyelement(general.OptionalDefaultedBool(true, flag...)) } func ModifyElement(flag ...bool) ElemModOptionImpl { - return modifyelement(utils.OptionalDefaultedBool(true, flag...)) + return modifyelement(general.OptionalDefaultedBool(true, flag...)) } //////////////////////////////////////////////////////////////////////////////// @@ -452,11 +451,11 @@ func (m acceptdigests) ApplyBlobModificationOption(opts *BlobModificationOptions } func (m acceptdigests) ApplyModificationOption(opts *ModificationOptions) { - opts.AcceptExistentDigests = utils.BoolP(m) + opts.AcceptExistentDigests = optionutils.BoolP(m) } func AcceptExistentDigests(flag ...bool) ModOptionImpl { - return acceptdigests(utils.OptionalDefaultedBool(true, flag...)) + return acceptdigests(general.OptionalDefaultedBool(true, flag...)) } //////////////////////////////////////////////////////////////////////////////// @@ -472,7 +471,7 @@ func (m hashalgo) ApplyModificationOption(opts *ModificationOptions) { } func WithDefaultHashAlgorithm(algo ...string) ModOptionImpl { - return hashalgo(utils.Optional(algo...)) + return hashalgo(general.Optional(algo...)) } //////////////////////////////////////////////////////////////////////////////// @@ -502,11 +501,11 @@ func (m skipverify) ApplyBlobModificationOption(opts *BlobModificationOptions) { } func (m skipverify) ApplyModificationOption(opts *ModificationOptions) { - opts.SkipVerify = utils.BoolP(m) + opts.SkipVerify = optionutils.BoolP(m) } func SkipVerify(flag ...bool) ModOptionImpl { - return skipverify(utils.OptionalDefaultedBool(true, flag...)) + return skipverify(general.OptionalDefaultedBool(true, flag...)) } //////////////////////////////////////////////////////////////////////////////// @@ -518,14 +517,14 @@ func (m skipdigest) ApplyBlobModificationOption(opts *BlobModificationOptions) { } func (m skipdigest) ApplyModificationOption(opts *ModificationOptions) { - opts.SkipDigest = utils.BoolP(m) + opts.SkipDigest = optionutils.BoolP(m) } // SkipDigest disables digest creation if enabled. // // Deprecated: for legacy code, only. func SkipDigest(flag ...bool) ModOptionImpl { - return skipdigest(utils.OptionalDefaultedBool(true, flag...)) + return skipdigest(general.OptionalDefaultedBool(true, flag...)) } //////////////////////////////////////////////////////////////////////////////// @@ -605,10 +604,10 @@ func (o *AddVersionOptions) ApplyAddVersionOption(opts *AddVersionOptions) { type overwrite bool func (m overwrite) ApplyAddVersionOption(opts *AddVersionOptions) { - opts.Overwrite = utils.BoolP(m) + opts.Overwrite = optionutils.BoolP(m) } // Overwrite enabled the overwrite mode for adding a component version. func Overwrite(flag ...bool) AddVersionOption { - return overwrite(utils.OptionalDefaultedBool(true, flag...)) + return overwrite(general.OptionalDefaultedBool(true, flag...)) } diff --git a/api/ocm/internal/repository.go b/api/ocm/internal/repository.go index 7ed53168f7..cc480513cc 100644 --- a/api/ocm/internal/repository.go +++ b/api/ocm/internal/repository.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/ocm/selectors/rscsel" "ocm.software/ocm/api/ocm/selectors/srcsel" "ocm.software/ocm/api/utils/blobaccess/blobaccess" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt/resource" ) @@ -113,7 +113,7 @@ type ComponentReference = compdesc.Reference type ComponentVersionAccess interface { resource.ResourceView[ComponentVersionAccess] - common.VersionedElement + misc.VersionedElement io.Closer ReadOnlyFeature diff --git a/api/ocm/internal/repotypes.go b/api/ocm/internal/repotypes.go index 0d44985275..0f550454eb 100644 --- a/api/ocm/internal/repotypes.go +++ b/api/ocm/internal/repotypes.go @@ -4,12 +4,12 @@ import ( "encoding/json" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" "github.com/modern-go/reflect2" "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/oci" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -64,12 +64,12 @@ type repositoryTypeScheme struct { } func NewRepositoryTypeScheme(defaultDecoder RepositorySpecDecoder, base ...RepositoryTypeScheme) RepositoryTypeScheme { - scheme := runtime.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType](&UnknownRepositorySpec{}, true, defaultDecoder, utils.Optional(base...)) + scheme := runtime.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType](&UnknownRepositorySpec{}, true, defaultDecoder, general.Optional(base...)) return &repositoryTypeScheme{scheme} } func NewStrictRepositoryTypeScheme(base ...RepositoryTypeScheme) RepositoryTypeScheme { - scheme := runtime.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType](nil, false, nil, utils.Optional(base...)) + scheme := runtime.MustNewDefaultTypeScheme[RepositorySpec, RepositoryType](nil, false, nil, general.Optional(base...)) return &repositoryTypeScheme{scheme} } diff --git a/api/ocm/internal/resolver.go b/api/ocm/internal/resolver.go index b22dd33361..4c8b681092 100644 --- a/api/ocm/internal/resolver.go +++ b/api/ocm/internal/resolver.go @@ -11,7 +11,7 @@ import ( "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" "ocm.software/ocm/api/utils/registrations" ) @@ -309,7 +309,7 @@ func (r *MatchingResolver) LookupComponentVersion(name string, version string) ( } } } - return nil, errors.ErrNotFound(KIND_COMPONENTVERSION, common.NewNameVersion(name, version).String()) + return nil, errors.ErrNotFound(KIND_COMPONENTVERSION, misc.NewNameVersion(name, version).String()) } func (r *MatchingResolver) LookupComponentProviders(name string) []ResolvedComponentProvider { diff --git a/api/ocm/ocmutils/check/check.go b/api/ocm/ocmutils/check/check.go index 232fafb649..2fc68c0223 100644 --- a/api/ocm/ocmutils/check/check.go +++ b/api/ocm/ocmutils/check/check.go @@ -9,7 +9,7 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Result struct { @@ -29,17 +29,17 @@ func (r *Result) IsEmpty() bool { return len(r.Missing) == 0 && len(r.Resources) == 0 && len(r.Sources) == 0 } -type Missing map[common.NameVersion]common.History +type Missing map[misc.NameVersion]misc.History func (n Missing) MarshalJSON() ([]byte, error) { - m := map[string]common.History{} + m := map[string]misc.History{} for k, v := range n { m[k.String()] = v } return json.Marshal(m) } -type Cache = map[common.NameVersion]*Result +type Cache = map[misc.NameVersion]*Result //////////////////////////////////////////////////////////////////////////////// @@ -55,10 +55,10 @@ func Check(opts ...Option) *Options { func (a *Options) For(cv ocm.ComponentVersionAccess) (*Result, error) { cache := Cache{} - return a.handle(cache, cv, common.History{common.VersionedElementKey(cv)}) + return a.handle(cache, cv, misc.History{misc.VersionedElementKey(cv)}) } -func (a *Options) ForId(repo ocm.Repository, id common.NameVersion) (*Result, error) { +func (a *Options) ForId(repo ocm.Repository, id misc.NameVersion) (*Result, error) { cv, err := repo.LookupComponentVersion(id.GetName(), id.GetVersion()) if err != nil { return nil, err @@ -67,7 +67,7 @@ func (a *Options) ForId(repo ocm.Repository, id common.NameVersion) (*Result, er return a.For(cv) } -func (a *Options) check(cache Cache, repo ocm.Repository, id common.NameVersion, h common.History) (*Result, error) { +func (a *Options) check(cache Cache, repo ocm.Repository, id misc.NameVersion, h misc.History) (*Result, error) { if r, ok := cache[id]; ok { return r, nil } @@ -95,11 +95,11 @@ func (a *Options) check(cache Cache, repo ocm.Repository, id common.NameVersion, return r, err } -func (a *Options) handle(cache Cache, cv ocm.ComponentVersionAccess, h common.History) (*Result, error) { +func (a *Options) handle(cache Cache, cv ocm.ComponentVersionAccess, h misc.History) (*Result, error) { result := newResult() for _, r := range cv.GetDescriptor().References { - id := common.NewNameVersion(r.ComponentName, r.Version) + id := misc.NewNameVersion(r.ComponentName, r.Version) n, err := a.check(cache, cv.Repository(), id, h) if err != nil { return result, err diff --git a/api/ocm/ocmutils/check/check_test.go b/api/ocm/ocmutils/check/check_test.go index 0e90e144bd..d2f3235532 100644 --- a/api/ocm/ocmutils/check/check_test.go +++ b/api/ocm/ocmutils/check/check_test.go @@ -15,7 +15,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/repositories/ctf" "ocm.software/ocm/api/ocm/ocmutils/check" "ocm.software/ocm/api/utils/accessio" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -52,7 +52,7 @@ var _ = Describe("Test Environment", func() { spec := Must(ctf.NewRepositorySpec(ctf.ACC_READONLY, ARCH, env)) repo := Must(env.OCMContext().RepositoryForSpec(spec)) defer Close(repo, "repo") - result := Must(check.Check().ForId(repo, common.NewNameVersion(COMP, VERSION))) + result := Must(check.Check().ForId(repo, misc.NewNameVersion(COMP, VERSION))) Expect(result).To(BeNil()) }) @@ -78,7 +78,7 @@ var _ = Describe("Test Environment", func() { }) It("outputs table", func() { - result := Must(check.Check().ForId(repo, common.NewNameVersion(COMP, VERSION))) + result := Must(check.Check().ForId(repo, misc.NewNameVersion(COMP, VERSION))) Expect(result).NotTo(BeNil()) Expect(json.Marshal(result)).To(YAMLEqual(` @@ -109,7 +109,7 @@ missing: spec := Must(ctf.NewRepositorySpec(ctf.ACC_READONLY, ARCH, env)) repo := Must(env.OCMContext().RepositoryForSpec(spec)) defer Close(repo, "repo") - result := Must(check.Check().ForId(repo, common.NewNameVersion(COMP, VERSION))) + result := Must(check.Check().ForId(repo, misc.NewNameVersion(COMP, VERSION))) Expect(result).To(BeNil()) }) @@ -129,7 +129,7 @@ missing: spec := Must(ctf.NewRepositorySpec(ctf.ACC_READONLY, ARCH, env)) repo := Must(env.OCMContext().RepositoryForSpec(spec)) defer Close(repo, "repo") - ExpectError(check.Check().ForId(repo, common.NewNameVersion(COMP, VERSION))).To( + ExpectError(check.Check().ForId(repo, misc.NewNameVersion(COMP, VERSION))).To( MatchError("component version recursion: use of test.de/z:v1 for test.de/x:v1->test.de/z:v1->test.de/y:v1")) }) @@ -149,7 +149,7 @@ missing: spec := Must(ctf.NewRepositorySpec(ctf.ACC_READONLY, ARCH, env)) repo := Must(env.OCMContext().RepositoryForSpec(spec)) defer Close(repo, "repo") - result := Must(check.Check(check.LocalResourcesOnly()).ForId(repo, common.NewNameVersion(COMP, VERSION))) + result := Must(check.Check(check.LocalResourcesOnly()).ForId(repo, misc.NewNameVersion(COMP, VERSION))) Expect(result).NotTo(BeNil()) Expect(result).To(YAMLEqual(` resources: @@ -161,7 +161,7 @@ resources: spec := Must(ctf.NewRepositorySpec(ctf.ACC_READONLY, ARCH, env)) repo := Must(env.OCMContext().RepositoryForSpec(spec)) defer Close(repo, "repo") - result := Must(check.Check().ForId(repo, common.NewNameVersion(COMP, VERSION))) + result := Must(check.Check().ForId(repo, misc.NewNameVersion(COMP, VERSION))) Expect(result).To(BeNil()) }) }) @@ -182,7 +182,7 @@ resources: spec := Must(ctf.NewRepositorySpec(ctf.ACC_READONLY, ARCH, env)) repo := Must(env.OCMContext().RepositoryForSpec(spec)) defer Close(repo, "repo") - result := Must(check.Check(check.LocalSourcesOnly()).ForId(repo, common.NewNameVersion(COMP, VERSION))) + result := Must(check.Check(check.LocalSourcesOnly()).ForId(repo, misc.NewNameVersion(COMP, VERSION))) Expect(result).NotTo(BeNil()) Expect(result).To(YAMLEqual(` sources: @@ -194,7 +194,7 @@ sources: spec := Must(ctf.NewRepositorySpec(ctf.ACC_READONLY, ARCH, env)) repo := Must(env.OCMContext().RepositoryForSpec(spec)) defer Close(repo, "repo") - result := Must(check.Check().ForId(repo, common.NewNameVersion(COMP, VERSION))) + result := Must(check.Check().ForId(repo, misc.NewNameVersion(COMP, VERSION))) Expect(result).To(BeNil()) }) }) diff --git a/api/ocm/ocmutils/check/options.go b/api/ocm/ocmutils/check/options.go index 3cb14a4a26..44158e47c2 100644 --- a/api/ocm/ocmutils/check/options.go +++ b/api/ocm/ocmutils/check/options.go @@ -1,9 +1,9 @@ package check import ( + "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/generics" "github.com/mandelsoft/goutils/optionutils" - - "ocm.software/ocm/api/utils" ) type Option = optionutils.Option[*Options] @@ -25,11 +25,11 @@ func (o *Options) ApplyTo(opts *Options) { type localSources bool func LocalSourcesOnly(b ...bool) Option { - return localSources(utils.OptionalDefaultedBool(true, b...)) + return localSources(general.OptionalDefaultedBool(true, b...)) } func (l localSources) ApplyTo(t *Options) { - t.CheckLocalSources = optionutils.PointerTo(bool(l)) + t.CheckLocalSources = generics.PointerTo(bool(l)) } //////////////////////////////////////////////////////////////////////////////// @@ -37,9 +37,9 @@ func (l localSources) ApplyTo(t *Options) { type localResources bool func LocalResourcesOnly(b ...bool) Option { - return localResources(utils.OptionalDefaultedBool(true, b...)) + return localResources(general.OptionalDefaultedBool(true, b...)) } func (l localResources) ApplyTo(t *Options) { - t.CheckLocalResources = optionutils.PointerTo(bool(l)) + t.CheckLocalResources = generics.PointerTo(bool(l)) } diff --git a/api/ocm/ocmutils/localize/instantiate.go b/api/ocm/ocmutils/localize/instantiate.go index ae0d8594cb..9c2bf748af 100644 --- a/api/ocm/ocmutils/localize/instantiate.go +++ b/api/ocm/ocmutils/localize/instantiate.go @@ -8,7 +8,7 @@ import ( resourcetypes "ocm.software/ocm/api/ocm/extensions/artifacttypes" "ocm.software/ocm/api/ocm/extensions/download" "ocm.software/ocm/api/ocm/resourcerefs" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) func Instantiate(rules *InstantiationRules, cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver, config []byte, fs vfs.FileSystem, types ...string) error { @@ -38,7 +38,7 @@ func Instantiate(rules *InstantiationRules, cv ocm.ComponentVersionAccess, resol } } - ok, _, err := download.For(cv.GetContext()).Download(common.NewPrinter(nil), template, ".", fs) + ok, _, err := download.For(cv.GetContext()).Download(misc.NewPrinter(nil), template, ".", fs) if err != nil { return errors.Wrapf(err, "cannot download resource %s", rules.Template) } diff --git a/api/ocm/ocmutils/walk.go b/api/ocm/ocmutils/walk.go index b3b7b6a133..0aebb0c194 100644 --- a/api/ocm/ocmutils/walk.go +++ b/api/ocm/ocmutils/walk.go @@ -4,7 +4,7 @@ import ( "github.com/mandelsoft/goutils/errors" "ocm.software/ocm/api/ocm" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) // WalkingStep is used to process a component version during graph traversal. @@ -12,15 +12,15 @@ import ( // If an error is returned the traversal is aborted with this error. // Additionally, an info object of type T can be registered in the state for the // component version. -type WalkingStep[T any] func(state common.WalkingState[T, ocm.ComponentVersionAccess], cv ocm.ComponentVersionAccess) (bool, error) +type WalkingStep[T any] func(state misc.WalkingState[T, ocm.ComponentVersionAccess], cv ocm.ComponentVersionAccess) (bool, error) // Walk traverses a component version graph using the WalkingStep to // process found component version. -func Walk[T any](closure common.NameVersionInfo[T], cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver, step WalkingStep[T]) (common.NameVersionInfo[T], error) { +func Walk[T any](closure misc.NameVersionInfo[T], cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver, step WalkingStep[T]) (misc.NameVersionInfo[T], error) { if closure == nil { - closure = common.NameVersionInfo[T]{} + closure = misc.NameVersionInfo[T]{} } - state := common.WalkingState[T, ocm.ComponentVersionAccess]{ + state := misc.WalkingState[T, ocm.ComponentVersionAccess]{ Closure: closure, Context: cv, } @@ -28,8 +28,8 @@ func Walk[T any](closure common.NameVersionInfo[T], cv ocm.ComponentVersionAcces return closure, err } -func walk[T any](state common.WalkingState[T, ocm.ComponentVersionAccess], cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver, step WalkingStep[T]) error { - nv := common.VersionedElementKey(cv) +func walk[T any](state misc.WalkingState[T, ocm.ComponentVersionAccess], cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver, step WalkingStep[T]) error { + nv := misc.VersionedElementKey(cv) if ok, err := state.Add(ocm.KIND_COMPONENTVERSION, nv); !ok || err != nil { return err } diff --git a/api/ocm/plugin/cache/updater.go b/api/ocm/plugin/cache/updater.go index 1b30dfc6e5..a4b591e2d1 100644 --- a/api/ocm/plugin/cache/updater.go +++ b/api/ocm/plugin/cache/updater.go @@ -24,7 +24,7 @@ import ( "ocm.software/ocm/api/ocm/plugin/descriptor" "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/filelock" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/semverutils" ) @@ -104,13 +104,13 @@ type PluginUpdater struct { Constraints []*semver.Constraints Current string - Printer common.Printer + Printer misc.Printer } -func NewPluginUpdater(ctx ocm.ContextProvider, printer common.Printer) *PluginUpdater { +func NewPluginUpdater(ctx ocm.ContextProvider, printer misc.Printer) *PluginUpdater { return &PluginUpdater{ Context: ctx.OCMContext(), - Printer: common.AssurePrinter(printer), + Printer: misc.AssurePrinter(printer), } } @@ -233,7 +233,7 @@ func (o *PluginUpdater) downloadLatest(session ocm.Session, comp ocm.ComponentAc } func (o *PluginUpdater) download(session ocm.Session, cv ocm.ComponentVersionAccess, name string) (err error) { - defer errors.PropagateErrorf(&err, nil, "%s", common.VersionedElementKey(cv)) + defer errors.PropagateErrorf(&err, nil, "%s", misc.VersionedElementKey(cv)) var found ocm.ResourceAccess var wrong ocm.ResourceAccess diff --git a/api/ocm/plugin/common/describe.go b/api/ocm/plugin/common/describe.go index a2421ee540..2c614f876d 100644 --- a/api/ocm/plugin/common/describe.go +++ b/api/ocm/plugin/common/describe.go @@ -6,23 +6,25 @@ import ( "strings" "github.com/Masterminds/semver/v3" + "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/goutils/set" + "github.com/mandelsoft/goutils/stringutils" "ocm.software/ocm/api/datacontext/action/api" "ocm.software/ocm/api/ocm/extensions/accessmethods/options" "ocm.software/ocm/api/ocm/plugin/descriptor" "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/semverutils" ) -func DescribePluginDescriptor(reg api.ActionTypeRegistry, d *descriptor.Descriptor, out common.Printer) { +func DescribePluginDescriptor(reg api.ActionTypeRegistry, d *descriptor.Descriptor, out misc.Printer) { out.Printf("Plugin Name: %s\n", d.PluginName) out.Printf("Plugin Version: %s\n", d.PluginVersion) DescribePluginDescriptorCapabilities(reg, d, out) } -func DescribePluginDescriptorCapabilities(reg api.ActionTypeRegistry, d *descriptor.Descriptor, out common.Printer) { +func DescribePluginDescriptorCapabilities(reg api.ActionTypeRegistry, d *descriptor.Descriptor, out misc.Printer) { caps := d.Capabilities() if len(caps) == 0 { out.Printf("Capabilities: none\n") @@ -31,9 +33,9 @@ func DescribePluginDescriptorCapabilities(reg api.ActionTypeRegistry, d *descrip } out.Printf("Description: \n") if d.Long == "" { - out.Printf("%s\n", utils.IndentLines(d.Short, " ")) + out.Printf("%s\n", stringutils.IndentLines(d.Short, " ")) } else { - out.Printf("%s\n", utils.IndentLines(d.Long, " ")) + out.Printf("%s\n", stringutils.IndentLines(d.Long, " ")) } if len(d.AccessMethods) > 0 { out.Printf("\n") @@ -144,18 +146,18 @@ func GetAccessMethodInfo(methods []descriptor.AccessMethodDescriptor) map[string return found } -func DescribeAccessMethods(d *descriptor.Descriptor, out common.Printer) { +func DescribeAccessMethods(d *descriptor.Descriptor, out misc.Printer) { methods := GetAccessMethodInfo(d.AccessMethods) - for _, n := range utils.StringMapKeys(methods) { + for _, n := range maputils.OrderedKeys(methods) { out.Printf("- Name: %s\n", n) m := methods[n] if m.Description != "" { - out.Printf("%s\n", utils.IndentLines(m.Description, " ")) + out.Printf("%s\n", stringutils.IndentLines(m.Description, " ")) } out := out.AddGap(" ") out.Printf("Versions:\n") - for _, vn := range utils.StringMapKeys(m.Versions) { + for _, vn := range maputils.OrderedKeys(m.Versions) { out.Printf("- Version: %s\n", vn) out := out.AddGap(" ") v := m.Versions[vn] @@ -221,21 +223,21 @@ func GetActionInfo(reg api.ActionTypeRegistry, actions []descriptor.ActionDescri return found } -func DescribeActions(reg api.ActionTypeRegistry, d *descriptor.Descriptor, out common.Printer) { +func DescribeActions(reg api.ActionTypeRegistry, d *descriptor.Descriptor, out misc.Printer) { actions := GetActionInfo(reg, d.Actions) - for _, n := range utils.StringMapKeys(actions) { + for _, n := range maputils.OrderedKeys(actions) { a := actions[n] out.Printf("- Name: %s%s\n", n, a.Error) if a.Description != "" { - out.Printf("%s\n", utils.IndentLines(a.Description, " ")) + out.Printf("%s\n", stringutils.IndentLines(a.Description, " ")) } if a.Usage != "" { - out.Printf("\n%s\n", utils.IndentLines(a.Usage, " ")) + out.Printf("\n%s\n", stringutils.IndentLines(a.Usage, " ")) } if a.ActionDesc != "" { out.Printf(" Info:\n") - out.Printf("%s\n", utils.IndentLines(a.ActionDesc, " ")) + out.Printf("%s\n", stringutils.IndentLines(a.ActionDesc, " ")) } out := out.AddGap(" ") if a.BestVersion == "" { @@ -270,28 +272,28 @@ func DescribeActions(reg api.ActionTypeRegistry, d *descriptor.Descriptor, out c } } -func DescribeValueMergeHandlers(d *descriptor.Descriptor, out common.Printer) { +func DescribeValueMergeHandlers(d *descriptor.Descriptor, out misc.Printer) { handlers := map[string]descriptor.ValueMergeHandlerDescriptor{} for _, h := range d.ValueMergeHandlers { handlers[h.GetName()] = h } - for _, n := range utils.StringMapKeys(handlers) { + for _, n := range maputils.OrderedKeys(handlers) { a := handlers[n] out.Printf("- Name: %s\n", n) if a.Description != "" { - out.Printf("%s\n", utils.IndentLines(a.Description, " ")) + out.Printf("%s\n", stringutils.IndentLines(a.Description, " ")) } } } -func DescribeLabelMergeSpecifications(d *descriptor.Descriptor, out common.Printer) { +func DescribeLabelMergeSpecifications(d *descriptor.Descriptor, out misc.Printer) { handlers := map[string]descriptor.LabelMergeSpecification{} for _, h := range d.LabelMergeSpecifications { handlers[h.GetName()] = h } - for _, n := range utils.StringMapKeys(handlers) { + for _, n := range maputils.OrderedKeys(handlers) { a := handlers[n] out.Printf("- Name: %s\n", n) if a.Description != "" { @@ -300,7 +302,7 @@ func DescribeLabelMergeSpecifications(d *descriptor.Descriptor, out common.Print out.Printf(" Config: %s\n", string(a.Config)) } if a.Description != "" { - out.Printf("%s\n", utils.IndentLines(a.Description, " ")) + out.Printf("%s\n", stringutils.IndentLines(a.Description, " ")) } } } @@ -372,19 +374,19 @@ func GetValueSetInfo(valuesets []descriptor.ValueSetDescriptor) map[string]*Valu return found } -func DescribeValueSets(d *descriptor.Descriptor, out common.Printer) { +func DescribeValueSets(d *descriptor.Descriptor, out misc.Printer) { valuesets := GetValueSetInfo(d.ValueSets) - for _, n := range utils.StringMapKeys(valuesets) { + for _, n := range maputils.OrderedKeys(valuesets) { out.Printf("- Name: %s\n", n) m := valuesets[n] out.Printf(" Purposes: %s\n", strings.Join(m.Purposes.AsArray(), ", ")) if m.Description != "" { - out.Printf("%s\n", utils.IndentLines(m.Description, " ")) + out.Printf("%s\n", stringutils.IndentLines(m.Description, " ")) } out := out.AddGap(" ") out.Printf("Versions:\n") - for _, vn := range utils.StringMapKeys(m.Versions) { + for _, vn := range maputils.OrderedKeys(m.Versions) { out.Printf("- Version: %s\n", vn) out := out.AddGap(" ") v := m.Versions[vn] @@ -399,13 +401,13 @@ func DescribeValueSets(d *descriptor.Descriptor, out common.Printer) { } } -func DescribeCLIExtensions(d *descriptor.Descriptor, out common.Printer) { +func DescribeCLIExtensions(d *descriptor.Descriptor, out misc.Printer) { handlers := map[string]descriptor.CommandDescriptor{} for _, h := range d.Commands { handlers[h.GetName()] = h } - for _, n := range utils.StringMapKeys(handlers) { + for _, n := range maputils.OrderedKeys(handlers) { a := handlers[n] s := a.Short if s != "" { @@ -441,11 +443,11 @@ func DescribeCLIExtensions(d *descriptor.Descriptor, out common.Printer) { out.Printf(" Usage: %s\n", usage[1:]) } if a.Description != "" { - out.Printf("%s\n", utils.IndentLines(a.Description, " ")) + out.Printf("%s\n", stringutils.IndentLines(a.Description, " ")) } if a.Example != "" { out.Printf(" Example:\n") - out.Printf("%s\n", utils.IndentLines(a.Example, " ")) + out.Printf("%s\n", stringutils.IndentLines(a.Example, " ")) } } } @@ -495,18 +497,18 @@ func GetTypeInfo(types []descriptor.ConfigTypeDescriptor) map[string]*TypeInfo { return found } -func DescribeConfigTypes(d *descriptor.Descriptor, out common.Printer) { +func DescribeConfigTypes(d *descriptor.Descriptor, out misc.Printer) { types := GetTypeInfo(d.ConfigTypes) - for _, n := range utils.StringMapKeys(types) { + for _, n := range maputils.OrderedKeys(types) { out.Printf("- Name: %s\n", n) m := types[n] if m.Description != "" { - out.Printf("%s\n", utils.IndentLines(m.Description, " ")) + out.Printf("%s\n", stringutils.IndentLines(m.Description, " ")) } out := out.AddGap(" ") out.Printf("Versions:\n") - for _, vn := range utils.StringMapKeys(m.Versions) { + for _, vn := range maputils.OrderedKeys(m.Versions) { out.Printf("- Version: %s\n", vn) out := out.AddGap(" ") v := m.Versions[vn] @@ -528,7 +530,7 @@ type DescribableElement[C Describable] interface { } // ListElements lists describable elements. -func ListElements[E DescribableElement[C], C Describable](msg string, elems []E, out common.Printer) { +func ListElements[E DescribableElement[C], C Describable](msg string, elems []E, out misc.Printer) { keys := map[string]E{} for _, e := range elems { keys[e.GetName()] = e @@ -536,7 +538,7 @@ func ListElements[E DescribableElement[C], C Describable](msg string, elems []E, if len(keys) > 0 { out.Printf("%s:\n", msg) } - for _, n := range utils.StringMapKeys(keys) { + for _, n := range maputils.OrderedKeys(keys) { m := keys[n] out.Printf("- Name: %s\n", n) out := out.AddGap(" ") @@ -550,7 +552,7 @@ func ListElements[E DescribableElement[C], C Describable](msg string, elems []E, if len(m.GetConstraints()) > 0 { out.Printf("Registration Constraints:\n") for _, c := range m.GetConstraints() { - out.Printf("- %s\n", utils.IndentLines(c.Describe(), " ", true)) + out.Printf("- %s\n", stringutils.IndentLines(c.Describe(), " ", true)) } } } diff --git a/api/ocm/plugin/plugins/plugins.go b/api/ocm/plugin/plugins/plugins.go index 53e20d2f08..f143e5e300 100644 --- a/api/ocm/plugin/plugins/plugins.go +++ b/api/ocm/plugin/plugins/plugins.go @@ -4,13 +4,14 @@ import ( "encoding/json" "sync" + "github.com/mandelsoft/goutils/maputils" + cfgcpi "ocm.software/ocm/api/config/cpi" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/plugin" "ocm.software/ocm/api/ocm/plugin/cache" "ocm.software/ocm/api/ocm/plugin/config" "ocm.software/ocm/api/ocm/plugin/descriptor" - "ocm.software/ocm/api/utils" ) type Set = *pluginsImpl @@ -97,7 +98,7 @@ func (pi *pluginsImpl) PluginNames() []string { pi.lock.RLock() defer pi.lock.RUnlock() - return utils.StringMapKeys(pi.plugins) + return maputils.OrderedKeys(pi.plugins) } func (pi *pluginsImpl) Get(name string) plugin.Plugin { diff --git a/api/ocm/plugin/ppi/plugin.go b/api/ocm/plugin/ppi/plugin.go index 3cd44bdbfe..d0847aa7c4 100644 --- a/api/ocm/plugin/ppi/plugin.go +++ b/api/ocm/plugin/ppi/plugin.go @@ -608,7 +608,7 @@ func (p *plugin) GetConfigType(name string) *descriptor.ConfigTypeDescriptor { return &d } if d.Name == name && (def == nil || d.Version == "v1") { - def = generics.Pointer(d) + def = generics.PointerTo(d) } } return def diff --git a/api/ocm/ref.go b/api/ocm/ref.go index 72f0b08e84..7384fac20f 100644 --- a/api/ocm/ref.go +++ b/api/ocm/ref.go @@ -8,7 +8,7 @@ import ( "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/grammar" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) // ParseRepo parses a standard ocm repository reference into a internal representation. @@ -217,11 +217,11 @@ func (r *CompSpec) IsVersion() bool { return r.Version != nil } -func (r *CompSpec) NameVersion() common.NameVersion { +func (r *CompSpec) NameVersion() misc.NameVersion { if r.Version != nil { - return common.NewNameVersion(r.Component, *r.Version) + return misc.NewNameVersion(r.Component, *r.Version) } - return common.NewNameVersion(r.Component, "-") + return misc.NewNameVersion(r.Component, "-") } func (r *CompSpec) Reference() string { diff --git a/api/ocm/ref_test.go b/api/ocm/ref_test.go index ac35cefa4a..d30a5921aa 100644 --- a/api/ocm/ref_test.go +++ b/api/ocm/ref_test.go @@ -5,9 +5,10 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/extensions/repositories/ocireg" - "ocm.software/ocm/api/utils" ) func Type(t string) string { @@ -73,7 +74,7 @@ func CheckRef(ref, ut, scheme, h, us, c, uv, i string, th ...string) { Host: h, SubPath: us, Info: i, - TypeHint: utils.Optional(th...), + TypeHint: general.Optional(th...), CreateIfMissing: ref[0] == '+', }, CompSpec: ocm.CompSpec{ diff --git a/api/ocm/resolvers/resolver.go b/api/ocm/resolvers/resolver.go index 4c74feda21..876ea3da92 100644 --- a/api/ocm/resolvers/resolver.go +++ b/api/ocm/resolvers/resolver.go @@ -8,7 +8,7 @@ import ( "github.com/mandelsoft/goutils/sliceutils" "ocm.software/ocm/api/ocm/internal" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type DedicatedResolver []ComponentVersionAccess @@ -111,7 +111,7 @@ func (c *CompoundResolver) LookupComponentVersion(name string, version string) ( return nil, err } } - return nil, errors.ErrNotFound(KIND_OCM_REFERENCE, common.NewNameVersion(name, version).String()) + return nil, errors.ErrNotFound(KIND_OCM_REFERENCE, misc.NewNameVersion(name, version).String()) } func (c *CompoundResolver) LookupComponentProviders(name string) []ResolvedComponentProvider { diff --git a/api/ocm/resourcerefs/resourceref.go b/api/ocm/resourcerefs/resourceref.go index 67aa27afd5..b1cd2034a7 100644 --- a/api/ocm/resourcerefs/resourceref.go +++ b/api/ocm/resourcerefs/resourceref.go @@ -10,7 +10,7 @@ import ( metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" ocm "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/resolvers" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) func ResolveReferencePath(cv ocm.ComponentVersionAccess, path []metav1.Identity, resolver ocm.ComponentVersionResolver) (ocm.ComponentVersionAccess, error) { @@ -29,7 +29,7 @@ func ResolveReferencePath(cv ocm.ComponentVersionAccess, path []metav1.Identity, final.Close(eff) cref, err := eff.GetReference(cr) if err != nil { - return nil, errors.Wrapf(err, "%s", common.VersionedElementKey(cv)) + return nil, errors.Wrapf(err, "%s", misc.VersionedElementKey(cv)) } compoundResolver := resolvers.NewCompoundResolver(eff.Repository(), resolver) diff --git a/api/ocm/selectors/labelsel/interface.go b/api/ocm/selectors/labelsel/interface.go index d333562dd1..48062bcb09 100644 --- a/api/ocm/selectors/labelsel/interface.go +++ b/api/ocm/selectors/labelsel/interface.go @@ -7,12 +7,12 @@ import ( "reflect" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mikefarah/yq/v4/pkg/yqlib" "gopkg.in/op/go-logging.v1" v1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/ocm/selectors" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -64,7 +64,7 @@ func (n signed) MatchLabel(l *v1.Label) bool { } func Signed(b ...bool) *selectors.LabelSelectorImpl { - return &selectors.LabelSelectorImpl{signed(utils.OptionalDefaultedBool(true, b...))} + return &selectors.LabelSelectorImpl{signed(general.OptionalDefaultedBool(true, b...))} } /////////////////////////////////////////////////////////////////////////////// diff --git a/api/ocm/session.go b/api/ocm/session.go index a5bad06986..c948ccb76b 100644 --- a/api/ocm/session.go +++ b/api/ocm/session.go @@ -9,7 +9,7 @@ import ( "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/ocm/internal" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -156,7 +156,7 @@ func (s *session) LookupComponentVersion(r ComponentVersionResolver, comp, vers key := datacontext.ObjectKey{ Object: r, - Name: common.NewNameVersion(comp, vers).String(), + Name: misc.NewNameVersion(comp, vers).String(), } s.base.Lock() defer s.base.Unlock() diff --git a/api/ocm/tools/signing/digest.go b/api/ocm/tools/signing/digest.go index 2b6ca54c64..ece0e75e9c 100644 --- a/api/ocm/tools/signing/digest.go +++ b/api/ocm/tools/signing/digest.go @@ -11,7 +11,7 @@ import ( "ocm.software/ocm/api/ocm/cpi/accspeccpi" "ocm.software/ocm/api/ocm/extensions/accessmethods/none" "ocm.software/ocm/api/ocm/extensions/attrs/signingattr" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) // VerifyResourceDigestByResourceAccess verifies the digest of a resource passed by ResourceAccess. @@ -68,10 +68,10 @@ func VerifyResourceDigest(cv ocm.ComponentVersionAccess, i int, bacc ocm.DataAcc if store != nil { vcd := store.Get(cv) if vcd == nil { - return false, fmt.Errorf("component version %s not verified", common.VersionedElementKey(cv)) + return false, fmt.Errorf("component version %s not verified", misc.VersionedElementKey(cv)) } if !vcd.Resources[i].Digest.Equal(raw.Digest) { - return false, fmt.Errorf("component version %s corrupted", common.VersionedElementKey(cv)) + return false, fmt.Errorf("component version %s corrupted", misc.VersionedElementKey(cv)) } } diff --git a/api/ocm/tools/signing/digestctx.go b/api/ocm/tools/signing/digestctx.go index 3091bcb6b1..023ac5425a 100644 --- a/api/ocm/tools/signing/digestctx.go +++ b/api/ocm/tools/signing/digestctx.go @@ -12,19 +12,19 @@ import ( "ocm.software/ocm/api/tech/signing" "ocm.software/ocm/api/tech/signing/signutils" "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type RootContextInfo struct { - CtxKey common.NameVersion + CtxKey misc.NameVersion Sign bool DigestType ocm.DigesterType Hasher signing.Hasher - In map[common.NameVersion]*metav1.NestedComponentDigests - Out map[common.NameVersion]*metav1.NestedComponentDigests + In map[misc.NameVersion]*metav1.NestedComponentDigests + Out map[misc.NameVersion]*metav1.NestedComponentDigests } -func (dc *RootContextInfo) GetPreset(nv common.NameVersion) *metav1.NestedComponentDigests { +func (dc *RootContextInfo) GetPreset(nv misc.NameVersion) *metav1.NestedComponentDigests { if p := dc.Out[nv]; p != nil { return p } @@ -37,27 +37,27 @@ func (dc *RootContextInfo) GetPreset(nv common.NameVersion) *metav1.NestedCompon type DigestContext struct { *RootContextInfo - Key common.NameVersion + Key misc.NameVersion Parent *DigestContext Descriptor *compdesc.ComponentDescriptor Digest *metav1.DigestSpec Signed bool - Source common.NameVersion - Refs map[common.NameVersion]*metav1.DigestSpec + Source misc.NameVersion + Refs map[misc.NameVersion]*metav1.DigestSpec } func NewDigestContext(cd *compdesc.ComponentDescriptor, parent *DigestContext) *DigestContext { var root *RootContextInfo - key := common.VersionedElementKey(cd) + key := misc.VersionedElementKey(cd) if parent == nil { root = &RootContextInfo{ CtxKey: key, - Out: map[common.NameVersion]*metav1.NestedComponentDigests{}, - In: map[common.NameVersion]*metav1.NestedComponentDigests{}, + Out: map[misc.NameVersion]*metav1.NestedComponentDigests{}, + In: map[misc.NameVersion]*metav1.NestedComponentDigests{}, } for _, c := range cd.NestedDigests { - nv := common.NewNameVersion(c.Name, c.Version) + nv := misc.NewNameVersion(c.Name, c.Version) digs := metav1.NestedComponentDigests{ Name: nv.GetName(), Version: nv.GetVersion(), @@ -82,7 +82,7 @@ func NewDigestContext(cd *compdesc.ComponentDescriptor, parent *DigestContext) * Key: key, Parent: parent, Descriptor: cd, - Refs: map[common.NameVersion]*metav1.DigestSpec{}, + Refs: map[misc.NameVersion]*metav1.DigestSpec{}, } } diff --git a/api/ocm/tools/signing/handle.go b/api/ocm/tools/signing/handle.go index a768cd3420..09763db4b9 100644 --- a/api/ocm/tools/signing/handle.go +++ b/api/ocm/tools/signing/handle.go @@ -22,7 +22,7 @@ import ( "ocm.software/ocm/api/tech/signing" "ocm.software/ocm/api/tech/signing/signutils" "ocm.software/ocm/api/tech/signing/tsa" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var REALM = logging.NewRealm("signing") @@ -40,26 +40,26 @@ func ArtefactDigest(r *compdesc.Resource) metav1.ArtefactDigest { // and provides the digest context used for a dedicated root component // this component version is digested for (by following component references). type VersionInfo struct { - digestingContexts map[common.NameVersion]*DigestContext + digestingContexts map[misc.NameVersion]*DigestContext } func NewVersionInfo(cd *compdesc.ComponentDescriptor, parent *DigestContext) (*VersionInfo, *DigestContext) { vi := &VersionInfo{ - digestingContexts: map[common.NameVersion]*DigestContext{}, + digestingContexts: map[misc.NameVersion]*DigestContext{}, } return vi, vi.CreateContext(cd, parent) } -func (vi *VersionInfo) GetContext(nv common.NameVersion) *DigestContext { +func (vi *VersionInfo) GetContext(nv misc.NameVersion) *DigestContext { return vi.digestingContexts[nv] } func (vi *VersionInfo) CreateContext(cd *compdesc.ComponentDescriptor, parent *DigestContext) *DigestContext { - var key common.NameVersion + var key misc.NameVersion if parent != nil { key = parent.CtxKey } else { - key = common.VersionedElementKey(cd) + key = misc.VersionedElementKey(cd) } nctx := NewDigestContext(cd.Copy(), parent) @@ -83,14 +83,14 @@ func (vi *VersionInfo) CreateContext(cd *compdesc.ComponentDescriptor, parent *D } type WalkingState struct { - common.WalkingState[*VersionInfo, *DigestContext] + misc.WalkingState[*VersionInfo, *DigestContext] } func NewWalkingState(lctx ...logging.Context) WalkingState { - return WalkingState{common.NewWalkingState[*VersionInfo, *DigestContext](nil, lctx...)} + return WalkingState{misc.NewWalkingState[*VersionInfo, *DigestContext](nil, lctx...)} } -func (s *WalkingState) GetContext(nv common.NameVersion, ctxkey common.NameVersion) *DigestContext { +func (s *WalkingState) GetContext(nv misc.NameVersion, ctxkey misc.NameVersion) *DigestContext { vi := s.Get(nv) if vi == nil { return nil @@ -103,7 +103,7 @@ func DefaultWalkingState(octx ocm.ContextProvider) *WalkingState { return &s } -func Apply(printer common.Printer, state *WalkingState, cv ocm.ComponentVersionAccess, opts *Options, closecv ...bool) (*metav1.DigestSpec, error) { +func Apply(printer misc.Printer, state *WalkingState, cv ocm.ComponentVersionAccess, opts *Options, closecv ...bool) (*metav1.DigestSpec, error) { if printer != nil { opts = opts.Dup() opts.Printer = printer @@ -114,7 +114,7 @@ func Apply(printer common.Printer, state *WalkingState, cv ocm.ComponentVersionA func ApplyWithContext(ctx context.Context, state *WalkingState, cv ocm.ComponentVersionAccess, opts *Options, closecv ...bool) (*metav1.DigestSpec, error) { if opts.Printer == nil { opts = opts.Dup() - opts.Printer = common.GetPrinter(ctx) + opts.Printer = misc.GetPrinter(ctx) } err := opts.Complete(cv.GetContext()) if err != nil { @@ -136,7 +136,7 @@ func ListComponentDescriptors(cv ocm.ComponentVersionAccess, state *WalkingState return []*compdesc.ComponentDescriptor{} } c := state.WalkingState.Closure - nv := common.VersionedElementKey(cv) + nv := misc.VersionedElementKey(cv) return maputils.TransformedValues(c, func(in *VersionInfo) *compdesc.ComponentDescriptor { return in.digestingContexts[nv].Descriptor }) @@ -156,7 +156,7 @@ func apply(ctx context.Context, state WalkingState, cv ocm.ComponentVersionAcces return cv.Close() } } - nv := common.VersionedElementKey(cv) + nv := misc.VersionedElementKey(cv) defer errors.PropagateErrorf(&efferr, closer, "%s", state.History.Append(nv)) vi := state.Get(nv) @@ -175,8 +175,8 @@ func apply(ctx context.Context, state WalkingState, cv ocm.ComponentVersionAcces return _apply(ctx, state, nv, cv, vi, opts) } -func _apply(cctx context.Context, state WalkingState, nv common.NameVersion, cv ocm.ComponentVersionAccess, vi *VersionInfo, opts *Options) (*DigestContext, error) { //nolint: maintidx // yes - if err := common.IsContextCanceled(cctx); err != nil { +func _apply(cctx context.Context, state WalkingState, nv misc.NameVersion, cv ocm.ComponentVersionAccess, vi *VersionInfo, opts *Options) (*DigestContext, error) { //nolint: maintidx // yes + if err := misc.IsContextCanceled(cctx); err != nil { opts.Printer.Printf("cancelled by caller\n") return nil, err } @@ -368,7 +368,7 @@ func _apply(cctx context.Context, state WalkingState, nv common.NameVersion, cv } signature.Timestamp = &metav1.TimestampSpec{ Value: string(data), - Time: generics.Pointer(compdesc.NewTimestampFor(t)), + Time: generics.PointerTo(compdesc.NewTimestampFor(t)), } } if found >= 0 { @@ -615,7 +615,7 @@ func calculateReferenceDigests(cctx context.Context, state WalkingState, opts *O } cd.References[i].Digest = nctx.Digest ctx.Refs[nctx.Key] = nctx.Digest - state.Logger.Debug("reference digest", "index", i, "reference", common.NewNameVersion(reference.ComponentName, reference.Version), "hashalgo", nctx.Digest.HashAlgorithm, "normalgo", nctx.Digest.NormalisationAlgorithm, "digest", nctx.Digest.Value) + state.Logger.Debug("reference digest", "index", i, "reference", misc.NewNameVersion(reference.ComponentName, reference.Version), "hashalgo", nctx.Digest.HashAlgorithm, "normalgo", nctx.Digest.NormalisationAlgorithm, "digest", nctx.Digest.Value) opts.Printer.Printf(" reference %d: %s:%s: digest %s\n", i, reference.ComponentName, reference.Version, nctx.Digest) if err := loop.Finalize(); err != nil { @@ -632,7 +632,7 @@ func calculateResourceDigests(cctx context.Context, state WalkingState, cv ocm.C octx := cv.GetContext() blobdigesters := octx.BlobDigesters() for i, res := range cv.GetResources() { - if err := common.IsContextCanceled(cctx); err != nil { + if err := misc.IsContextCanceled(cctx); err != nil { opts.Printer.Printf("cancelled by caller\n") return err } @@ -752,14 +752,14 @@ func GetDigestMode(cd *compdesc.ComponentDescriptor, def ...string) string { func addVerified(state WalkingState, cd *compdesc.ComponentDescriptor, opts *Options, signatures ...string) { if opts.VerifiedStore != nil { - _addVerified(state, common.VersionedElementKey(cd), cd, opts, signatures...) + _addVerified(state, misc.VersionedElementKey(cd), cd, opts, signatures...) } } -func _addVerified(state WalkingState, ctx common.NameVersion, cd *compdesc.ComponentDescriptor, opts *Options, signatures ...string) { +func _addVerified(state WalkingState, ctx misc.NameVersion, cd *compdesc.ComponentDescriptor, opts *Options, signatures ...string) { opts.VerifiedStore.Add(cd, signatures...) for _, ref := range cd.References { - nv := common.NewNameVersion(ref.ComponentName, ref.Version) + nv := misc.NewNameVersion(ref.ComponentName, ref.Version) s := state.Get(nv) rs := s.GetContext(ctx) if rs != nil { diff --git a/api/ocm/tools/signing/handler_test.go b/api/ocm/tools/signing/handler_test.go index 9b743da18f..4d39a181ff 100644 --- a/api/ocm/tools/signing/handler_test.go +++ b/api/ocm/tools/signing/handler_test.go @@ -18,7 +18,7 @@ import ( "ocm.software/ocm/api/tech/signing/signutils" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var _ = Describe("Simple signing handlers", func() { @@ -40,7 +40,7 @@ var _ = Describe("Simple signing handlers", func() { It("cancelled", func() { var opts signing.Options - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() opts.Printer = p opts.Eval( diff --git a/api/ocm/tools/signing/options.go b/api/ocm/tools/signing/options.go index c5acd2917d..5e99788dc2 100644 --- a/api/ocm/tools/signing/options.go +++ b/api/ocm/tools/signing/options.go @@ -8,6 +8,7 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/generics" + "github.com/mandelsoft/goutils/optionutils" "ocm.software/ocm/api/datacontext/attrs/rootcertsattr" "ocm.software/ocm/api/ocm" @@ -17,8 +18,7 @@ import ( "ocm.software/ocm/api/tech/signing" "ocm.software/ocm/api/tech/signing/hasher/sha256" "ocm.software/ocm/api/tech/signing/signutils" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option interface { @@ -28,12 +28,12 @@ type Option interface { //////////////////////////////////////////////////////////////////////////////// type printer struct { - printer common.Printer + printer misc.Printer } // Printer provides an option configuring a printer for a signing/verification // operation. -func Printer(p common.Printer) Option { +func Printer(p misc.Printer) Option { return &printer{p} } @@ -74,7 +74,7 @@ type recursive struct { // operation. If enabled the operation will be done for all component versions // in the reference graph. func Recursive(flags ...bool) Option { - return &recursive{utils.GetOptionFlag(flags...)} + return &recursive{optionutils.GetOptionFlag(flags...)} } func (o *recursive) ApplySigningOption(opts *Options) { @@ -90,7 +90,7 @@ type update struct { // Update provides an option configuring the update mode for a signing/verification // operation. Only if enabled, state changes will be persisted. func Update(flags ...bool) Option { - return &update{utils.GetOptionFlag(flags...)} + return &update{optionutils.GetOptionFlag(flags...)} } func (o *update) ApplySigningOption(opts *Options) { @@ -106,7 +106,7 @@ type verify struct { // VerifyDigests provides an option requesting signature verification for a // signing/verification operation. func VerifyDigests(flags ...bool) Option { - return &verify{utils.GetOptionFlag(flags...)} + return &verify{optionutils.GetOptionFlag(flags...)} } func (o *verify) ApplySigningOption(opts *Options) { @@ -283,7 +283,7 @@ type signame struct { // SignatureName provides an option requesting to use dedicated signature names // for a signing/verification operation. func SignatureName(name string, reset ...bool) Option { - return &signame{name, utils.Optional(reset...)} + return &signame{name, general.Optional(reset...)} } func (o *signame) ApplySigningOption(opts *Options) { @@ -336,9 +336,9 @@ func (o *issuer) ApplySigningOption(opts *Options) { if opts.Keys == nil { opts.Keys = signing.NewKeyRegistry() } - opts.Keys.RegisterIssuer(o.name, generics.Pointer(o.issuer)) + opts.Keys.RegisterIssuer(o.name, generics.PointerTo(o.issuer)) } else { - opts.Issuer = generics.Pointer(o.issuer) + opts.Issuer = generics.PointerTo(o.issuer) } } @@ -413,7 +413,7 @@ type tsaOpt struct { // UseTSA enables the usage of a timestamp server authority. func UseTSA(flag ...bool) Option { - return &tsaOpt{use: utils.BoolP(utils.GetOptionFlag(flag...))} + return &tsaOpt{use: optionutils.BoolP(optionutils.GetOptionFlag(flag...))} } // TSAUrl selects the TSA server URL to use, if TSA mode is enabled. @@ -449,7 +449,7 @@ func (o *verifyedstore) ApplySigningOption(opts *Options) { //////////////////////////////////////////////////////////////////////////////// type Options struct { - Printer common.Printer + Printer misc.Printer Update bool Recursively bool DigestMode string @@ -566,7 +566,7 @@ func (o *Options) Complete(ctx interface{}) error { return fmt.Errorf("context argument (%T) is invalid", ctx) } - o.Printer = common.AssurePrinter(o.Printer) + o.Printer = misc.AssurePrinter(o.Printer) if o.Registry == nil { o.Registry = reg diff --git a/api/ocm/tools/signing/signing_test.go b/api/ocm/tools/signing/signing_test.go index a1f9b74f91..ed489b7345 100644 --- a/api/ocm/tools/signing/signing_test.go +++ b/api/ocm/tools/signing/signing_test.go @@ -36,7 +36,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var DefaultContext = ocm.New() @@ -145,7 +145,7 @@ var _ = Describe("access method", func() { digest := "123d48879559d16965a54eba9a3e845709770f4f0be984ec8db2f507aa78f338" - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() // key taken from signing attr dig := Must(SignComponentVersion(cv, SIGNATURE, SignerByAlgo(SIGN_ALGO), Resolver(resolver), DigestMode(mode), Printer(pr))) Expect(closer.Close()).To(Succeed()) @@ -240,7 +240,7 @@ applying to version "github.com/mandelsoft/test:v1"[github.com/mandelsoft/test:v ) Expect(opts.Complete(env)).To(Succeed()) - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() dig, err := Apply(pr, nil, cv, opts) Expect(err).To(Succeed()) Expect(closer.Close()).To(Succeed()) @@ -371,7 +371,7 @@ applying to version "github.com/mandelsoft/test:v1"[github.com/mandelsoft/test:v ) Expect(opts.Complete(env)).To(Succeed()) - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() dig, err := Apply(pr, nil, cv, opts) Expect(err).To(Succeed()) closer.Close() @@ -1080,7 +1080,7 @@ github.com/mandelsoft/test:v1: SHA-256:${D_COMPA}[jsonNormalisation/v1] MustBeSuccessful(opts.Complete(env)) digestC := "1e81ac0fe69614e6fd73ab7a1c809dd31fcbcb810f0036be7a296d226e4bd64b" - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() dig := Must(Apply(pr, nil, cv, opts)) Expect(dig.Value).To(StringEqualWithContext(digestC)) @@ -1268,7 +1268,7 @@ applying to version "github.com/mandelsoft/test:v1"[github.com/mandelsoft/test:v ) MustBeSuccessful(opts.Complete(env)) - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() Must(Apply(pr, nil, cv, opts)) Expect(buf.String()).To(StringEqualTrimmedWithContext(` @@ -1282,8 +1282,8 @@ applying to version "github.com/mandelsoft/ref2:v1"[github.com/mandelsoft/ref2:v `)) CheckStore(store, cv) - CheckStore(store, common.NewNameVersion(COMPONENTB, VERSION)) - CheckStore(store, common.NewNameVersion(COMPONENTA, VERSION)) + CheckStore(store, misc.NewNameVersion(COMPONENTB, VERSION)) + CheckStore(store, misc.NewNameVersion(COMPONENTA, VERSION)) }) }) @@ -1374,7 +1374,7 @@ version: v2 digest := "70c1b7f5e2260a283e24788c81ea7f8f6e9a70a8544dbf62d6f3a27285f6b633" - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() // key taken from signing attr dig := Must(SignComponentVersion(cv, SIGNATURE, SignerByAlgo(SIGN_ALGO), Printer(pr))) Expect(closer.Close()).To(Succeed()) @@ -1441,10 +1441,10 @@ applying to version "github.com/mandelsoft/test:v1"[github.com/mandelsoft/test:v }) }) -func CheckStore(store VerifiedStore, ve common.VersionedElement) { +func CheckStore(store VerifiedStore, ve misc.VersionedElement) { e := store.Get(ve) ExpectWithOffset(1, e).NotTo(BeNil()) - ExpectWithOffset(1, common.VersionedElementKey(e)).To(Equal(common.VersionedElementKey(ve))) + ExpectWithOffset(1, misc.VersionedElementKey(e)).To(Equal(misc.VersionedElementKey(ve))) } func HashComponent(resolver ocm.ComponentVersionResolver, name string, digest string, other ...Option) string { @@ -1459,7 +1459,7 @@ func HashComponent(resolver ocm.ComponentVersionResolver, name string, digest st opts.Eval(other...) ExpectWithOffset(1, opts.Complete(signingattr.Get(DefaultContext))).To(Succeed()) - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() dig, err := Apply(pr, nil, cv, opts) ExpectWithOffset(1, err).To(Succeed()) ExpectWithOffset(1, dig.Value).To(StringEqualWithContext(digest)) @@ -1494,7 +1494,7 @@ func SignComponent(resolver ocm.ComponentVersionResolver, signame, name string, opts.Eval(other...) ExpectWithOffset(1, opts.Complete(cv.GetContext())).To(Succeed()) - pr, buf := common.NewBufferedPrinter() + pr, buf := misc.NewBufferedPrinter() dig, err := Apply(pr, nil, cv, opts) ExpectWithOffset(1, err).To(Succeed()) ExpectWithOffset(1, dig.Value).To(StringEqualWithContext(digest)) diff --git a/api/ocm/tools/signing/store.go b/api/ocm/tools/signing/store.go index fddad7cb39..d65582fd6a 100644 --- a/api/ocm/tools/signing/store.go +++ b/api/ocm/tools/signing/store.go @@ -7,13 +7,14 @@ import ( "github.com/mandelsoft/filepath/pkg/filepath" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/ioutils" "github.com/mandelsoft/goutils/sliceutils" "github.com/mandelsoft/vfs/pkg/vfs" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -30,14 +31,14 @@ import ( // component versions (see NewVerifiedStore). type VerifiedStore interface { Add(cd *compdesc.ComponentDescriptor, signatures ...string) - Remove(n common.VersionedElement) - Get(n common.VersionedElement) *compdesc.ComponentDescriptor - GetEntry(n common.VersionedElement) *StorageEntry + Remove(n misc.VersionedElement) + Get(n misc.VersionedElement) *compdesc.ComponentDescriptor + GetEntry(n misc.VersionedElement) *StorageEntry - GetResourceDigest(n common.VersionedElement, id metav1.Identity) *metav1.DigestSpec - GetResourceDigestByIndex(n common.VersionedElement, idx int) *metav1.DigestSpec + GetResourceDigest(n misc.VersionedElement, id metav1.Identity) *metav1.DigestSpec + GetResourceDigestByIndex(n misc.VersionedElement, idx int) *metav1.DigestSpec - Entries() []common.NameVersion + Entries() []misc.NameVersion Load() error Save() error @@ -59,7 +60,7 @@ func NewLocalVerifiedStore() VerifiedStore { // NewVerifiedStore loads or creates a new filesystem based VerifiedStore. func NewVerifiedStore(path string, fss ...vfs.FileSystem) (VerifiedStore, error) { - eff, err := utils.ResolvePath(path) + eff, err := ioutils.ResolvePath(path) if err != nil { return nil, err } @@ -134,13 +135,13 @@ func (v *verifiedStore) Save() error { return nil } -func (v *verifiedStore) Entries() []common.NameVersion { +func (v *verifiedStore) Entries() []misc.NameVersion { v.lock.Lock() defer v.lock.Unlock() - entries := make([]common.NameVersion, 0, len(v.storage.ComponentVersions)) + entries := make([]misc.NameVersion, 0, len(v.storage.ComponentVersions)) for _, entry := range v.storage.ComponentVersions { - entries = append(entries, common.VersionedElementKey(entry.Descriptor)) + entries = append(entries, misc.VersionedElementKey(entry.Descriptor)) } return entries } @@ -155,7 +156,7 @@ func (v *verifiedStore) Add(cd *compdesc.ComponentDescriptor, signatures ...stri if v.storage.ComponentVersions == nil { v.storage.ComponentVersions = map[string]*StorageEntry{} } - key := common.VersionedElementKey(cd).String() + key := misc.VersionedElementKey(cd).String() old := v.storage.ComponentVersions[key] if old == nil || !old.Descriptor.Descriptor().Equal(cd) { old = &StorageEntry{ @@ -168,32 +169,32 @@ func (v *verifiedStore) Add(cd *compdesc.ComponentDescriptor, signatures ...stri v.storage.ComponentVersions[key] = old } -func (v *verifiedStore) Remove(n common.VersionedElement) { +func (v *verifiedStore) Remove(n misc.VersionedElement) { v.lock.Lock() defer v.lock.Unlock() - delete(v.storage.ComponentVersions, common.VersionedElementKey(n).String()) + delete(v.storage.ComponentVersions, misc.VersionedElementKey(n).String()) } -func (v *verifiedStore) GetEntry(n common.VersionedElement) *StorageEntry { +func (v *verifiedStore) GetEntry(n misc.VersionedElement) *StorageEntry { v.lock.Lock() defer v.lock.Unlock() - return v.storage.ComponentVersions[common.VersionedElementKey(n).String()] + return v.storage.ComponentVersions[misc.VersionedElementKey(n).String()] } -func (v *verifiedStore) Get(n common.VersionedElement) *compdesc.ComponentDescriptor { +func (v *verifiedStore) Get(n misc.VersionedElement) *compdesc.ComponentDescriptor { v.lock.Lock() defer v.lock.Unlock() - entry := v.storage.ComponentVersions[common.VersionedElementKey(n).String()] + entry := v.storage.ComponentVersions[misc.VersionedElementKey(n).String()] if entry == nil { return nil } return entry.Descriptor.Descriptor() } -func (v *verifiedStore) GetResourceDigest(n common.VersionedElement, id metav1.Identity) *metav1.DigestSpec { +func (v *verifiedStore) GetResourceDigest(n misc.VersionedElement, id metav1.Identity) *metav1.DigestSpec { cd := v.Get(n) if cd == nil { return nil @@ -205,7 +206,7 @@ func (v *verifiedStore) GetResourceDigest(n common.VersionedElement, id metav1.I return r.Digest } -func (v *verifiedStore) GetResourceDigestByIndex(n common.VersionedElement, idx int) *metav1.DigestSpec { +func (v *verifiedStore) GetResourceDigestByIndex(n misc.VersionedElement, idx int) *metav1.DigestSpec { cd := v.Get(n) if cd == nil { return nil diff --git a/api/ocm/tools/signing/store_test.go b/api/ocm/tools/signing/store_test.go index c9a44164de..b760350266 100644 --- a/api/ocm/tools/signing/store_test.go +++ b/api/ocm/tools/signing/store_test.go @@ -12,7 +12,7 @@ import ( "ocm.software/ocm/api/ocm/compdesc/versions/ocm.software/v3alpha1" v2 "ocm.software/ocm/api/ocm/compdesc/versions/v2" "ocm.software/ocm/api/ocm/tools/signing" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -62,11 +62,11 @@ var _ = Describe("Store", func() { desc := signing.StorageDescriptor{ ComponentVersions: map[string]*signing.StorageEntry{ - common.VersionedElementKey(cd1).String(): { + misc.VersionedElementKey(cd1).String(): { Signatures: []string{"a"}, Descriptor: (*compdesc.GenericComponentDescriptor)(cd1), }, - common.VersionedElementKey(cd2).String(): { + misc.VersionedElementKey(cd2).String(): { Signatures: []string{"b", "c"}, Descriptor: (*compdesc.GenericComponentDescriptor)(cd2), }, diff --git a/api/ocm/tools/signing/transport_test.go b/api/ocm/tools/signing/transport_test.go index c5294e2d1d..0c4f5606d0 100644 --- a/api/ocm/tools/signing/transport_test.go +++ b/api/ocm/tools/signing/transport_test.go @@ -25,7 +25,7 @@ import ( "ocm.software/ocm/api/tech/signing/handlers/rsa" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -154,7 +154,7 @@ var _ = Describe("transport and signing", func() { desc := cv.GetDescriptor().Copy() - printer, buf := common.NewBufferedPrinter() + printer, buf := misc.NewBufferedPrinter() // transport handler := Must(standard.New(standard.ResourcesByValue())) MustBeSuccessful(transfer.TransferVersion(printer, nil, cv, target, handler)) @@ -301,7 +301,7 @@ func sourceSignature(cv, tcv ocm.ComponentVersionAccess, merged *compdesc.Compon signing.Sign(signingattr.Get(cv.GetContext()).GetSigner(SIGN_ALGO), SIGNATURE2), signing.Update(), signing.VerifyDigests(), ) - spec, err := signing.Apply(common.NewPrinter(nil), nil, cv, sopts) + spec, err := signing.Apply(misc.NewPrinter(nil), nil, cv, sopts) ExpectWithOffset(1, err).To(Succeed()) signatures := []compdesc.Signature{ diff --git a/api/ocm/tools/toi/drivers/mock/driver.go b/api/ocm/tools/toi/drivers/mock/driver.go index 034bee5cb9..c7cb3ba801 100644 --- a/api/ocm/tools/toi/drivers/mock/driver.go +++ b/api/ocm/tools/toi/drivers/mock/driver.go @@ -1,8 +1,9 @@ package mock import ( + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/ocm/tools/toi/install" - "ocm.software/ocm/api/utils" ) type Driver struct { @@ -12,7 +13,7 @@ type Driver struct { var _ install.Driver = (*Driver)(nil) func New(handler ...func(*install.Operation) (*install.OperationResult, error)) install.Driver { - return &Driver{utils.Optional(handler...)} + return &Driver{general.Optional(handler...)} } func (d *Driver) SetConfig(props map[string]string) error { diff --git a/api/ocm/tools/toi/install/action.go b/api/ocm/tools/toi/install/action.go index ef7f9f6d31..e32a820324 100644 --- a/api/ocm/tools/toi/install/action.go +++ b/api/ocm/tools/toi/install/action.go @@ -9,6 +9,7 @@ import ( "github.com/ghodss/yaml" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/stringutils" "github.com/mandelsoft/vfs/pkg/osfs" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/xeipuuv/gojsonschema" @@ -26,12 +27,11 @@ import ( "ocm.software/ocm/api/ocm/tools/toi" "ocm.software/ocm/api/ocm/tools/transfer" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/api/utils/spiff" ) @@ -285,7 +285,7 @@ func ProcessConfig(name string, octx ocm.Context, cv ocm.ComponentVersionAccess, } // ExecuteAction prepared the execution options and executes the action. -func ExecuteAction(p common.Printer, d Driver, name string, spec *toi.PackageSpecification, creds *Credentials, params []byte, octxp ocm.ContextProvider, cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver) (*OperationResult, error) { +func ExecuteAction(p misc.Printer, d Driver, name string, spec *toi.PackageSpecification, creds *Credentials, params []byte, octxp ocm.ContextProvider, cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver) (*OperationResult, error) { var err error var finalize Finalizer @@ -349,7 +349,7 @@ func ExecuteAction(p common.Printer, d Driver, name string, spec *toi.PackageSpe if econfig == nil { p.Printf("no executor config found\n") } else { - p.Printf("using executor config:\n%s\n", utils.IndentLines(string(econfig), " ")) + p.Printf("using executor config:\n%s\n", stringutils.IndentLines(string(econfig), " ")) } // handle credentials credreqs, credmapping, err := CheckCredentialRequests(executor, spec, &espec.Spec) @@ -388,7 +388,7 @@ func ExecuteAction(p common.Printer, d Driver, name string, spec *toi.PackageSpe } { data, _ := yaml.Marshal(ccfg) - p.Printf("using ocm config:\n%s\n", utils.IndentLines(string(data), " ")) + p.Printf("using ocm config:\n%s\n", stringutils.IndentLines(string(data), " ")) } // prepare user config @@ -399,7 +399,7 @@ func ExecuteAction(p common.Printer, d Driver, name string, spec *toi.PackageSpe if params == nil { p.Printf("no parameter config found\n") } else { - p.Printf("using package parameters:\n:%s\n", utils.IndentLines(string(params), " ")) + p.Printf("using package parameters:\n:%s\n", stringutils.IndentLines(string(params), " ")) } if executor.ParameterMapping != nil { @@ -411,7 +411,7 @@ func ExecuteAction(p common.Printer, d Driver, name string, spec *toi.PackageSpe if err == nil { if !bytes.Equal(orig, params) { - p.Printf("using executor parameters:\n%s\n", utils.IndentLines(string(params), " ")) + p.Printf("using executor parameters:\n%s\n", stringutils.IndentLines(string(params), " ")) } } } @@ -453,7 +453,7 @@ func ExecuteAction(p common.Printer, d Driver, name string, spec *toi.PackageSpe op.Outputs = executor.Outputs - op.ComponentVersion = common.VersionedElementKey(cv).String() + op.ComponentVersion = misc.VersionedElementKey(cv).String() return d.Exec(op) } diff --git a/api/ocm/tools/toi/install/action_test.go b/api/ocm/tools/toi/install/action_test.go index 417e3148f8..34f7158e52 100644 --- a/api/ocm/tools/toi/install/action_test.go +++ b/api/ocm/tools/toi/install/action_test.go @@ -19,7 +19,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -46,7 +46,7 @@ var _ = Describe("Transfer handler", func() { var driver *Driver cid1 := credentials.NewConsumerIdentity("test", hostpath.ID_HOSTNAME, "test.de") - creds1 := credentials.NewCredentials(common.Properties{"user": "test", "password": "pw"}) + creds1 := credentials.NewCredentials(misc.Properties{"user": "test", "password": "pw"}) BeforeEach(func() { env = NewBuilder(FileSystem(memoryfs.New(), "")) @@ -73,7 +73,7 @@ var _ = Describe("Transfer handler", func() { It("executes with credential substitution", func() { env.CredentialsContext().SetCredentialsForConsumer(cid1, creds1) - p, _ := common.NewBufferedPrinter() + p, _ := misc.NewBufferedPrinter() mapping := ` testparam: (( merge )) @@ -131,7 +131,7 @@ testparam: value It("executes with credential property substitution", func() { env.CredentialsContext().SetCredentialsForConsumer(cid1, creds1) - p, _ := common.NewBufferedPrinter() + p, _ := misc.NewBufferedPrinter() mapping := ` testparam: (( merge )) @@ -185,11 +185,11 @@ testparam: value }) It("executes with single credential property substitution", func() { - creds1 := credentials.NewCredentials(common.Properties{"user": "test"}) + creds1 := credentials.NewCredentials(misc.Properties{"user": "test"}) env.CredentialsContext().SetCredentialsForConsumer(cid1, creds1) - p, _ := common.NewBufferedPrinter() + p, _ := misc.NewBufferedPrinter() mapping := ` testparam: (( merge )) @@ -245,7 +245,7 @@ testparam: value It("executes with optional credential substitution without credentials", func() { env.CredentialsContext().SetCredentialsForConsumer(cid1, creds1) - p, _ := common.NewBufferedPrinter() + p, _ := misc.NewBufferedPrinter() mapping := ` testparam: (( merge )) diff --git a/api/ocm/tools/toi/install/credentials.go b/api/ocm/tools/toi/install/credentials.go index 78988a9174..1ee7a56d0c 100644 --- a/api/ocm/tools/toi/install/credentials.go +++ b/api/ocm/tools/toi/install/credentials.go @@ -2,6 +2,7 @@ package install import ( "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/spiff/features" "github.com/mandelsoft/spiff/spiffing" @@ -12,8 +13,7 @@ import ( "ocm.software/ocm/api/credentials/extensions/repositories/memory" memorycfg "ocm.software/ocm/api/credentials/extensions/repositories/memory/config" "ocm.software/ocm/api/ocm/tools/toi" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -24,7 +24,7 @@ type ( CredentialsRequestSpec = toi.CredentialsRequestSpec ) -type CredentialValues map[string]common.Properties +type CredentialValues map[string]misc.Properties func ParseCredentialSpecification(data []byte, desc string) (*Credentials, error) { spiff := spiffing.New().WithFeatures(features.CONTROL, features.INTERPOLATION) @@ -69,7 +69,7 @@ func GetCredentials(ctx credentials.Context, spec *Credentials, req map[string]C credvalues := CredentialValues{} var sub *errors.ErrorList - for _, n := range utils.StringMapKeys(req) { + for _, n := range maputils.OrderedKeys(req) { r := req[n] list.Add(sub.Result()) sub = errors.ErrListf("credential request %q", n) @@ -143,9 +143,9 @@ func GetCredentials(ctx credentials.Context, spec *Credentials, req map[string]C return main, credvalues, list.Result() } -func evaluate(ctx credentials.Context, spec *CredentialSpec) (common.Properties, credentials.ConsumerIdentity, error) { +func evaluate(ctx credentials.Context, spec *CredentialSpec) (misc.Properties, credentials.ConsumerIdentity, error) { var err error - var props common.Properties + var props misc.Properties var src credentials.CredentialsSource cnt := 0 if len(spec.Credentials) > 0 { diff --git a/api/ocm/tools/toi/install/credentials_test.go b/api/ocm/tools/toi/install/credentials_test.go index ed1fe1c451..8b0dd64e0c 100644 --- a/api/ocm/tools/toi/install/credentials_test.go +++ b/api/ocm/tools/toi/install/credentials_test.go @@ -12,13 +12,13 @@ import ( "ocm.software/ocm/api/credentials/identity/hostpath" "ocm.software/ocm/api/ocm/tools/toi/install" "ocm.software/ocm/api/tech/oci/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) var _ = Describe("credential mapping", func() { consumerid := credentials.NewConsumerIdentity("CT", identity.ID_HOSTNAME, "github.com", identity.ID_PATHPREFIX, "open-component-model") - ccreds := common.Properties{ + ccreds := misc.Properties{ "user": "open-component-model", "pass": "mypass", } diff --git a/api/ocm/tools/toi/install/execute.go b/api/ocm/tools/toi/install/execute.go index 25b466400a..b85e86d396 100644 --- a/api/ocm/tools/toi/install/execute.go +++ b/api/ocm/tools/toi/install/execute.go @@ -8,10 +8,10 @@ import ( "ocm.software/ocm/api/ocm/resourcerefs" "ocm.software/ocm/api/ocm/tools/toi" "ocm.software/ocm/api/utils/blobaccess/blobaccess" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) -func Execute(p common.Printer, d Driver, name string, rid metav1.Identity, credsrc blobaccess.DataSource, paramsrc blobaccess.DataSource, octx ocm.Context, cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver) (*OperationResult, error) { +func Execute(p misc.Printer, d Driver, name string, rid metav1.Identity, credsrc blobaccess.DataSource, paramsrc blobaccess.DataSource, octx ocm.Context, cv ocm.ComponentVersionAccess, resolver ocm.ComponentVersionResolver) (*OperationResult, error) { var creds *Credentials var params []byte var err error @@ -35,7 +35,7 @@ func Execute(p common.Printer, d Driver, name string, rid metav1.Identity, creds ires, _, err := resourcerefs.MatchResourceReference(cv, toi.TypeTOIPackage, metav1.NewResourceRef(rid), nil) if err != nil { - return nil, errors.Wrapf(err, "package resource in %s", common.VersionedElementKey(cv).String()) + return nil, errors.Wrapf(err, "package resource in %s", misc.VersionedElementKey(cv).String()) } var spec toi.PackageSpecification diff --git a/api/ocm/tools/toi/spec.go b/api/ocm/tools/toi/spec.go index f4c30b1eef..d8b1afe3e8 100644 --- a/api/ocm/tools/toi/spec.go +++ b/api/ocm/tools/toi/spec.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/credentials/cpi" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" resourcetypes "ocm.software/ocm/api/ocm/extensions/artifacttypes" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -109,7 +109,7 @@ type CredentialsRequestSpec struct { Description string `json:"description"` // Properties describes the meaning of the used properties for this // credential set. - Properties common.Properties `json:"properties"` + Properties misc.Properties `json:"properties"` // Optional set to true make the request optional Optional bool `json:"optional,omitempty"` } @@ -151,7 +151,7 @@ type CredentialSpec struct { // Reference refers to credentials store in some other repo Reference *cpi.GenericCredentialsSpec `json:"reference,omitempty"` // Credentials are direct credentials (one of Reference or Credentials must be set) - Credentials common.Properties `json:"credentials,omitempty"` + Credentials misc.Properties `json:"credentials,omitempty"` // TargetConsumerId specifies the consumer id to feed with these credentials TargetConsumerId credentials.ConsumerIdentity `json:"targetConsumerId,omitempty"` diff --git a/api/ocm/tools/toi/support/app.go b/api/ocm/tools/toi/support/app.go index cdefa9a447..69b0d32d6c 100644 --- a/api/ocm/tools/toi/support/app.go +++ b/api/ocm/tools/toi/support/app.go @@ -20,7 +20,7 @@ import ( "ocm.software/ocm/api/utils/clisupport" "ocm.software/ocm/api/utils/cobrautils" "ocm.software/ocm/api/utils/cobrautils/logopts" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/api/version" ) @@ -97,7 +97,7 @@ func (o *BootstrapperCLIOptions) Complete() error { } id := credentials.ConsumerIdentity{} - attrs := common.Properties{} + attrs := misc.Properties{} for _, s := range o.CredentialSettings { i := strings.Index(s, "=") @@ -112,7 +112,7 @@ func (o *BootstrapperCLIOptions) Complete() error { if len(attrs) != 0 { o.Context.CredentialsContext().SetCredentialsForConsumer(id, credentials.NewCredentials(attrs)) id = credentials.ConsumerIdentity{} - attrs = common.Properties{} + attrs = misc.Properties{} } name = name[1:] id[name] = value diff --git a/api/ocm/tools/toi/support/support.go b/api/ocm/tools/toi/support/support.go index 5eeb8ffc00..7303f737ea 100644 --- a/api/ocm/tools/toi/support/support.go +++ b/api/ocm/tools/toi/support/support.go @@ -5,6 +5,8 @@ import ( "io" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/ioutils" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/logging" "github.com/mandelsoft/vfs/pkg/vfs" @@ -13,12 +15,11 @@ import ( "ocm.software/ocm/api/datacontext/attrs/vfsattr" "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/extensions/repositories/ctf" - ocmutils "ocm.software/ocm/api/ocm/ocmutils" + "ocm.software/ocm/api/ocm/ocmutils" "ocm.software/ocm/api/ocm/tools/toi/install" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" ) @@ -51,7 +52,7 @@ func (o *ExecutorOptions) Complete() error { if o.ComponentVersionName == "" { return fmt.Errorf("component version required") } - compvers, err := common.ParseNameVersion(o.ComponentVersionName) + compvers, err := misc.ParseNameVersion(o.ComponentVersionName) if err != nil { return fmt.Errorf("unable to parse component name and version: %w", err) } @@ -88,14 +89,14 @@ func (o *ExecutorOptions) Complete() error { } if o.Config != "" && o.ConfigData == nil { - o.ConfigData, err = utils.ReadFile(o.Config, o.FileSystem()) + o.ConfigData, err = optionutils.ReadFile(o.Config, o.FileSystem()) if err != nil { return errors.Wrapf(err, "cannot read config %q", o.Config) } } if o.OCMConfig == "" { - cfg, err := utils.ResolvePath(o.Inputs + "/" + install.InputOCMConfig) + cfg, err := ioutils.ResolvePath(o.Inputs + "/" + install.InputOCMConfig) if err != nil { return errors.Wrapf(err, "cannot resolve OCM config %q", o.Inputs) } @@ -110,7 +111,7 @@ func (o *ExecutorOptions) Complete() error { } if o.Parameters == "" { - p, err := utils.ResolvePath(o.Inputs + "/" + install.InputParameters) + p, err := ioutils.ResolvePath(o.Inputs + "/" + install.InputParameters) if err != nil { return errors.Wrapf(err, "cannot resolve path %q", o.Inputs) } @@ -120,7 +121,7 @@ func (o *ExecutorOptions) Complete() error { } if o.Parameters != "" && o.ParameterData == nil { - o.ParameterData, err = utils.ReadFile(o.Parameters, o.FileSystem()) + o.ParameterData, err = optionutils.ReadFile(o.Parameters, o.FileSystem()) if err != nil { return errors.Wrapf(err, "cannot read parameters %q", o.Config) } diff --git a/api/ocm/tools/transfer/convenience.go b/api/ocm/tools/transfer/convenience.go index e9eb1cf9d2..4f126631a0 100644 --- a/api/ocm/tools/transfer/convenience.go +++ b/api/ocm/tools/transfer/convenience.go @@ -4,14 +4,14 @@ import ( "context" "ocm.software/ocm/api/ocm" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // TransferWithHandler uses the specified transfer handler to control // the transfer process. -func TransferWithHandler(pr common.Printer, cv ocm.ComponentVersionAccess, tgt ocm.Repository, handler TransferHandler) error { +func TransferWithHandler(pr misc.Printer, cv ocm.ComponentVersionAccess, tgt ocm.Repository, handler TransferHandler) error { return TransferVersion(pr, nil, cv, tgt, handler) } @@ -27,7 +27,7 @@ func Transfer(cv ocm.ComponentVersionAccess, tgt ocm.Repository, optlist ...Tran if err != nil { return err } - return TransferVersionWithContext(common.WithPrinter(context.Background(), local.printer), nil, cv, tgt, h) + return TransferVersionWithContext(misc.WithPrinter(context.Background(), local.printer), nil, cv, tgt, h) } // TransferWithContext uses the transfer handler based on the given options to control @@ -43,7 +43,7 @@ func TransferWithContext(ctx context.Context, cv ocm.ComponentVersionAccess, tgt return err } if local.printer != nil { - ctx = common.WithPrinter(ctx, local.printer) + ctx = misc.WithPrinter(ctx, local.printer) } return TransferVersionWithContext(ctx, nil, cv, tgt, h) } diff --git a/api/ocm/tools/transfer/options.go b/api/ocm/tools/transfer/options.go index 74675d4793..fa32ad9935 100644 --- a/api/ocm/tools/transfer/options.go +++ b/api/ocm/tools/transfer/options.go @@ -2,7 +2,7 @@ package transfer import ( "ocm.software/ocm/api/ocm/tools/transfer/transferhandler" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type ( @@ -36,7 +36,7 @@ type ( // To distinguish them from transferhandler options, they do NOT implement // the transferhandler.TransferOptionsCreator interface. type localOptions struct { - printer common.Printer + printer misc.Printer } func (opts *localOptions) Eval(optlist ...transferhandler.TransferOption) error { @@ -53,7 +53,7 @@ func (opts *localOptions) Eval(optlist ...transferhandler.TransferOption) error // WithPrinter provides a explicit printer object. By default, // a non-printing printer will be used. -func WithPrinter(p common.Printer) transferhandler.TransferOption { +func WithPrinter(p misc.Printer) transferhandler.TransferOption { return &localOptions{ printer: p, } diff --git a/api/ocm/tools/transfer/transfer.go b/api/ocm/tools/transfer/transfer.go index d6b49092fd..c1e11876c4 100644 --- a/api/ocm/tools/transfer/transfer.go +++ b/api/ocm/tools/transfer/transfer.go @@ -15,16 +15,16 @@ import ( "ocm.software/ocm/api/ocm/tools/transfer/internal" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard" "ocm.software/ocm/api/utils/errkind" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) -type WalkingState = common.WalkingState[*struct{}, interface{}] +type WalkingState = misc.WalkingState[*struct{}, interface{}] -type TransportClosure = common.NameVersionInfo[*struct{}] +type TransportClosure = misc.NameVersionInfo[*struct{}] -func TransferVersion(printer common.Printer, closure TransportClosure, src ocmcpi.ComponentVersionAccess, tgt ocmcpi.Repository, handler TransferHandler) error { - return TransferVersionWithContext(common.WithPrinter(context.Background(), common.AssurePrinter(printer)), closure, src, tgt, handler) +func TransferVersion(printer misc.Printer, closure TransportClosure, src ocmcpi.ComponentVersionAccess, tgt ocmcpi.Repository, handler TransferHandler) error { + return TransferVersionWithContext(misc.WithPrinter(context.Background(), misc.AssurePrinter(printer)), closure, src, tgt, handler) } func TransferVersionWithContext(ctx context.Context, closure TransportClosure, src ocmcpi.ComponentVersionAccess, tgt ocmcpi.Repository, handler TransferHandler) error { @@ -36,12 +36,12 @@ func TransferVersionWithContext(ctx context.Context, closure TransportClosure, s } func transferVersion(ctx context.Context, log logging.Logger, state WalkingState, src ocmcpi.ComponentVersionAccess, tgt ocmcpi.Repository, handler TransferHandler) (rerr error) { - printer := common.GetPrinter(ctx) - if err := common.IsContextCanceled(ctx); err != nil { + printer := misc.GetPrinter(ctx) + if err := misc.IsContextCanceled(ctx); err != nil { printer.Printf("transfer cancelled by caller\n") return err } - nv := common.VersionedElementKey(src) + nv := misc.VersionedElementKey(src) log = log.WithValues("history", state.History.String(), "version", nv) if ok, err := state.Add(ocm.KIND_COMPONENTVERSION, nv); !ok { return err @@ -173,7 +173,7 @@ func transferVersion(ctx context.Context, log logging.Logger, state WalkingState return errors.Wrapf(err, "%s: nested component %s[%s:%s]", state.History, r.GetName(), r.ComponentName, r.GetVersion()) } if cv != nil { - list.Add(transferVersion(common.AddPrinterGap(ctx, " "), log.WithValues("ref", r.Name), state, cv, tgt, shdlr)) + list.Add(transferVersion(misc.AddPrinterGap(ctx, " "), log.WithValues("ref", r.Name), state, cv, tgt, shdlr)) list.Addf(nil, cv.Close(), "closing reference %s", r.Name) } } @@ -220,16 +220,16 @@ func transferVersion(ctx context.Context, log logging.Logger, state WalkingState return list.Result() } -func CopyVersion(printer common.Printer, log logging.Logger, hist common.History, src ocm.ComponentVersionAccess, t ocm.ComponentVersionAccess, handler TransferHandler) (rerr error) { - return copyVersion(context.Background(), common.AssurePrinter(printer), log, hist, src, t, src.GetDescriptor().Copy(), handler) +func CopyVersion(printer misc.Printer, log logging.Logger, hist misc.History, src ocm.ComponentVersionAccess, t ocm.ComponentVersionAccess, handler TransferHandler) (rerr error) { + return copyVersion(context.Background(), misc.AssurePrinter(printer), log, hist, src, t, src.GetDescriptor().Copy(), handler) } -func CopyVersionWithContext(cctx context.Context, log logging.Logger, hist common.History, src ocm.ComponentVersionAccess, t ocm.ComponentVersionAccess, handler TransferHandler) (rerr error) { - return copyVersion(cctx, common.GetPrinter(cctx), log, hist, src, t, src.GetDescriptor().Copy(), handler) +func CopyVersionWithContext(cctx context.Context, log logging.Logger, hist misc.History, src ocm.ComponentVersionAccess, t ocm.ComponentVersionAccess, handler TransferHandler) (rerr error) { + return copyVersion(cctx, misc.GetPrinter(cctx), log, hist, src, t, src.GetDescriptor().Copy(), handler) } // copyVersion (purely internal) expects an already prepared target comp desc for t given as prep. -func copyVersion(cctx context.Context, printer common.Printer, log logging.Logger, hist common.History, src ocm.ComponentVersionAccess, t ocm.ComponentVersionAccess, prep *compdesc.ComponentDescriptor, handler TransferHandler) (rerr error) { +func copyVersion(cctx context.Context, printer misc.Printer, log logging.Logger, hist misc.History, src ocm.ComponentVersionAccess, t ocm.ComponentVersionAccess, prep *compdesc.ComponentDescriptor, handler TransferHandler) (rerr error) { var finalize finalizer.Finalizer defer errors.PropagateError(&rerr, finalize.Finalize) @@ -245,7 +245,7 @@ func copyVersion(cctx context.Context, printer common.Printer, log logging.Logge for i, r := range src.GetResources() { var m ocmcpi.AccessMethod - if err := common.IsContextCanceled(cctx); err != nil { + if err := misc.IsContextCanceled(cctx); err != nil { printer.Printf("cancelled by caller\n") return err } @@ -313,7 +313,7 @@ func copyVersion(cctx context.Context, printer common.Printer, log logging.Logge for i, r := range src.GetSources() { var m ocmcpi.AccessMethod - if err := common.IsContextCanceled(cctx); err != nil { + if err := misc.IsContextCanceled(cctx); err != nil { printer.Printf("cancelled by caller\n") return err } @@ -350,7 +350,7 @@ func copyVersion(cctx context.Context, printer common.Printer, log logging.Logge return nil } -func notifyArtifactInfo(printer common.Printer, log logging.Logger, kind string, index int, meta compdesc.ArtifactMetaAccess, hint string, msgs ...interface{}) { +func notifyArtifactInfo(printer misc.Printer, log logging.Logger, kind string, index int, meta compdesc.ArtifactMetaAccess, hint string, msgs ...interface{}) { msg := "copying" cmsg := "..." if len(msgs) > 0 { diff --git a/api/ocm/tools/transfer/transferhandler/spiff/options.go b/api/ocm/tools/transfer/transferhandler/spiff/options.go index 68ba1c2aa4..9efbaed377 100644 --- a/api/ocm/tools/transfer/transferhandler/spiff/options.go +++ b/api/ocm/tools/transfer/transferhandler/spiff/options.go @@ -2,6 +2,7 @@ package spiff import ( "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/ioutils" "github.com/mandelsoft/spiff/spiffing" "github.com/mandelsoft/vfs/pkg/vfs" @@ -114,7 +115,7 @@ func Script(data []byte) transferhandler.TransferOption { } func ScriptByFile(path string, fss ...vfs.FileSystem) transferhandler.TransferOption { - path, _ = utils.ResolvePath(path) + path, _ = ioutils.ResolvePath(path) return &scriptOption{ source: path, script: func() ([]byte, error) { return vfs.ReadFile(utils.FileSystem(fss...), path) }, diff --git a/api/ocm/tools/transfer/transferhandler/standard/compat_test.go b/api/ocm/tools/transfer/transferhandler/standard/compat_test.go index 5e0db6b981..9f6b09222b 100644 --- a/api/ocm/tools/transfer/transferhandler/standard/compat_test.go +++ b/api/ocm/tools/transfer/transferhandler/standard/compat_test.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/ocm/tools/transfer" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -35,7 +35,7 @@ var _ = Describe("Transfer Test Environment", func() { tgt := Must(ctf.Create(env.OCMContext(), accessobj.ACC_WRITABLE|accessobj.ACC_CREATE, OUT, 0o700, accessio.FormatDirectory, env)) defer Close(tgt, "target") - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() MustBeSuccessful(transfer.Transfer(cv, tgt, transfer.WithPrinter(p))) Expect(env.DirExists(OUT)).To(BeTrue()) diff --git a/api/ocm/tools/transfer/transferhandler/standard/handler_test.go b/api/ocm/tools/transfer/transferhandler/standard/handler_test.go index 82e9bfac38..1069113341 100644 --- a/api/ocm/tools/transfer/transferhandler/standard/handler_test.go +++ b/api/ocm/tools/transfer/transferhandler/standard/handler_test.go @@ -36,7 +36,7 @@ import ( "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -119,11 +119,11 @@ var _ = Describe("Transfer handler", func() { defer Close(tgt, "target") // handler, err := standard.New(standard.ResourcesByValue()) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() opts := []transferhandler.TransferOption{standard.ResourcesByValue(), &optionsChecker{}} ctx, cancel := context.WithCancel(context.Background()) - ctx = common.WithPrinter(ctx, p) + ctx = misc.WithPrinter(ctx, p) cancel() ExpectError(transfer.TransferWithContext(ctx, cv, tgt, opts...)).To(MatchError(context.Canceled)) @@ -164,7 +164,7 @@ var _ = Describe("Transfer handler", func() { defer Close(tgt, "target") // handler, err := standard.New(standard.ResourcesByValue()) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() opts := append(topts, standard.ResourcesByValue(), transfer.WithPrinter(p), &optionsChecker{}) MustBeSuccessful(transfer.Transfer(cv, tgt, opts...)) Expect(env.DirExists(OUT)).To(BeTrue()) @@ -203,7 +203,7 @@ transferring version "github.com/mandelsoft/test:v1"... defer Close(tgt, "target") // handler, err := standard.New(standard.ResourcesByValue()) - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() opts := append(topts, standard.ResourcesByValue(), transfer.WithPrinter(p), &optionsChecker{}) MustBeSuccessful(transfer.Transfer(cv, tgt, opts...)) Expect(env.DirExists(OUT)).To(BeTrue()) @@ -316,7 +316,7 @@ warning: version "github.com/mandelsoft/test:v1" already present, but differs defer Close(tgt, "target") // transfer by reference, first - p, buf := common.NewBufferedPrinter() + p, buf := misc.NewBufferedPrinter() opts := append(topts, transfer.WithPrinter(p), &optionsChecker{}) MustBeSuccessful(transfer.Transfer(cv, tgt, opts...)) Expect(env.DirExists(OUT)).To(BeTrue()) diff --git a/api/ocm/tools/transfer/transferhandler/standard/utils_test.go b/api/ocm/tools/transfer/transferhandler/standard/utils_test.go index 09bcd8552a..40c67f741b 100644 --- a/api/ocm/tools/transfer/transferhandler/standard/utils_test.go +++ b/api/ocm/tools/transfer/transferhandler/standard/utils_test.go @@ -46,7 +46,7 @@ var _ = Describe("utils", func() { me.HandleOption[Flag](v, t) Expect(t.flag).To(BeNil()) - v = generics.Pointer(false) + v = generics.PointerTo(false) me.HandleOption[Flag](v, t) Expect(t.flag).NotTo(BeNil()) Expect(*t.flag).To(BeFalse()) diff --git a/api/ocm/tools/transfer/transferrepo.go b/api/ocm/tools/transfer/transferrepo.go index 3fd202e43d..4383aa42b0 100644 --- a/api/ocm/tools/transfer/transferrepo.go +++ b/api/ocm/tools/transfer/transferrepo.go @@ -6,10 +6,10 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/compdesc" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) -func TransferComponents(printer common.Printer, closure TransportClosure, repo ocm.Repository, prefix string, all bool, tgt ocm.Repository, handler TransferHandler) error { +func TransferComponents(printer misc.Printer, closure TransportClosure, repo ocm.Repository, prefix string, all bool, tgt ocm.Repository, handler TransferHandler) error { if closure == nil { closure = TransportClosure{} } @@ -27,12 +27,12 @@ func TransferComponents(printer common.Printer, closure TransportClosure, repo o } list := errors.ErrListf("component transport") for _, c := range comps { - transferVersions(common.AssurePrinter(printer), closure, list, handler, repo, c, tgt) + transferVersions(misc.AssurePrinter(printer), closure, list, handler, repo, c, tgt) } return list.Result() } -func transferVersions(printer common.Printer, closure TransportClosure, list *errors.ErrorList, handler TransferHandler, repo ocm.Repository, c string, tgt ocm.Repository) { +func transferVersions(printer misc.Printer, closure TransportClosure, list *errors.ErrorList, handler TransferHandler, repo ocm.Repository, c string, tgt ocm.Repository) { comp, err := repo.LookupComponent(c) if list.Addf(printer, err, "component %s", c) == nil { defer comp.Close() diff --git a/api/ocm/utils.go b/api/ocm/utils.go index 33ade07071..df1c2f009a 100644 --- a/api/ocm/utils.go +++ b/api/ocm/utils.go @@ -14,7 +14,7 @@ import ( "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -84,8 +84,8 @@ func IsIntermediate(spec RepositorySpec) bool { return false } -func ComponentRefKey(ref *compdesc.Reference) common.NameVersion { - return common.NewNameVersion(ref.GetComponentName(), ref.GetVersion()) +func ComponentRefKey(ref *compdesc.Reference) misc.NameVersion { + return misc.NewNameVersion(ref.GetComponentName(), ref.GetVersion()) } func IsUnknownRepositorySpec(s RepositorySpec) bool { diff --git a/api/ocm/valuemergehandler/handlers/maplistmerge/config.go b/api/ocm/valuemergehandler/handlers/maplistmerge/config.go index a58f9922fd..d74245ee28 100644 --- a/api/ocm/valuemergehandler/handlers/maplistmerge/config.go +++ b/api/ocm/valuemergehandler/handlers/maplistmerge/config.go @@ -1,9 +1,10 @@ package maplistmerge import ( + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/ocm/valuemergehandler/handlers/defaultmerge" "ocm.software/ocm/api/ocm/valuemergehandler/hpi" - "ocm.software/ocm/api/utils" ) type Mode = defaultmerge.Mode @@ -19,7 +20,7 @@ func NewConfig(field string, overwrite Mode, entries ...*hpi.Specification) *Con return &Config{ KeyField: field, Config: *defaultmerge.NewConfig(overwrite), - Entries: utils.Optional(entries...), + Entries: general.Optional(entries...), } } diff --git a/api/ocm/valuemergehandler/handlers/simplemapmerge/config.go b/api/ocm/valuemergehandler/handlers/simplemapmerge/config.go index 111724c7ec..7fe17af2ab 100644 --- a/api/ocm/valuemergehandler/handlers/simplemapmerge/config.go +++ b/api/ocm/valuemergehandler/handlers/simplemapmerge/config.go @@ -1,9 +1,10 @@ package simplemapmerge import ( + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/ocm/valuemergehandler/handlers/defaultmerge" "ocm.software/ocm/api/ocm/valuemergehandler/hpi" - "ocm.software/ocm/api/utils" ) type Mode = defaultmerge.Mode @@ -18,7 +19,7 @@ const ( func NewConfig(overwrite Mode, entries ...*hpi.Specification) *Config { return &Config{ Config: *defaultmerge.NewConfig(overwrite), - Entries: utils.Optional(entries...), + Entries: general.Optional(entries...), } } diff --git a/api/ocm/valuemergehandler/hpi/interface.go b/api/ocm/valuemergehandler/hpi/interface.go index 9a0250322a..03a5ca1945 100644 --- a/api/ocm/valuemergehandler/hpi/interface.go +++ b/api/ocm/valuemergehandler/hpi/interface.go @@ -3,11 +3,12 @@ package hpi import ( + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/datacontext" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/valuemergehandler/internal" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -43,7 +44,7 @@ func Assign(hint Hint, spec *Specification) { } func NewSpecification(algo string, cfg ...Config) (*Specification, error) { - raw, err := runtime.AsRawMessage(utils.Optional(cfg...)) + raw, err := runtime.AsRawMessage(general.Optional(cfg...)) if err != nil { return nil, err } @@ -59,7 +60,7 @@ func NewRegistry(base ...Registry) Registry { func LabelHint(name string, optversion ...string) Hint { hint := "label:" + name - v := utils.Optional(optversion...) + v := general.Optional(optversion...) if v != "" { hint += "@" + v } diff --git a/api/ocm/valuemergehandler/internal/valuemergehandler.go b/api/ocm/valuemergehandler/internal/valuemergehandler.go index 036452a202..60957b9b40 100644 --- a/api/ocm/valuemergehandler/internal/valuemergehandler.go +++ b/api/ocm/valuemergehandler/internal/valuemergehandler.go @@ -4,7 +4,8 @@ import ( "maps" "sync" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/utils/runtime" ) @@ -45,7 +46,7 @@ var _ Registry = (*registry)(nil) func NewRegistry(base ...Registry) Registry { return ®istry{ - base: utils.Optional(base...), + base: general.Optional(base...), handlerTypes: Handlers{}, assignments: MergeHandlerAssignments{}, } diff --git a/api/tech/git/identity/identity_test.go b/api/tech/git/identity/identity_test.go index 879f373f44..394925907f 100644 --- a/api/tech/git/identity/identity_test.go +++ b/api/tech/git/identity/identity_test.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/oci" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var _ = Describe("consumer id handling", func() { @@ -92,7 +92,7 @@ var _ = Describe("consumer id handling", func() { ) creds := testutils.Must(GetCredentials(ctx, repo)) - Expect(creds).To(BeEquivalentTo(common.Properties{ + Expect(creds).To(BeEquivalentTo(misc.Properties{ ATTR_USERNAME: user, ATTR_PASSWORD: pass, })) @@ -108,7 +108,7 @@ var _ = Describe("consumer id handling", func() { ) creds := testutils.Must(GetCredentials(ctx, repo)) - Expect(creds).To(BeEquivalentTo(common.Properties{ + Expect(creds).To(BeEquivalentTo(misc.Properties{ ATTR_TOKEN: token, })) }) @@ -124,7 +124,7 @@ var _ = Describe("consumer id handling", func() { ) creds := testutils.Must(GetCredentials(ctx, repo)) - Expect(creds).To(BeEquivalentTo(common.Properties{ + Expect(creds).To(BeEquivalentTo(misc.Properties{ ATTR_USERNAME: user, ATTR_PRIVATE_KEY: key, })) diff --git a/api/tech/helm/downloader.go b/api/tech/helm/downloader.go index ca352b9a8d..1aaf016aa4 100644 --- a/api/tech/helm/downloader.go +++ b/api/tech/helm/downloader.go @@ -19,18 +19,18 @@ import ( "ocm.software/ocm/api/oci" ocihelm "ocm.software/ocm/api/ocm/extensions/download/handlers/helm" "ocm.software/ocm/api/tech/helm/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) type chartDownloader struct { *downloader.ChartDownloader *chartAccess - creds common.Properties + creds misc.Properties keyring []byte } -func DownloadChart(out common.Printer, ctx oci.ContextProvider, ref, version, repourl string, opts ...Option) (ChartAccess, error) { +func DownloadChart(out misc.Printer, ctx oci.ContextProvider, ref, version, repourl string, opts ...Option) (ChartAccess, error) { if version == "" { return nil, fmt.Errorf("version required") } @@ -112,7 +112,7 @@ func (d *chartDownloader) complete(ctx oci.ContextProvider, ref, repourl string) } creds := d.creds if creds == nil { - creds = common.Properties{} + creds = misc.Properties{} } config := vfs.Join(d.fs, d.root, ".config") diff --git a/api/tech/helm/identity/identity.go b/api/tech/helm/identity/identity.go index 9ecf59e166..cd91ee72e2 100644 --- a/api/tech/helm/identity/identity.go +++ b/api/tech/helm/identity/identity.go @@ -9,7 +9,7 @@ import ( "ocm.software/ocm/api/credentials/identity/hostpath" ociidentity "ocm.software/ocm/api/tech/oci/identity" "ocm.software/ocm/api/utils/listformat" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) // CONSUMER_TYPE is the Helm chart repository type. @@ -90,7 +90,7 @@ func GetConsumerId(repourl string, chartname string) cpi.ConsumerIdentity { } } -func GetCredentials(ctx cpi.ContextProvider, repourl string, chartname string) common.Properties { +func GetCredentials(ctx cpi.ContextProvider, repourl string, chartname string) misc.Properties { id := GetConsumerId(repourl, chartname) if id == nil { return nil diff --git a/api/tech/helm/identity/identity_test.go b/api/tech/helm/identity/identity_test.go index ffe3002641..ed1308fd09 100644 --- a/api/tech/helm/identity/identity_test.go +++ b/api/tech/helm/identity/identity_test.go @@ -9,7 +9,7 @@ import ( "ocm.software/ocm/api/datacontext" "ocm.software/ocm/api/oci" ociidentity "ocm.software/ocm/api/tech/oci/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var _ = Describe("consumer id handling", func() { @@ -52,7 +52,7 @@ var _ = Describe("consumer id handling", func() { ) creds := GetCredentials(ctx, "https://acme.org/charts", "demo:v1") - Expect(creds).To(Equal(common.Properties{ + Expect(creds).To(Equal(misc.Properties{ ATTR_USERNAME: "helm", ATTR_PASSWORD: "helmpass", })) @@ -68,7 +68,7 @@ var _ = Describe("consumer id handling", func() { ) creds := GetCredentials(ctx, "oci://acme.org/charts", "demo:v1") - Expect(creds).To(Equal(common.Properties{ + Expect(creds).To(Equal(misc.Properties{ ATTR_USERNAME: "oci", ATTR_PASSWORD: "ocipass", })) diff --git a/api/tech/helm/options.go b/api/tech/helm/options.go index 054c14e39b..6e8b4ef93a 100644 --- a/api/tech/helm/options.go +++ b/api/tech/helm/options.go @@ -2,7 +2,7 @@ package helm import ( "ocm.software/ocm/api/tech/helm/identity" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option interface { @@ -12,7 +12,7 @@ type Option interface { //////////////////////////////////////////////////////////////////////////////// type credOption struct { - creds common.Properties + creds misc.Properties } func (c *credOption) apply(dl *chartDownloader) error { @@ -22,7 +22,7 @@ func (c *credOption) apply(dl *chartDownloader) error { return nil } -func WithCredentials(creds common.Properties) Option { +func WithCredentials(creds misc.Properties) Option { return &credOption{creds} } @@ -34,7 +34,7 @@ type authOption struct { func (c *authOption) apply(dl *chartDownloader) error { if dl.creds == nil { - dl.creds = common.Properties{} + dl.creds = misc.Properties{} } dl.creds[identity.ATTR_USERNAME] = c.user dl.creds[identity.ATTR_PASSWORD] = c.password @@ -55,7 +55,7 @@ type certOption struct { func (c *certOption) apply(dl *chartDownloader) error { if len(c.privkey) != 0 { if dl.creds == nil { - dl.creds = common.Properties{} + dl.creds = misc.Properties{} } dl.creds[identity.ATTR_CERTIFICATE] = string(c.cert) dl.creds[identity.ATTR_PRIVATE_KEY] = string(c.privkey) @@ -76,7 +76,7 @@ type cacertOption struct { func (c *cacertOption) apply(dl *chartDownloader) error { if len(c.data) > 0 { if dl.creds == nil { - dl.creds = common.Properties{} + dl.creds = misc.Properties{} } dl.creds[identity.ATTR_CERTIFICATE_AUTHORITY] = string(c.data) } diff --git a/api/tech/maven/access_test.go b/api/tech/maven/access_test.go index 4f86359356..2461ed6e89 100644 --- a/api/tech/maven/access_test.go +++ b/api/tech/maven/access_test.go @@ -9,7 +9,7 @@ import ( . "github.com/onsi/gomega" . "ocm.software/ocm/api/helper/builder" - "github.com/mandelsoft/goutils/optionutils" + "github.com/mandelsoft/goutils/generics" me "ocm.software/ocm/api/tech/maven" "ocm.software/ocm/api/tech/maven/maventest" @@ -76,21 +76,21 @@ sdk-modules-bom-5.7.0.pom: 3 Expect(coords.FilterFileMap(files)).To(Equal(files)) }) It("filter by empty classifier", func() { - coords.Classifier = optionutils.PointerTo("") + coords.Classifier = generics.PointerTo("") Expect(coords.FilterFileMap(files)).To(YAMLEqual(` sdk-modules-bom-5.7.0.jar: 3 sdk-modules-bom-5.7.0.pom: 3 `)) }) It("filter by non-empty classifier", func() { - coords.Classifier = optionutils.PointerTo("random-content") + coords.Classifier = generics.PointerTo("random-content") Expect(coords.FilterFileMap(files)).To(YAMLEqual(` sdk-modules-bom-5.7.0-random-content.json: 3 sdk-modules-bom-5.7.0-random-content.txt: 3 `)) }) It("filter by extension", func() { - coords.Extension = optionutils.PointerTo("jar") + coords.Extension = generics.PointerTo("jar") Expect(coords.FilterFileMap(files)).To(YAMLEqual(` sdk-modules-bom-5.7.0-sources.jar: 3 sdk-modules-bom-5.7.0.jar: 3 @@ -98,16 +98,16 @@ sdk-modules-bom-5.7.0.jar: 3 }) It("filter by empty classifier and extension", func() { - coords.Classifier = optionutils.PointerTo("") - coords.Extension = optionutils.PointerTo("jar") + coords.Classifier = generics.PointerTo("") + coords.Extension = generics.PointerTo("jar") Expect(coords.FilterFileMap(files)).To(YAMLEqual(` sdk-modules-bom-5.7.0.jar: 3 `)) }) It("filter by non-empty classifier and extension", func() { - coords.Classifier = optionutils.PointerTo("sources") - coords.Extension = optionutils.PointerTo("jar") + coords.Classifier = generics.PointerTo("sources") + coords.Extension = generics.PointerTo("jar") Expect(coords.FilterFileMap(files)).To(YAMLEqual(` sdk-modules-bom-5.7.0-sources.jar: 3 `)) diff --git a/api/tech/maven/coordinates.go b/api/tech/maven/coordinates.go index 87f4fc5595..1f30b0ffa9 100644 --- a/api/tech/maven/coordinates.go +++ b/api/tech/maven/coordinates.go @@ -28,7 +28,7 @@ func WithOptionalClassifier(c *string) CoordinateOption { } func (o WithClassifier) ApplyTo(c *Coordinates) { - c.Classifier = optionutils.PointerTo(string(o)) + c.Classifier = generics.PointerTo(string(o)) } type WithExtension string @@ -41,7 +41,7 @@ func WithOptionalExtension(e *string) CoordinateOption { } func (o WithExtension) ApplyTo(c *Coordinates) { - c.Extension = optionutils.PointerTo(string(o)) + c.Extension = generics.PointerTo(string(o)) } type WithMediaType string @@ -54,7 +54,7 @@ func WithOptionalMediaType(mt *string) CoordinateOption { } func (o WithMediaType) ApplyTo(c *Coordinates) { - c.MediaType = optionutils.PointerTo(string(o)) + c.MediaType = generics.PointerTo(string(o)) } type FileCoordinates struct { @@ -196,18 +196,18 @@ func (c *Coordinates) SetClassifierExtensionBy(filename string) error { if i < 0 { return fmt.Errorf("no extension after classifier found in filename: %s", filename) } - c.Classifier = optionutils.PointerTo(s[:i]) + c.Classifier = generics.PointerTo(s[:i]) s = strings.TrimPrefix(s, optionutils.AsValue(c.Classifier)) } else { - c.Classifier = optionutils.PointerTo("") + c.Classifier = generics.PointerTo("") } - c.Extension = optionutils.PointerTo(strings.TrimPrefix(s, ".")) + c.Extension = generics.PointerTo(strings.TrimPrefix(s, ".")) return nil } // Copy creates a new Coordinates with the same values. func (c *Coordinates) Copy() *Coordinates { - return generics.Pointer(*c) + return generics.PointerTo(*c) } func (c *Coordinates) FilterFileMap(fileMap map[string]crypto.Hash) map[string]crypto.Hash { @@ -243,10 +243,10 @@ func Parse(serializedArtifact string) (*Coordinates, error) { } coords := NewCoordinates(parts[0], parts[1], parts[2]) if len(parts) >= 4 { - coords.Classifier = optionutils.PointerTo(parts[3]) + coords.Classifier = generics.PointerTo(parts[3]) } if len(parts) >= 5 { - coords.Extension = optionutils.PointerTo(parts[4]) + coords.Extension = generics.PointerTo(parts[4]) } return coords, nil } diff --git a/api/tech/signing/handlers/rsa/certhelper.go b/api/tech/signing/handlers/rsa/certhelper.go index d856b16742..3b6c867566 100644 --- a/api/tech/signing/handlers/rsa/certhelper.go +++ b/api/tech/signing/handlers/rsa/certhelper.go @@ -5,8 +5,9 @@ import ( "crypto/x509/pkix" "time" + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/tech/signing/signutils" - "ocm.software/ocm/api/utils" ) func CreateRootCertificate(sub *pkix.Name, validity time.Duration) (*x509.Certificate, *PrivateKey, error) { @@ -33,7 +34,7 @@ func CreateSigningCertificate(sub *pkix.Name, intermediate signutils.GenericCert return nil, nil, nil, err } spec := &signutils.Specification{ - IsCA: utils.Optional(isCA...), + IsCA: general.Optional(isCA...), Subject: *sub, Validity: validity, RootCAs: roots, diff --git a/api/tech/signing/norm/entry/norm.go b/api/tech/signing/norm/entry/norm.go index 53968a0d92..ef168500a7 100644 --- a/api/tech/signing/norm/entry/norm.go +++ b/api/tech/signing/norm/entry/norm.go @@ -7,8 +7,9 @@ import ( "sort" "strconv" + "github.com/mandelsoft/goutils/general" + "ocm.software/ocm/api/tech/signing" - "ocm.software/ocm/api/utils" ) var Type = normalization{} @@ -76,11 +77,11 @@ func (n *normalized) ToString(gap string) string { } func (l *normalized) String() string { - return string(utils.Must(json.Marshal(l.value))) + return string(general.Must(json.Marshal(l.value))) } func (l *normalized) Formatted() string { - return string(utils.Must(json.MarshalIndent(l.value, "", " "))) + return string(general.Must(json.MarshalIndent(l.value, "", " "))) } func (n *normalized) Marshal(gap string) ([]byte, error) { @@ -141,11 +142,11 @@ func (l *Entries) Add(key string, value interface{}) { } func (l Entries) String() string { - return string(utils.Must(json.Marshal(l))) + return string(general.Must(json.Marshal(l))) } func (l Entries) Formatted() string { - return string(utils.Must(json.MarshalIndent(l, "", " "))) + return string(general.Must(json.MarshalIndent(l, "", " "))) } func (l Entries) ToString(gap string) string { diff --git a/api/tech/signing/signutils/certs.go b/api/tech/signing/signutils/certs.go index 4f14e7161d..4fcc599ed0 100644 --- a/api/tech/signing/signutils/certs.go +++ b/api/tech/signing/signutils/certs.go @@ -13,9 +13,8 @@ import ( "time" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/modern-go/reflect2" - - "ocm.software/ocm/api/utils" ) type Usages []interface{} @@ -221,7 +220,7 @@ func VerifyCertificate(cert *x509.Certificate, intermediates GenericCertificateC return err } timestamp := cert.NotBefore - if ts := utils.Optional(ts...); ts != nil && !ts.IsZero() { + if ts := general.Optional(ts...); ts != nil && !ts.IsZero() { timestamp = *ts } opts := x509.VerifyOptions{ diff --git a/api/tech/signing/signutils/utils.go b/api/tech/signing/signutils/utils.go index 7cb08759a4..331ea2e664 100644 --- a/api/tech/signing/signutils/utils.go +++ b/api/tech/signing/signutils/utils.go @@ -16,6 +16,7 @@ import ( "time" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/modern-go/reflect2" @@ -252,7 +253,7 @@ func SystemCertPool() (*x509.CertPool, error) { func RootPoolFromFile(pemfile string, useOS bool, fss ...vfs.FileSystem) (*x509.CertPool, error) { fs := utils.FileSystem(fss...) - pemdata, err := utils.ReadFile(pemfile, fs) + pemdata, err := optionutils.ReadFile(pemfile, fs) if err != nil { return nil, errors.Wrapf(err, "cannot read cert pem file %q", pemfile) } diff --git a/api/tech/signing/tsa/tsa.go b/api/tech/signing/tsa/tsa.go index f01475dbc1..172b42213f 100644 --- a/api/tech/signing/tsa/tsa.go +++ b/api/tech/signing/tsa/tsa.go @@ -11,9 +11,9 @@ import ( tsa "github.com/InfiniteLoopSpace/go_S-MIME/timestamp" "github.com/go-test/deep" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/tech/signing/signutils" - "ocm.software/ocm/api/utils" ) // NewMessageImprint creates a new MessageImprint using hash and digest. @@ -88,7 +88,7 @@ func Verify(mi *tsa.MessageImprint, sd *TimeStamp, now bool, rootpool ...signuti if !now { opts.CurrentTime = info.GenTime } - opts.Roots, err = signutils.GetCertPool(utils.Optional(rootpool...), false) + opts.Roots, err = signutils.GetCertPool(general.Optional(rootpool...), false) if err != nil { return nil, errors.Wrapf(err, "root cert pool") } diff --git a/api/tech/signing/x509_certificate.go b/api/tech/signing/x509_certificate.go index 2b4ad76282..1b46b0fa3e 100644 --- a/api/tech/signing/x509_certificate.go +++ b/api/tech/signing/x509_certificate.go @@ -7,7 +7,7 @@ import ( "errors" "fmt" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/optionutils" ) // CreateAndVerifyX509CertificateFromFiles creates and verifies a x509 certificate from certificate files. @@ -17,7 +17,7 @@ func CreateAndVerifyX509CertificateFromFiles(certPath, intermediateCAsCertsPath, var rootCACert []byte if rootCACertPath != "" { - rootCACert, err = utils.ReadFile(rootCACertPath) + rootCACert, err = optionutils.ReadFile(rootCACertPath) if err != nil { return nil, fmt.Errorf("unable to read root CA certificate file: %w", err) } @@ -25,13 +25,13 @@ func CreateAndVerifyX509CertificateFromFiles(certPath, intermediateCAsCertsPath, var intermediateCAsCerts []byte if intermediateCAsCertsPath != "" { - intermediateCAsCerts, err = utils.ReadFile(intermediateCAsCertsPath) + intermediateCAsCerts, err = optionutils.ReadFile(intermediateCAsCertsPath) if err != nil { return nil, fmt.Errorf("unable to read intermediate CAs certificates file: %w", err) } } - cert, err := utils.ReadFile(certPath) + cert, err := optionutils.ReadFile(certPath) if err != nil { return nil, fmt.Errorf("unable to read certificate file: %w", err) } diff --git a/api/utils/accessio/cache.go b/api/utils/accessio/cache.go index e68e868ff9..6f1237f5e8 100644 --- a/api/utils/accessio/cache.go +++ b/api/utils/accessio/cache.go @@ -19,7 +19,7 @@ import ( "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/blobaccess/file" "ocm.software/ocm/api/utils/iotools" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/refmgmt" ) @@ -48,7 +48,7 @@ type CleanupCache interface { // - handled entries (cnt, size) // - not handled entries (ncnt, nsize) // - failing entries (fcnt, fsize) - Cleanup(p common.Printer, before *time.Time, dryrun bool) (cnt int, ncnt int, fcnt int, size int64, nsize int64, fsize int64, err error) + Cleanup(p misc.Printer, before *time.Time, dryrun bool) (cnt int, ncnt int, fcnt int, size int64, nsize int64, fsize int64, err error) } type BlobCache interface { @@ -115,12 +115,12 @@ func (c *blobCache) Unlock() { c.lock.Unlock() } -func (c *blobCache) Cleanup(p common.Printer, before *time.Time, dryrun bool) (cnt int, ncnt int, fcnt int, size int64, nsize int64, fsize int64, err error) { +func (c *blobCache) Cleanup(p misc.Printer, before *time.Time, dryrun bool) (cnt int, ncnt int, fcnt int, size int64, nsize int64, fsize int64, err error) { c.Lock() defer c.Unlock() if p == nil { - p = common.NewPrinter(nil) + p = misc.NewPrinter(nil) } path, fs := c.Root() @@ -181,7 +181,7 @@ func (c *blobCache) GetBlobData(digest digest.Digest) (int64, blobaccess.DataAcc c.lock.RLock() defer c.lock.RUnlock() - path := common.DigestToFileName(digest) + path := misc.DigestToFileName(digest) fi, err := c.cache.Stat(path) if err == nil { vfs.WriteFile(c.cache, path+ACCESS_SUFFIX, []byte{}, 0o600) @@ -207,7 +207,7 @@ func (c *blobCache) AddBlob(blob blobaccess.BlobAccess) (int64, digest.Digest, e if blob.DigestKnown() { c.lock.RLock() - path := common.DigestToFileName(blob.Digest()) + path := misc.DigestToFileName(blob.Digest()) if ok, err := vfs.Exists(c.cache, path); ok || err != nil { c.lock.RUnlock() return blob.Size(), blob.Digest(), err @@ -247,7 +247,7 @@ func (c *blobCache) AddBlob(blob blobaccess.BlobAccess) (int64, digest.Digest, e } else { digest = blob.Digest() } - target := common.DigestToFileName(digest) + target := misc.DigestToFileName(digest) c.lock.Lock() defer c.lock.Unlock() diff --git a/api/utils/accessio/cache_test.go b/api/utils/accessio/cache_test.go index 3f5b7e6c68..ef35546851 100644 --- a/api/utils/accessio/cache_test.go +++ b/api/utils/accessio/cache_test.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/blobaccess/blobaccess" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) var _ = Describe("cache management", func() { @@ -47,11 +47,11 @@ var _ = Describe("cache management", func() { }) It("blob copied to cache", func() { - Expect(vfs.FileExists(tempfs, common.DigestToFileName(td1_digest))).To(BeFalse()) + Expect(vfs.FileExists(tempfs, misc.DigestToFileName(td1_digest))).To(BeFalse()) _, data, err := cache.GetBlobData(td1_digest) Expect(err).To(Succeed()) - Expect(vfs.FileExists(tempfs, common.DigestToFileName(td1_digest))).To(BeFalse()) + Expect(vfs.FileExists(tempfs, misc.DigestToFileName(td1_digest))).To(BeFalse()) Expect(data.Get()).To(Equal([]byte("testdata"))) - Expect(vfs.FileExists(tempfs, common.DigestToFileName(td1_digest))).To(BeTrue()) + Expect(vfs.FileExists(tempfs, misc.DigestToFileName(td1_digest))).To(BeTrue()) }) }) diff --git a/api/utils/accessobj/filesystemaccess.go b/api/utils/accessobj/filesystemaccess.go index a15f37b05b..f03d080d02 100644 --- a/api/utils/accessobj/filesystemaccess.go +++ b/api/utils/accessobj/filesystemaccess.go @@ -13,7 +13,7 @@ import ( "ocm.software/ocm/api/utils/blobaccess/blobaccess" "ocm.software/ocm/api/utils/blobaccess/file" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/tarutils" ) @@ -62,7 +62,7 @@ func (a *FileSystemBlobAccess) GetState() State { // DigestPath returns the path to the blob for a given name. func (a *FileSystemBlobAccess) DigestPath(digest digest.Digest) string { - return a.BlobPath(common.DigestToFileName(digest)) + return a.BlobPath(misc.DigestToFileName(digest)) } // BlobPath returns the path to the blob for a given name. diff --git a/api/utils/blobaccess/dirtree/access.go b/api/utils/blobaccess/dirtree/access.go index 989baf036a..12757b1972 100644 --- a/api/utils/blobaccess/dirtree/access.go +++ b/api/utils/blobaccess/dirtree/access.go @@ -38,8 +38,8 @@ func BlobAccess(path string, opts ...Option) (_ bpi.BlobAccess, rerr error) { taropts := tarutils.TarFileSystemOptions{ IncludeFiles: eff.IncludeFiles, ExcludeFiles: eff.ExcludeFiles, - PreserveDir: utils.AsBool(eff.PreserveDir), - FollowSymlinks: utils.AsBool(eff.FollowSymlinks), + PreserveDir: optionutils.AsBool(eff.PreserveDir), + FollowSymlinks: optionutils.AsBool(eff.FollowSymlinks), } temp, err := file.NewTempFile(fs.FSTempDir(), "resourceblob*.tgz", fs) @@ -48,7 +48,7 @@ func BlobAccess(path string, opts ...Option) (_ bpi.BlobAccess, rerr error) { } defer errors.PropagateError(&rerr, temp.Close) - if utils.AsBool(eff.CompressWithGzip) { + if optionutils.AsBool(eff.CompressWithGzip) { if eff.MimeType == "" { eff.MimeType = mime.MIME_TGZ } diff --git a/api/utils/blobaccess/dirtree/options.go b/api/utils/blobaccess/dirtree/options.go index 6ba0477101..916f9aeab6 100644 --- a/api/utils/blobaccess/dirtree/options.go +++ b/api/utils/blobaccess/dirtree/options.go @@ -3,10 +3,9 @@ package dirtree import ( "slices" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/vfs" - - "ocm.software/ocm/api/utils" ) type Option = optionutils.Option[*Options] @@ -42,10 +41,10 @@ func (o *Options) ApplyTo(opts *Options) { opts.MimeType = o.MimeType } if o.CompressWithGzip != nil { - opts.CompressWithGzip = utils.BoolP(*o.CompressWithGzip) + opts.CompressWithGzip = optionutils.BoolP(*o.CompressWithGzip) } if o.PreserveDir != nil { - opts.PreserveDir = utils.BoolP(*o.PreserveDir) + opts.PreserveDir = optionutils.BoolP(*o.PreserveDir) } if len(o.IncludeFiles) != 0 { opts.IncludeFiles = slices.Clone(o.IncludeFiles) @@ -54,7 +53,7 @@ func (o *Options) ApplyTo(opts *Options) { opts.ExcludeFiles = slices.Clone(o.ExcludeFiles) } if o.FollowSymlinks != nil { - opts.FollowSymlinks = utils.BoolP(*o.FollowSymlinks) + opts.FollowSymlinks = optionutils.BoolP(*o.FollowSymlinks) } } @@ -87,21 +86,21 @@ func WithMimeType(mime string) Option { type compressWithGzip bool func (o compressWithGzip) ApplyTo(opts *Options) { - opts.CompressWithGzip = utils.BoolP(o) + opts.CompressWithGzip = optionutils.BoolP(o) } func WithCompressWithGzip(b ...bool) Option { - return compressWithGzip(utils.OptionalDefaultedBool(true, b...)) + return compressWithGzip(general.OptionalDefaultedBool(true, b...)) } type preserveDir bool func (o preserveDir) ApplyTo(opts *Options) { - opts.PreserveDir = utils.BoolP(o) + opts.PreserveDir = optionutils.BoolP(o) } func WithPreserveDir(b ...bool) Option { - return preserveDir(utils.OptionalDefaultedBool(true, b...)) + return preserveDir(general.OptionalDefaultedBool(true, b...)) } type includeFiles []string @@ -127,9 +126,9 @@ func WithExcludeFiles(files []string) Option { type followSymlinks bool func (o followSymlinks) ApplyTo(opts *Options) { - opts.FollowSymlinks = utils.BoolP(o) + opts.FollowSymlinks = optionutils.BoolP(o) } func WithFollowSymlinks(b ...bool) Option { - return followSymlinks(utils.OptionalDefaultedBool(true, b...)) + return followSymlinks(general.OptionalDefaultedBool(true, b...)) } diff --git a/api/utils/blobaccess/dockerdaemon/options.go b/api/utils/blobaccess/dockerdaemon/options.go index 0cdaf95464..2e6eaf980f 100644 --- a/api/utils/blobaccess/dockerdaemon/options.go +++ b/api/utils/blobaccess/dockerdaemon/options.go @@ -1,11 +1,11 @@ package dockerdaemon import ( + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/optionutils" cpi "ocm.software/ocm/api/oci/types" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] @@ -15,7 +15,7 @@ type Options struct { Name string Version string OverrideVersion *bool - Origin *common.NameVersion + Origin *misc.NameVersion } func (o *Options) ApplyTo(opts *Options) { @@ -85,26 +85,26 @@ type override struct { } func (o *override) ApplyTo(opts *Options) { - opts.OverrideVersion = utils.BoolP(o.flag) + opts.OverrideVersion = optionutils.BoolP(o.flag) opts.Version = o.version } func WithVersionOverride(v string, flag ...bool) Option { return &override{ version: v, - flag: utils.OptionalDefaultedBool(true, flag...), + flag: general.OptionalDefaultedBool(true, flag...), } } //////////////////////////////////////////////////////////////////////////////// -type compvers common.NameVersion +type compvers misc.NameVersion func (o compvers) ApplyTo(opts *Options) { - n := common.NameVersion(o) + n := misc.NameVersion(o) opts.Origin = &n } -func WithOrigin(o common.NameVersion) Option { +func WithOrigin(o misc.NameVersion) Option { return compvers(o) } diff --git a/api/utils/blobaccess/dockermulti/options.go b/api/utils/blobaccess/dockermulti/options.go index b1bc5bd84e..328237b113 100644 --- a/api/utils/blobaccess/dockermulti/options.go +++ b/api/utils/blobaccess/dockermulti/options.go @@ -6,7 +6,7 @@ import ( "github.com/mandelsoft/goutils/optionutils" "ocm.software/ocm/api/oci" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] @@ -15,8 +15,8 @@ type Options struct { Context oci.Context Version string Variants []string - Origin *common.NameVersion - Printer common.Printer + Origin *misc.NameVersion + Printer misc.Printer } func (o *Options) ApplyTo(opts *Options) { @@ -68,14 +68,14 @@ func WithVersion(v string) Option { //////////////////////////////////////////////////////////////////////////////// -type compvers common.NameVersion +type compvers misc.NameVersion func (o compvers) ApplyTo(opts *Options) { - n := common.NameVersion(o) + n := misc.NameVersion(o) opts.Origin = &n } -func WithOrigin(o common.NameVersion) Option { +func WithOrigin(o misc.NameVersion) Option { return compvers(o) } @@ -94,13 +94,13 @@ func WithVariants(v ...string) Option { //////////////////////////////////////////////////////////////////////////////// type printer struct { - common.Printer + misc.Printer } func (o printer) ApplyTo(opts *Options) { opts.Printer = o } -func WithPrinter(p common.Printer) Option { +func WithPrinter(p misc.Printer) Option { return printer{p} } diff --git a/api/utils/blobaccess/file/options.go b/api/utils/blobaccess/file/options.go index 656b7dc02e..e19333bfa7 100644 --- a/api/utils/blobaccess/file/options.go +++ b/api/utils/blobaccess/file/options.go @@ -58,7 +58,7 @@ func WithFileSystem(fss ...vfs.FileSystem) Option { type size int64 func (o size) ApplyTo(opts *Options) { - opts.Size = generics.Pointer(int64(o)) + opts.Size = generics.PointerTo(int64(o)) } func WithSize(s int64) Option { diff --git a/api/utils/blobaccess/helm/access.go b/api/utils/blobaccess/helm/access.go index 3bf53ff769..324ab30a83 100644 --- a/api/utils/blobaccess/helm/access.go +++ b/api/utils/blobaccess/helm/access.go @@ -13,7 +13,7 @@ import ( "ocm.software/ocm/api/tech/helm/loader" "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess/bpi" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) func BlobAccess(path string, opts ...Option) (blob bpi.BlobAccess, name, version string, err error) { @@ -22,7 +22,7 @@ func BlobAccess(path string, opts ...Option) (blob bpi.BlobAccess, name, version fs := utils.FileSystem(eff.FileSystem) printer := eff.Printer if printer == nil { - printer = common.NewPrinter(nil) + printer = misc.NewPrinter(nil) } var chartLoader loader.Loader diff --git a/api/utils/blobaccess/helm/options.go b/api/utils/blobaccess/helm/options.go index 88bd1ba1de..66f4aec8a7 100644 --- a/api/utils/blobaccess/helm/options.go +++ b/api/utils/blobaccess/helm/options.go @@ -1,12 +1,12 @@ package helm import ( + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/vfs" "ocm.software/ocm/api/oci" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] @@ -20,7 +20,7 @@ type Options struct { CACert string CACertFile string - Printer common.Printer + Printer misc.Printer } func (o *Options) ApplyTo(opts *Options) { @@ -108,14 +108,14 @@ type override struct { } func (o *override) ApplyTo(opts *Options) { - opts.OverrideVersion = utils.BoolP(o.flag) + opts.OverrideVersion = optionutils.BoolP(o.flag) opts.Version = o.version } func WithVersionOverride(v string, flag ...bool) Option { return &override{ version: v, - flag: utils.OptionalDefaultedBool(true, flag...), + flag: general.OptionalDefaultedBool(true, flag...), } } @@ -159,13 +159,13 @@ func WithCACertFile(v string) Option { //////////////////////////////////////////////////////////////////////////////// type printer struct { - common.Printer + misc.Printer } func (o printer) ApplyTo(opts *Options) { opts.Printer = o } -func WithPrinter(p common.Printer) Option { +func WithPrinter(p misc.Printer) Option { return printer{p} } diff --git a/api/utils/blobaccess/ociartifact/options.go b/api/utils/blobaccess/ociartifact/options.go index 1420ddfc2f..05703931f1 100644 --- a/api/utils/blobaccess/ociartifact/options.go +++ b/api/utils/blobaccess/ociartifact/options.go @@ -5,7 +5,7 @@ import ( "ocm.software/ocm/api/oci" "ocm.software/ocm/api/oci/tools/transfer/filters" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Option = optionutils.Option[*Options] @@ -16,7 +16,7 @@ type Options struct { Context oci.Context Version string Filter Filter - Printer common.Printer + Printer misc.Printer } func (o *Options) OCIContext() oci.Context { @@ -26,9 +26,9 @@ func (o *Options) OCIContext() oci.Context { return o.Context } -func (o *Options) GetPrinter() common.Printer { +func (o *Options) GetPrinter() misc.Printer { if o.Printer == nil { - return common.NewPrinter(nil) + return misc.NewPrinter(nil) } return o.Printer } @@ -86,14 +86,14 @@ func WithVersion(v string) Option { //////////////////////////////////////////////////////////////////////////////// type printer struct { - common.Printer + misc.Printer } func (o printer) ApplyTo(opts *Options) { opts.Printer = o } -func WithPrinter(p common.Printer) Option { +func WithPrinter(p misc.Printer) Option { return printer{p} } diff --git a/api/utils/blobaccess/ocm/ref.go b/api/utils/blobaccess/ocm/ref.go index e037e1c800..9cf618d264 100644 --- a/api/utils/blobaccess/ocm/ref.go +++ b/api/utils/blobaccess/ocm/ref.go @@ -2,12 +2,12 @@ package ocm import ( "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/resourcerefs" "ocm.software/ocm/api/ocm/selectors/rscsel" - "ocm.software/ocm/api/utils" ) // ResourceProvider selects a resource from a component version. @@ -57,7 +57,7 @@ func ByResourcePath(id metav1.Identity, path ...metav1.Identity) ResourceProvide } func ByResourceRef(ref metav1.ResourceReference, res ...cpi.ComponentVersionResolver) ResourceProvider { - return &byref{utils.Optional(res...), ref} + return &byref{general.Optional(res...), ref} } func (r *byref) GetResource(cv cpi.ComponentVersionAccess) (cpi.ResourceAccess, cpi.ComponentVersionAccess, error) { diff --git a/api/utils/blobaccess/wget/options.go b/api/utils/blobaccess/wget/options.go index 62edef6dec..47650e1657 100644 --- a/api/utils/blobaccess/wget/options.go +++ b/api/utils/blobaccess/wget/options.go @@ -4,12 +4,12 @@ import ( "io" "net/http" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/logging" "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/tech/wget/identity" - "ocm.software/ocm/api/utils" ocmlog "ocm.software/ocm/api/utils/logging" ) @@ -180,9 +180,9 @@ func WithBody(v io.Reader) Option { type noredirect bool func (o noredirect) ApplyTo(opts *Options) { - opts.NoRedirect = utils.BoolP(o) + opts.NoRedirect = optionutils.BoolP(o) } func WithNoRedirect(r ...bool) Option { - return noredirect(utils.OptionalDefaultedBool(true, r...)) + return noredirect(general.OptionalDefaultedBool(true, r...)) } diff --git a/api/utils/clisupport/labels.go b/api/utils/clisupport/labels.go index 8fae0340da..7fddc4d557 100644 --- a/api/utils/clisupport/labels.go +++ b/api/utils/clisupport/labels.go @@ -5,12 +5,12 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/osfs" "github.com/mandelsoft/vfs/pkg/vfs" "sigs.k8s.io/yaml" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - "ocm.software/ocm/api/utils" ) func gkind(kind ...string) string { @@ -34,7 +34,7 @@ func ParseLabel(fs vfs.FileSystem, a string, kind ...string) (*metav1.Label, err } label := a[:i] - data, err := utils.ResolveData(a[i+1:], fs) + data, err := optionutils.ResolveData(a[i+1:], fs) if err != nil { return nil, err } diff --git a/api/utils/cobrautils/flagsets/configoptionset.go b/api/utils/cobrautils/flagsets/configoptionset.go index ae846beb2f..c5430fe956 100644 --- a/api/utils/cobrautils/flagsets/configoptionset.go +++ b/api/utils/cobrautils/flagsets/configoptionset.go @@ -5,8 +5,7 @@ import ( "sync" "github.com/mandelsoft/goutils/errors" - - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/maputils" ) type ConfigOptionType interface { @@ -133,7 +132,7 @@ func (s *configOptionTypeSet) OptionTypeNames() []string { s.lock.RLock() defer s.lock.RUnlock() - return utils.StringMapKeys(s.options) + return maputils.OrderedKeys(s.options) } func (s *configOptionTypeSet) SharedOptionTypes() []ConfigOptionType { diff --git a/api/utils/cobrautils/flagsets/flagsetscheme/scheme.go b/api/utils/cobrautils/flagsets/flagsetscheme/scheme.go index f0ed2ea6c3..2457e45de2 100644 --- a/api/utils/cobrautils/flagsets/flagsetscheme/scheme.go +++ b/api/utils/cobrautils/flagsets/flagsetscheme/scheme.go @@ -1,7 +1,9 @@ package flagsetscheme import ( - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/stringutils" + "ocm.software/ocm/api/utils/cobrautils/flagsets" "ocm.software/ocm/api/utils/logging" "ocm.software/ocm/api/utils/runtime" @@ -71,7 +73,7 @@ type typeScheme[T runtime.VersionedTypedObject, R VersionTypedObjectType[T], S T func flagExtender[T runtime.VersionedTypedObject, R VersionTypedObjectType[T]](ty R) string { if h := ty.ConfigOptionTypeSetHandler(); h != nil { - return utils.IndentLines(flagsets.FormatConfigOptions(h), " ") + return stringutils.IndentLines(flagsets.FormatConfigOptions(h), " ") } return "" } @@ -79,7 +81,7 @@ func flagExtender[T runtime.VersionedTypedObject, R VersionTypedObjectType[T]](t // NewTypeScheme provides an TypeScheme implementation based on the interfaces // and the default runtime.TypeScheme implementation. func NewTypeScheme[T runtime.VersionedTypedObject, R VersionTypedObjectType[T], S TypeScheme[T, R]](kindname string, cfgname, typeOption, desc, group string, unknown runtime.Unstructured, acceptUnknown bool, base ...S) TypeScheme[T, R] { - scheme := descriptivetype.NewTypeScheme[T, R](kindname, flagExtender[T, R], unknown, acceptUnknown, utils.Optional(base...)) + scheme := descriptivetype.NewTypeScheme[T, R](kindname, flagExtender[T, R], unknown, acceptUnknown, general.Optional(base...)) return &typeScheme[T, R, S]{ cfgname: cfgname, description: desc, diff --git a/api/utils/cobrautils/flagsets/provider.go b/api/utils/cobrautils/flagsets/provider.go index 2a9a7b677f..d1f5315e6d 100644 --- a/api/utils/cobrautils/flagsets/provider.go +++ b/api/utils/cobrautils/flagsets/provider.go @@ -5,8 +5,8 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -78,7 +78,7 @@ var _ ConfigTypeOptionSetConfigProvider = (*typedConfigProvider)(nil) func NewTypedConfigProvider(name string, desc, typeOption string, acceptUnknown ...bool) ConfigTypeOptionSetConfigProvider { typeOpt := NewStringOptionType(name+"Type", "type of "+desc) - return &typedConfigProvider{NewTypedConfigProviderBase(name, desc, TypeNameProviderFromOptions(typeOption), utils.Optional(acceptUnknown...), typeOpt), typeOpt} + return &typedConfigProvider{NewTypedConfigProviderBase(name, desc, TypeNameProviderFromOptions(typeOption), general.Optional(acceptUnknown...), typeOpt), typeOpt} } func (p *typedConfigProvider) GetTypeOptionType() ConfigOptionType { @@ -116,7 +116,7 @@ var _ ConfigTypeOptionSetConfigProvider = (*typedConfigProvider)(nil) func NewExplicitlyTypedConfigProvider(name string, desc string, acceptUnknown ...bool) ExplicitlyTypedConfigTypeOptionSetConfigProvider { p := &explicitlyTypedConfigProvider{} - p._ConfigTypeOptionSetConfigProvider = NewTypedConfigProviderBase(name, desc, p.getTypeName, utils.Optional(acceptUnknown...)) + p._ConfigTypeOptionSetConfigProvider = NewTypedConfigProviderBase(name, desc, p.getTypeName, general.Optional(acceptUnknown...)) return p } diff --git a/api/utils/cobrautils/groups/flagusages.go b/api/utils/cobrautils/groups/flagusages.go index 1b3150e24b..30c1801629 100644 --- a/api/utils/cobrautils/groups/flagusages.go +++ b/api/utils/cobrautils/groups/flagusages.go @@ -5,9 +5,8 @@ import ( "fmt" "strings" + "github.com/mandelsoft/goutils/maputils" "github.com/spf13/pflag" - - "ocm.software/ocm/api/utils" ) const FlagGroupAnnotation = "flag-group-annotation" @@ -21,7 +20,7 @@ func FlagUsagesWrapped(f *pflag.FlagSet, cols int) string { sep := "" buf := new(bytes.Buffer) - for _, g := range utils.StringMapKeys(lines) { + for _, g := range maputils.OrderedKeys(lines) { if g != "" { fmt.Fprintln(buf, sep+" "+g+":") } @@ -43,7 +42,7 @@ func GroupedFlagUsagesWrapped(f *pflag.FlagSet, cols int) []UsageGroup { lines := DetermineGroups(f, cols) var groups []UsageGroup - for _, g := range utils.StringMapKeys(lines) { + for _, g := range maputils.OrderedKeys(lines) { buf := new(bytes.Buffer) for _, line := range lines[g] { fmt.Fprintln(buf, line) diff --git a/api/utils/cobrautils/logopts/config.go b/api/utils/cobrautils/logopts/config.go index 149ad3d0d8..63634a7ebe 100644 --- a/api/utils/cobrautils/logopts/config.go +++ b/api/utils/cobrautils/logopts/config.go @@ -4,6 +4,7 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/logging" "github.com/mandelsoft/logging/config" "github.com/mandelsoft/logging/logrusl/adapter" @@ -48,7 +49,7 @@ func (c *ConfigFragment) GetLogConfig(fss ...vfs.FileSystem) (*config.Config, er if c.LogConfig != "" { var data []byte if strings.HasPrefix(c.LogConfig, "@") { - data, err = utils.ReadFile(c.LogConfig[1:], utils.FileSystem(fss...)) + data, err = optionutils.ReadFile(c.LogConfig[1:], utils.FileSystem(fss...)) if err != nil { return nil, errors.Wrapf(err, "cannot read logging config file %q", c.LogConfig[1:]) } diff --git a/api/utils/deprecated.go b/api/utils/deprecated.go new file mode 100644 index 0000000000..255900e353 --- /dev/null +++ b/api/utils/deprecated.go @@ -0,0 +1,96 @@ +package utils + +import ( + "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/ioutils" + "github.com/mandelsoft/goutils/maputils" + "github.com/mandelsoft/goutils/optionutils" + "github.com/mandelsoft/goutils/stringutils" + "github.com/mandelsoft/vfs/pkg/vfs" + "github.com/modern-go/reflect2" +) + +// Deprecated: use maputils.OrderedKeys. +func StringMapKeys[K ~string, E any](m map[K]E) []K { + return maputils.OrderedKeys(m) +} + +// Optional returns the first optional non-zero element given as variadic argument, +// if given, or the zero element as default. +// Deprecated: use general.Optional or general.OptionalNonZero. +func Optional[T any](list ...T) T { + return general.Optional(list...) +} + +// OptionalDefaulted returns the first optional non-nil element given as variadic +// argument, or the given default element. For value types a given zero +// argument is excepted, also. +// Deprecated: use general.OptionalNonZeroDefaulted or general.OptionaDefaulted. +func OptionalDefaulted[T any](def T, list ...T) T { + return general.OptionalDefaulted(def, list...) +} + +// OptionalDefaultedBool checks all args for true. If arg is given +// the given default is returned. +// Deprecated: use general.OptionalDefaultedBool. +func OptionalDefaultedBool(def bool, list ...bool) bool { + return general.OptionalDefaultedBool(def, list...) +} + +// Deprecated: use optionutils.BoolP. +func BoolP[T ~bool](b T) *bool { + return optionutils.BoolP(b) +} + +// Deprecated: use optionutils.AsBool. +func AsBool(b *bool, def ...bool) bool { + if b == nil && len(def) > 0 { + return Optional(def...) + } + return b != nil && *b +} + +// GetOptionFlag returns the flag value used to set a bool option +// based on optionally specified explicit value(s). +// The default value is to enable the option (true). +// Deprecated: use optionutils.GetOptionFlag. +func GetOptionFlag(list ...bool) bool { + return optionutils.GetOptionFlag(list...) +} + +// Deprecated: use reflect2.IsNil. +func IsNil(o interface{}) bool { + return reflect2.IsNil(o) +} + +// Must expect a result to be provided without error. +// Deprecated: use general.Must +func Must[T any](o T, err error) T { + return general.Must[T](o, err) +} + +// Deprecated: use stringutils.IndentLines. +func IndentLines(orig string, gap string, skipfirst ...bool) string { + return stringutils.IndentLines(orig, gap, skipfirst...) +} + +// Deprecated: use stringutils.JoinIndentLines. +func JoinIndentLines(orig []string, gap string, skipfirst ...bool) string { + return stringutils.JoinIndentLines(orig, gap, skipfirst...) +} + +// ResolvePath handles the ~ notation for the home directory. +// Deprecated: use ioutils.ResolvePath. +func ResolvePath(path string) (string, error) { + return ioutils.ResolvePath(path) +} + +// Deprecated: use optionutils.ResolveData. +func ResolveData(in string, fss ...vfs.FileSystem) ([]byte, error) { + return optionutils.ResolveData(in, fss...) +} + +// Deprecated: use optionutils.ReadFile. +func ReadFile(in string, fss ...vfs.FileSystem) ([]byte, error) { + return optionutils.ReadFile(in, fss...) +} diff --git a/api/utils/dirtree/context.go b/api/utils/dirtree/context.go index 17047ce2d0..288ec477f8 100644 --- a/api/utils/dirtree/context.go +++ b/api/utils/dirtree/context.go @@ -6,10 +6,9 @@ import ( "hash" "io" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/logging" "github.com/mandelsoft/vfs/pkg/vfs" - - "ocm.software/ocm/api/utils" ) type Context interface { @@ -24,7 +23,7 @@ type Context interface { // DefaultContext provides a default directory tree hashing context. // It is based on the Git tree hash mechanism. func DefaultContext(ctx ...logging.Context) Context { - return &defaultContext{utils.OptionalDefaulted(LogContext, ctx...)} + return &defaultContext{general.OptionalDefaulted(LogContext, ctx...)} } type defaultContext struct { diff --git a/api/utils/keyinfo.go b/api/utils/keyinfo.go index 32e2e1e738..5c5849bd4c 100644 --- a/api/utils/keyinfo.go +++ b/api/utils/keyinfo.go @@ -4,6 +4,8 @@ import ( "fmt" "sort" "strings" + + "github.com/mandelsoft/goutils/maputils" ) type DescriptionProvider interface { @@ -32,7 +34,7 @@ func FormatList(def string, elems ...KeyInfo) string { } func FormatMap[T DescriptionProvider](def string, elems map[string]T) string { - keys := StringMapKeys(elems) + keys := maputils.OrderedKeys(elems) sort.Strings(keys) names := "" for _, k := range keys { diff --git a/api/utils/listformat/listhelp.go b/api/utils/listformat/listhelp.go index e99e99a6f3..247849857c 100644 --- a/api/utils/listformat/listhelp.go +++ b/api/utils/listformat/listhelp.go @@ -6,7 +6,8 @@ import ( "sort" "strings" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/maputils" + "github.com/mandelsoft/goutils/stringutils" ) type StringElementDescriptionList []string @@ -39,7 +40,7 @@ func FormatMapElements[K ~string, E any](def string, m map[K]E, desc ...func(E) if len(desc) == 0 || desc[0] == nil { desc = []func(E) string{StringDescription[E]} } - keys := utils.StringMapKeys(m) + keys := maputils.OrderedKeys(m) return FormatListElements(def, &maplist[K, E]{ desc: desc[0], keys: keys, @@ -83,7 +84,7 @@ func FormatListElements(def string, elems ListElements) string { } desc := elems.Description(i) if desc != "" { - names += ": " + utils.IndentLines(desc, " ", true) + names += ": " + stringutils.IndentLines(desc, " ", true) if strings.Contains(desc, "\n") { names += "\n" } @@ -100,7 +101,7 @@ func FormatDescriptionList(def string, elems ...string) string { out := "" for _, l := range list { if l != "" { - out += " - " + utils.IndentLines(l, " ", true) + out += " - " + stringutils.IndentLines(l, " ", true) if strings.Contains(l, "\n") { out += "\n" } diff --git a/api/utils/misc/history_test.go b/api/utils/misc/history_test.go index 3dcd81dcd1..d313a21609 100644 --- a/api/utils/misc/history_test.go +++ b/api/utils/misc/history_test.go @@ -4,30 +4,30 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) type Elem struct { - history common.History - key common.NameVersion + history misc.History + key misc.NameVersion } -var _ common.HistoryElement = (*Elem)(nil) +var _ misc.HistoryElement = (*Elem)(nil) -func (e *Elem) GetHistory() common.History { +func (e *Elem) GetHistory() misc.History { return e.history } -func (e *Elem) GetKey() common.NameVersion { +func (e *Elem) GetKey() misc.NameVersion { return e.key } func New(n string, hist ...string) *Elem { e := &Elem{ - key: common.NewNameVersion(n, ""), + key: misc.NewNameVersion(n, ""), } for _, h := range hist { - e.history.Add("test", common.NewNameVersion(h, "")) + e.history.Add("test", misc.NewNameVersion(h, "")) } return e } @@ -35,27 +35,27 @@ func New(n string, hist ...string) *Elem { var _ = Describe("processing buffer", func() { Context("history", func() { It("compare", func() { - Expect(common.CompareHistoryElement(New("a"), New("b")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("b"), New("a")) > 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a"), New("a")) == 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a"), New("b")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("b"), New("a")) > 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a"), New("a")) == 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a", "a"), New("b", "a")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("b", "a"), New("a", "a")) > 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a", "a"), New("a", "a")) == 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a", "a"), New("b", "a")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("b", "a"), New("a", "a")) > 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a", "a"), New("a", "a")) == 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a", "a"), New("a", "b")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("b", "a"), New("a", "b")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a", "a"), New("b", "b")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a", "a"), New("a", "b")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("b", "a"), New("a", "b")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a", "a"), New("b", "b")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a", "a"), New("a", "a", "b")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("b", "a"), New("a", "a", "b")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a", "a"), New("b", "a", "b")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a", "a"), New("a", "a", "b")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("b", "a"), New("a", "a", "b")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a", "a"), New("b", "a", "b")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a"), New("a", "a")) < 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("b"), New("a", "a")) > 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a"), New("a", "a")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("b"), New("a", "a")) > 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a", "a"), New("a")) > 0).To(BeTrue()) - Expect(common.CompareHistoryElement(New("a", "a"), New("b")) < 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a", "a"), New("a")) > 0).To(BeTrue()) + Expect(misc.CompareHistoryElement(New("a", "a"), New("b")) < 0).To(BeTrue()) }) It("sort", func() { s := []*Elem{ @@ -71,7 +71,7 @@ var _ = Describe("processing buffer", func() { New("b", "a", "c"), New("b", "a", "c", "d"), } - common.SortHistoryElements(s) + misc.SortHistoryElements(s) r := []*Elem{ New("a"), New("a", "a"), diff --git a/api/utils/misc/printer.go b/api/utils/misc/printer.go index bebf336ab6..77ae974079 100644 --- a/api/utils/misc/printer.go +++ b/api/utils/misc/printer.go @@ -7,9 +7,8 @@ import ( "os" "strings" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/logging" - - "ocm.software/ocm/api/utils" ) type Flusher interface { @@ -56,7 +55,7 @@ func NewPrinter(writer io.Writer) Printer { } func AssurePrinter(p Printer) Printer { - return utils.OptionalDefaulted(NonePrinter, p) + return general.OptionalDefaulted(NonePrinter, p) } func NewBufferedPrinter() (Printer, *bytes.Buffer) { diff --git a/api/utils/misc/walk.go b/api/utils/misc/walk.go index a0588fce0b..1c38901acc 100644 --- a/api/utils/misc/walk.go +++ b/api/utils/misc/walk.go @@ -1,9 +1,9 @@ package misc import ( + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/logging" - "ocm.software/ocm/api/utils" ocmlog "ocm.software/ocm/api/utils/logging" ) @@ -11,7 +11,7 @@ type NameVersionInfo[T any] map[NameVersion]T func (s NameVersionInfo[T]) Add(nv NameVersion, data ...T) bool { if _, ok := s[nv]; !ok { - s[nv] = utils.Optional(data...) + s[nv] = general.Optional(data...) return true } return false @@ -31,7 +31,7 @@ type WalkingState[T any, C any] struct { } func NewWalkingState[T any, C any](ctx C, lctx ...logging.Context) WalkingState[T, C] { - logctx := utils.OptionalDefaulted[logging.Context](ocmlog.Context(), lctx...) + logctx := general.OptionalDefaulted[logging.Context](ocmlog.Context(), lctx...) return WalkingState[T, C]{Context: ctx, Closure: NameVersionInfo[T]{}, LogCtx: logctx, Logger: logctx.Logger()} } diff --git a/api/utils/path.go b/api/utils/path.go index 7732931763..b6d5db50a2 100644 --- a/api/utils/path.go +++ b/api/utils/path.go @@ -1,61 +1,11 @@ package utils import ( - "encoding/base64" - "fmt" - "os" - "strings" - - "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/vfs/pkg/osfs" "github.com/mandelsoft/vfs/pkg/vfs" ) -// ResolvePath handles the ~ notation for the home directory. -func ResolvePath(path string) (string, error) { - if strings.HasPrefix(path, "~"+string(os.PathSeparator)) { - home, err := os.UserHomeDir() - if home == "" || err != nil { - return path, fmt.Errorf("HOME not set") - } - path = home + path[1:] - } - return path, nil -} - -func ResolveData(in string, fss ...vfs.FileSystem) ([]byte, error) { - return handlePrefix(func(in string, fs vfs.FileSystem) ([]byte, error) { return []byte(in), nil }, in, fss...) -} - -func ReadFile(in string, fss ...vfs.FileSystem) ([]byte, error) { - return handlePrefix(readFile, in, fss...) -} - -func handlePrefix(def func(string, vfs.FileSystem) ([]byte, error), in string, fss ...vfs.FileSystem) ([]byte, error) { - if strings.HasPrefix(in, "=") { - return []byte(in[1:]), nil - } - if strings.HasPrefix(in, "!") { - return base64.StdEncoding.DecodeString(in[1:]) - } - if strings.HasPrefix(in, "@") { - return readFile(in[1:], FileSystem(fss...)) - } - return def(in, FileSystem(fss...)) -} - -func readFile(path string, fs vfs.FileSystem) ([]byte, error) { - path, err := ResolvePath(path) - if err != nil { - return nil, err - } - data, err := vfs.ReadFile(fs, path) - if err != nil { - return nil, errors.Wrapf(err, "cannot read file %q", path) - } - return data, nil -} - var _osfs = osfs.New() func FileSystem(fss ...vfs.FileSystem) vfs.FileSystem { @@ -63,5 +13,5 @@ func FileSystem(fss ...vfs.FileSystem) vfs.FileSystem { } func DefaultedFileSystem(def vfs.FileSystem, fss ...vfs.FileSystem) vfs.FileSystem { - return OptionalDefaulted(def, fss...) + return general.OptionalDefaulted(def, fss...) } diff --git a/api/utils/registrations/registrations.go b/api/utils/registrations/registrations.go index 1aaa5a2cdd..8332629b35 100644 --- a/api/utils/registrations/registrations.go +++ b/api/utils/registrations/registrations.go @@ -14,8 +14,6 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/general" "github.com/mandelsoft/goutils/set" - - "ocm.software/ocm/api/utils" ) type HandlerConfig interface{} @@ -116,7 +114,7 @@ type handlerRegistrationRegistry[T any, O any] struct { } func NewHandlerRegistrationRegistry[T any, O any](base ...HandlerRegistrationRegistry[T, O]) HandlerRegistrationRegistry[T, O] { - return &handlerRegistrationRegistry[T, O]{base: utils.Optional(base...)} + return &handlerRegistrationRegistry[T, O]{base: general.Optional(base...)} } func (c *handlerRegistrationRegistry[T, O]) GetAllRegistrationHandlers() []*RegistrationHandlerInfo[T, O] { diff --git a/api/utils/registrations/registrations_test.go b/api/utils/registrations/registrations_test.go index 31aff80cf4..2220920398 100644 --- a/api/utils/registrations/registrations_test.go +++ b/api/utils/registrations/registrations_test.go @@ -5,7 +5,8 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/maputils" + "ocm.software/ocm/api/utils/registrations" ) @@ -61,7 +62,7 @@ func (t *TestRegistrationHandler) RegisterByName(handler string, target Target, func (t *TestRegistrationHandler) GetHandlers(target Target) registrations.HandlerInfos { infos := registrations.HandlerInfos{} - for _, n := range utils.StringMapKeys(t.registered) { + for _, n := range maputils.OrderedKeys(t.registered) { infos = append(infos, registrations.NewLeafHandlerInfo(n, "")...) } return infos diff --git a/api/utils/registrations/utils.go b/api/utils/registrations/utils.go index a1e3ddd7c4..214432e267 100644 --- a/api/utils/registrations/utils.go +++ b/api/utils/registrations/utils.go @@ -4,8 +4,8 @@ import ( "encoding/json" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -53,7 +53,7 @@ func DecodeConfig[T any](config interface{}, d ...Decoder) (*T, error) { } func decodeConfig[T any](data []byte, dec ...Decoder) (*T, error) { - if d := utils.Optional(dec...); d != nil { + if d := general.Optional(dec...); d != nil { r, err := d(data, runtime.DefaultYAMLEncoding) if err != nil { return nil, err diff --git a/api/utils/runtime/descriptivetype/type.go b/api/utils/runtime/descriptivetype/type.go index 6a5ad78eef..6f9c6bee80 100644 --- a/api/utils/runtime/descriptivetype/type.go +++ b/api/utils/runtime/descriptivetype/type.go @@ -4,7 +4,10 @@ import ( "fmt" "strings" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/maputils" + "github.com/mandelsoft/goutils/stringutils" + "ocm.software/ocm/api/utils/runtime" ) @@ -45,7 +48,7 @@ type typeScheme[T runtime.VersionedTypedObject, R TypedObjectType[T], S TypeSche } func MustNewDefaultTypeScheme[T runtime.VersionedTypedObject, R TypedObjectType[T], S TypeScheme[T, R]](name string, extender DescriptionExtender[R], unknown runtime.Unstructured, acceptUnknown bool, defaultdecoder runtime.TypedObjectDecoder[T], base ...TypeScheme[T, R]) TypeScheme[T, R] { - scheme := runtime.MustNewDefaultTypeScheme[T, R](unknown, acceptUnknown, defaultdecoder, utils.Optional(base...)) + scheme := runtime.MustNewDefaultTypeScheme[T, R](unknown, acceptUnknown, defaultdecoder, general.Optional(base...)) return &typeScheme[T, R, S]{ name: name, extender: extender, @@ -56,7 +59,7 @@ func MustNewDefaultTypeScheme[T runtime.VersionedTypedObject, R TypedObjectType[ // NewTypeScheme provides an TypeScheme implementation based on the interfaces // and the default runtime.TypeScheme implementation. func NewTypeScheme[T runtime.VersionedTypedObject, R TypedObjectType[T], S TypeScheme[T, R]](name string, extender DescriptionExtender[R], unknown runtime.Unstructured, acceptUnknown bool, base ...S) TypeScheme[T, R] { - scheme := runtime.MustNewDefaultTypeScheme[T, R](unknown, acceptUnknown, nil, utils.Optional(base...)) + scheme := runtime.MustNewDefaultTypeScheme[T, R](unknown, acceptUnknown, nil, general.Optional(base...)) return &typeScheme[T, R, S]{ name: name, extender: extender, @@ -116,21 +119,21 @@ func (t *typeScheme[T, R, S]) Describe() string { } } - for _, tn := range utils.StringMapKeys(descs) { + for _, tn := range maputils.OrderedKeys(descs) { info := descs[tn] desc := strings.Trim(info.desc, "\n") if desc != "" { - s = fmt.Sprintf("%s\n- %s %s\n\n%s\n\n", s, t.name, tn, utils.IndentLines(desc, " ")) + s = fmt.Sprintf("%s\n- %s %s\n\n%s\n\n", s, t.name, tn, stringutils.IndentLines(desc, " ")) format := "" - for _, f := range utils.StringMapKeys(info.versions) { + for _, f := range maputils.OrderedKeys(info.versions) { desc = strings.Trim(info.versions[f], "\n") if desc != "" { - format = fmt.Sprintf("%s\n- Version %s\n\n%s\n", format, f, utils.IndentLines(desc, " ")) + format = fmt.Sprintf("%s\n- Version %s\n\n%s\n", format, f, stringutils.IndentLines(desc, " ")) } } if format != "" { - s += fmt.Sprintf(" The following versions are supported:\n%s\n", strings.Trim(utils.IndentLines(format, " "), "\n")) + s += fmt.Sprintf(" The following versions are supported:\n%s\n", strings.Trim(stringutils.IndentLines(format, " "), "\n")) } } s += info.more diff --git a/api/utils/runtime/multi.go b/api/utils/runtime/multi.go index 2caed54bdb..9b740bdc32 100644 --- a/api/utils/runtime/multi.go +++ b/api/utils/runtime/multi.go @@ -6,9 +6,9 @@ import ( "sync" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/goutils/set" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/errkind" ) @@ -47,7 +47,7 @@ func NewMultiFormatVersion[T VersionedTypedObject](kind string, formats FormatVe for k := range found { aliases.Delete(k) } - return nil, errors.Newf("missing base formats %s", utils.StringMapKeys(aliases)) + return nil, errors.Newf("missing base formats %s", maputils.OrderedKeys(aliases)) } return &multiFormatVersion[T]{kind, formats}, nil } diff --git a/api/utils/runtime/scheme.go b/api/utils/runtime/scheme.go index 61ebf4d682..f72a13d9fe 100644 --- a/api/utils/runtime/scheme.go +++ b/api/utils/runtime/scheme.go @@ -12,7 +12,6 @@ import ( "github.com/mandelsoft/goutils/generics" "github.com/modern-go/reflect2" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/errkind" ) @@ -174,7 +173,7 @@ type defaultScheme[T TypedObject, R TypedObjectDecoder[T]] struct { var _ Scheme[VersionedTypedObject, TypedObjectDecoder[VersionedTypedObject]] = (*defaultScheme[VersionedTypedObject, TypedObjectDecoder[VersionedTypedObject]])(nil) func MustNewDefaultScheme[T TypedObject, R TypedObjectDecoder[T]](protoUnstr Unstructured, acceptUnknown bool, defaultdecoder TypedObjectDecoder[T], base ...Scheme[T, R]) Scheme[T, R] { - return utils.Must(NewDefaultScheme[T](protoUnstr, acceptUnknown, defaultdecoder, base...)) + return general.Must(NewDefaultScheme[T](protoUnstr, acceptUnknown, defaultdecoder, base...)) } func NewScheme[T TypedObject, R TypedObjectDecoder[T]](base ...Scheme[T, R]) Scheme[T, R] { @@ -206,7 +205,7 @@ func NewDefaultScheme[T TypedObject, R TypedObjectDecoder[T]](protoUnstr Unstruc } return &defaultScheme[T, R]{ - base: utils.Optional(base...), + base: general.Optional(base...), instance: it, unstructured: ut, defaultdecoder: defaultdecoder, @@ -444,7 +443,7 @@ type defaultTypeScheme[T TypedObject, R TypedObjectType[T]] struct { } func MustNewDefaultTypeScheme[T TypedObject, R TypedObjectType[T]](protoUnstr Unstructured, acceptUnknown bool, defaultdecoder TypedObjectDecoder[T], base ...TypeScheme[T, R]) TypeScheme[T, R] { - return utils.Must(NewDefaultTypeScheme[T, R](protoUnstr, acceptUnknown, defaultdecoder, base...)) + return general.Must(NewDefaultTypeScheme[T, R](protoUnstr, acceptUnknown, defaultdecoder, base...)) } func NewTypeScheme[T TypedObject, R TypedObjectType[T]](base ...TypeScheme[T, R]) TypeScheme[T, R] { diff --git a/api/utils/runtime/scheme_test.go b/api/utils/runtime/scheme_test.go index 2f55fb9559..7666e28a99 100644 --- a/api/utils/runtime/scheme_test.go +++ b/api/utils/runtime/scheme_test.go @@ -5,7 +5,8 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/maputils" + "ocm.software/ocm/api/utils/runtime" ) @@ -55,7 +56,7 @@ var _ = Describe("scheme", func() { It("decodes object", func() { Expect(Must(scheme.Decode(t1data, nil))).To(Equal(t1)) Expect(scheme.KnownTypeNames()).To(Equal([]string{"t1"})) - Expect(utils.StringMapKeys(scheme.KnownTypes())).To(Equal([]string{"t1"})) + Expect(maputils.OrderedKeys(scheme.KnownTypes())).To(Equal([]string{"t1"})) }) It("handles derived scheme", func() { @@ -71,7 +72,7 @@ var _ = Describe("scheme", func() { Expect(scheme.KnownTypeNames()).To(Equal([]string{"t1"})) Expect(derived.KnownTypeNames()).To(Equal([]string{"t1", "t2"})) - Expect(utils.StringMapKeys(scheme.KnownTypes())).To(Equal([]string{"t1"})) - Expect(utils.StringMapKeys(derived.KnownTypes())).To(Equal([]string{"t1", "t2"})) + Expect(maputils.OrderedKeys(scheme.KnownTypes())).To(Equal([]string{"t1"})) + Expect(maputils.OrderedKeys(derived.KnownTypes())).To(Equal([]string{"t1", "t2"})) }) }) diff --git a/api/utils/runtime/versionedtype.go b/api/utils/runtime/versionedtype.go index 7e69bab5ec..2a76928fcc 100644 --- a/api/utils/runtime/versionedtype.go +++ b/api/utils/runtime/versionedtype.go @@ -5,8 +5,7 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" - - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/general" ) const VersionSeparator = "/" @@ -81,7 +80,7 @@ func MarshalVersionedTypedObject[T VersionedTypedObject](obj T, toe ...TypedObje if e := GetEncoder(obj); e != nil { return e.encode(obj) } - if e := utils.Optional(toe...); e != nil { + if e := general.Optional(toe...); e != nil { return e.Encode(obj, DefaultJSONEncoding) } return nil, errors.ErrUnknown("object type", obj.GetType()) diff --git a/api/utils/subst/subst.go b/api/utils/subst/subst.go index d96b221194..a170d63154 100644 --- a/api/utils/subst/subst.go +++ b/api/utils/subst/subst.go @@ -7,6 +7,7 @@ import ( "sync" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" mlog "github.com/mandelsoft/logging" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/mikefarah/yq/v4/pkg/yqlib" @@ -28,7 +29,7 @@ type SubstitutionTarget interface { func ParseFile(file string, fss ...vfs.FileSystem) (SubstitutionTarget, error) { fs := utils.FileSystem(fss...) - data, err := utils.ReadFile(file, fs) + data, err := optionutils.ReadFile(file, fs) if err != nil { return nil, errors.Wrapf(err, "cannot read file %q", file) } diff --git a/api/utils/tarutils/extract.go b/api/utils/tarutils/extract.go index b266f205c0..37b6ea26fc 100644 --- a/api/utils/tarutils/extract.go +++ b/api/utils/tarutils/extract.go @@ -16,7 +16,7 @@ import ( // ExtractArchiveToFs wunpacks an archive to a filesystem. func ExtractArchiveToFs(fs vfs.FileSystem, path string, fss ...vfs.FileSystem) error { - sfs := utils.OptionalDefaulted(osfs.New(), fss...) + sfs := utils.FileSystem(fss...) f, err := sfs.Open(path) if err != nil { @@ -32,7 +32,7 @@ func ExtractArchiveToFs(fs vfs.FileSystem, path string, fss ...vfs.FileSystem) e // ExtractArchiveToFsWithInfo unpacks an archive to a filesystem. func ExtractArchiveToFsWithInfo(fs vfs.FileSystem, path string, fss ...vfs.FileSystem) (int64, int64, error) { - sfs := utils.OptionalDefaulted(osfs.New(), fss...) + sfs := utils.FileSystem(fss...) f, err := sfs.Open(path) if err != nil { diff --git a/api/utils/tarutils/list.go b/api/utils/tarutils/list.go index e028114565..eb6104c548 100644 --- a/api/utils/tarutils/list.go +++ b/api/utils/tarutils/list.go @@ -5,7 +5,6 @@ import ( "io" "github.com/mandelsoft/goutils/errors" - "github.com/mandelsoft/vfs/pkg/osfs" "github.com/mandelsoft/vfs/pkg/vfs" "ocm.software/ocm/api/utils" @@ -13,7 +12,7 @@ import ( ) func ListArchiveContent(path string, fss ...vfs.FileSystem) ([]string, error) { - sfs := utils.OptionalDefaulted(osfs.New(), fss...) + sfs := utils.FileSystem(fss...) f, err := sfs.Open(path) if err != nil { diff --git a/api/utils/tarutils/pack.go b/api/utils/tarutils/pack.go index c65ce25a78..ebc0bdead7 100644 --- a/api/utils/tarutils/pack.go +++ b/api/utils/tarutils/pack.go @@ -13,16 +13,16 @@ import ( "github.com/mandelsoft/filepath/pkg/filepath" "github.com/mandelsoft/goutils/finalizer" - "github.com/mandelsoft/goutils/general" - "github.com/mandelsoft/vfs/pkg/osfs" "github.com/mandelsoft/vfs/pkg/vfs" + + "ocm.software/ocm/api/utils" ) func CreateTarFromFs(fs vfs.FileSystem, path string, compress func(w io.Writer) io.WriteCloser, fss ...vfs.FileSystem) (err error) { var finalize finalizer.Finalizer defer finalize.FinalizeWithErrorPropagation(&err) - tfs := general.OptionalDefaulted(osfs.New(), fss...) + tfs := utils.FileSystem(fss...) f, err := tfs.OpenFile(path, vfs.O_CREATE|vfs.O_TRUNC|vfs.O_WRONLY, 0o600) if err != nil { diff --git a/api/utils/template/registry.go b/api/utils/template/registry.go index db14434f1f..0c71db4261 100644 --- a/api/utils/template/registry.go +++ b/api/utils/template/registry.go @@ -7,9 +7,9 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/maputils" + "github.com/mandelsoft/goutils/stringutils" "github.com/mandelsoft/vfs/pkg/vfs" - - "ocm.software/ocm/api/utils" ) const KIND_TEMPLATER = "templater" @@ -85,7 +85,7 @@ func (r *registry) KnownTypeNames() []string { r.lock.RLock() defer r.lock.RUnlock() - return utils.StringMapKeys(r.templaters) + return maputils.OrderedKeys(r.templaters) } func Usage(scheme Registry) string { @@ -104,7 +104,7 @@ There are several templaters that can be selected by the --templater%s %s\n\n", s, t, title) } else { - s = fmt.Sprintf("%s- %s %s\n\n%s", s, t, title, utils.IndentLines(desc, " ")) + s = fmt.Sprintf("%s- %s %s\n\n%s", s, t, title, stringutils.IndentLines(desc, " ")) } if !strings.HasSuffix(s, "\n") { s += "\n" diff --git a/api/utils/template/template.go b/api/utils/template/template.go index a1223c0cf1..2ca800b583 100644 --- a/api/utils/template/template.go +++ b/api/utils/template/template.go @@ -9,11 +9,11 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/spf13/pflag" "gopkg.in/yaml.v3" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -131,7 +131,7 @@ func (o *Options) Execute(data string) (string, error) { func ReadYAMLSettings(fs vfs.FileSystem, path string) (Values, error) { result := Values{} - data, err := utils.ReadFile(path, fs) + data, err := optionutils.ReadFile(path, fs) if err != nil { return nil, err } diff --git a/api/utils/utils.go b/api/utils/utils.go index 10a5984e9d..1691ace31f 100644 --- a/api/utils/utils.go +++ b/api/utils/utils.go @@ -9,19 +9,15 @@ import ( "errors" "fmt" "io" - "maps" "math/big" "math/rand" "net/http" "os" - "reflect" - "slices" "sort" "strings" "time" "github.com/mandelsoft/vfs/pkg/vfs" - "github.com/modern-go/reflect2" "github.com/spf13/cobra" "sigs.k8s.io/yaml" @@ -217,35 +213,6 @@ func WriteFileToTARArchive(filename string, contentReader io.Reader, archiveWrit return nil } -func IndentLines(orig string, gap string, skipfirst ...bool) string { - return JoinIndentLines(strings.Split(strings.TrimPrefix(orig, "\n"), "\n"), gap, skipfirst...) -} - -func JoinIndentLines(orig []string, gap string, skipfirst ...bool) string { - if len(orig) == 0 { - return "" - } - skip := false - for _, b := range skipfirst { - skip = skip || b - } - - s := "" - if !skip { - s = gap - } - return s + strings.Join(orig, "\n"+gap) -} - -func StringMapKeys[K ~string, E any](m map[K]E) []K { - if m == nil { - return nil - } - keys := slices.Collect(maps.Keys(m)) - slices.Sort(keys) - return keys -} - type Comparable[K any] interface { Compare(o K) int } @@ -272,74 +239,5 @@ func SortedMapKeys[K ComparableMapKey[K], E any](m map[K]E) []K { return keys } -// Optional returns the first optional non-zero element given as variadic argument, -// if given, or the zero element as default. -func Optional[T any](list ...T) T { - var zero T - for _, e := range list { - if !reflect.DeepEqual(e, zero) { - return e - } - } - return zero -} - -// OptionalDefaulted returns the first optional non-nil element given as variadic -// argument, or the given default element. For value types a given zero -// argument is excepted, also. -func OptionalDefaulted[T any](def T, list ...T) T { - for _, e := range list { - if !reflect2.IsNil(e) { - return e - } - } - return def -} - -// OptionalDefaultedBool checks all args for true. If arg is given -// the given default is returned. -func OptionalDefaultedBool(def bool, list ...bool) bool { - if len(list) == 0 { - return def - } - for _, e := range list { - if e { - return e - } - } - return false -} - -// GetOptionFlag returns the flag value used to set a bool option -// based on optionally specified explicit value(s). -// The default value is to enable the option (true). -func GetOptionFlag(list ...bool) bool { - return OptionalDefaultedBool(true, list...) -} - -func IsNil(o interface{}) bool { - return reflect2.IsNil(o) -} - -// Must expect a result to be provided without error. -func Must[T any](o T, err error) T { - if err != nil { - panic(fmt.Errorf("expected a %T, but got error %w", o, err)) - } - return o -} - func IgnoreError(_ error) { } - -func BoolP[T ~bool](b T) *bool { - v := bool(b) - return &v -} - -func AsBool(b *bool, def ...bool) bool { - if b == nil && len(def) > 0 { - return Optional(def...) - } - return b != nil && *b -} diff --git a/cmds/demoplugin/uploaders/writer.go b/cmds/demoplugin/uploaders/writer.go index 1d08ea9ec9..026cc549a7 100644 --- a/cmds/demoplugin/uploaders/writer.go +++ b/cmds/demoplugin/uploaders/writer.go @@ -8,7 +8,7 @@ import ( "ocm.software/ocm/api/ocm/plugin/ppi" "ocm.software/ocm/api/utils/iotools" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/cmds/demoplugin/accessmethods" ) @@ -43,7 +43,7 @@ func (w *Writer) Close() error { if err == nil { n := w.path if w.rename { - n = filepath.Join(os.TempDir(), n, common.DigestToFileName(w.writer.Digest())) + n = filepath.Join(os.TempDir(), n, misc.DigestToFileName(w.writer.Digest())) err := os.Rename(w.file.Name(), n) if err != nil { return errors.Wrapf(err, "cannot rename %q to %q", w.file.Name(), n) diff --git a/cmds/demoplugin/valuesets/check.go b/cmds/demoplugin/valuesets/check.go index 0e75372aff..13a84ad56e 100644 --- a/cmds/demoplugin/valuesets/check.go +++ b/cmds/demoplugin/valuesets/check.go @@ -5,12 +5,12 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/goutils/set" "ocm.software/ocm/api/ocm/extensions/accessmethods/options" "ocm.software/ocm/api/ocm/plugin/descriptor" "ocm.software/ocm/api/ocm/plugin/ppi" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/cobrautils/flagsets" "ocm.software/ocm/api/utils/runtime" ) @@ -36,7 +36,7 @@ const ( var status = set.New[string](STATUS_PASSED, STATUS_FAILED, STATUS_SKIPPED) var ( - StatusOption = options.NewStringMapOptionType("checkStatus", out.Sprintf("status value for check (%s)", strings.Join(utils.StringMapKeys(status), ", "))) + StatusOption = options.NewStringMapOptionType("checkStatus", out.Sprintf("status value for check (%s)", strings.Join(maputils.OrderedKeys(status), ", "))) MessageOption = options.NewStringMapOptionType("checkMessage", "message for check") ) @@ -74,7 +74,7 @@ func (v ValueSet) ValidateSpecification(_ ppi.Plugin, spec runtime.TypedObject) return nil, out.Errorf("status not specified") } if !status.Contains(v.Status) { - return nil, out.Errorf("invalid status (%s), expected %s", v.Status, strings.Join(utils.StringMapKeys(status), ", ")) + return nil, out.Errorf("invalid status (%s), expected %s", v.Status, strings.Join(maputils.OrderedKeys(status), ", ")) } if len(desc) > 0 { diff --git a/cmds/helminstaller/app/execute.go b/cmds/helminstaller/app/execute.go index 322198aca0..2643d821f1 100644 --- a/cmds/helminstaller/app/execute.go +++ b/cmds/helminstaller/app/execute.go @@ -21,7 +21,7 @@ import ( "ocm.software/ocm/api/ocm/tools/toi/support" "ocm.software/ocm/api/tech/helm/loader" "ocm.software/ocm/api/utils/compression" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/api/utils/tarutils" @@ -99,7 +99,7 @@ func (e *Execution) addSubCharts(finalize *Finalizer, subCharts map[string]v1.Re Mustf(e.fs.Mkdir(charts, 0o700), "cannot mkdir %q", charts) e.outf("Loading %d sub charts into %s...\n", len(subCharts), charts) for n, r := range subCharts { - e.outf(" Loading sub chart %q from resource %s@%s\n", n, r, common.VersionedElementKey(e.ComponentVersion)) + e.outf(" Loading sub chart %q from resource %s@%s\n", n, r, misc.VersionedElementKey(e.ComponentVersion)) acc, rcv := Must2f(R2(resourcerefs.ResolveResourceReference(e.ComponentVersion, r, nil)), "chart reference", r.String()) loop.Close(rcv) @@ -107,7 +107,7 @@ func (e *Execution) addSubCharts(finalize *Finalizer, subCharts map[string]v1.Re Throw(errors.Newf("%s: resource type %q required, but found %q", r, resourcetypes.HELM_CHART, acc.Meta().Type)) } - _, subpath := Must2f(R2(download.For(e.Context).Download(common.NewPrinter(e.OutputContext.StdOut()), acc, filepath.Join(charts, n), e.fs)), "downloading helm chart %s", r) + _, subpath := Must2f(R2(download.For(e.Context).Download(misc.NewPrinter(e.OutputContext.StdOut()), acc, filepath.Join(charts, n), e.fs)), "downloading helm chart %s", r) chartObj := Must1f(R1(loader.Load(subpath, e.fs)), "cannot load subchart %q", subpath) found := false @@ -158,7 +158,7 @@ func (e *Execution) Execute(cfg *Config, values map[string]interface{}, kubeconf values = Merge(Must1(cfg.GetValues()), values) - e.outf("Loading helm chart from resource %s@%s\n", cfg.Chart, common.VersionedElementKey(e.ComponentVersion)) + e.outf("Loading helm chart from resource %s@%s\n", cfg.Chart, misc.VersionedElementKey(e.ComponentVersion)) acc, rcv := Must2f(R2(resourcerefs.ResolveResourceReference(e.ComponentVersion, cfg.Chart, nil)), "chart reference", cfg.Chart.String()) finalize.Close(rcv) @@ -179,7 +179,7 @@ func (e *Execution) Execute(cfg *Config, values map[string]interface{}, kubeconf } e.Logger.Info("starting download", "path", path, "access", string(data)) - _, e.path = Must2f(R2(download.For(e.Context).Download(common.NewPrinter(e.OutputContext.StdOut()), acc, path, e.fs)), "downloading helm chart") + _, e.path = Must2f(R2(download.For(e.Context).Download(misc.NewPrinter(e.OutputContext.StdOut()), acc, path, e.fs)), "downloading helm chart") finalize.With(Calling1(e.fs.Remove, e.path)) diff --git a/cmds/ocm/clippi/config/type.go b/cmds/ocm/clippi/config/type.go index ac31b7dce5..d76b2d4151 100644 --- a/cmds/ocm/clippi/config/type.go +++ b/cmds/ocm/clippi/config/type.go @@ -22,7 +22,7 @@ import ( "ocm.software/ocm/api/utils/cobrautils/logopts" logdata "ocm.software/ocm/api/utils/cobrautils/logopts/logging" "ocm.software/ocm/api/utils/logging" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/cmds/ocm/commands/common/options/keyoption" ) @@ -133,7 +133,7 @@ func (c *Config) Evaluate(ctx ocm.Context, main bool) (*EvaluatedOptions, error) } id := credentials.ConsumerIdentity{} - attrs := common.Properties{} + attrs := misc.Properties{} for _, s := range c.Credentials { i := strings.Index(s, "=") if i < 0 { @@ -145,7 +145,7 @@ func (c *Config) Evaluate(ctx ocm.Context, main bool) (*EvaluatedOptions, error) if len(attrs) != 0 { ctx.CredentialsContext().SetCredentialsForConsumer(id, credentials.NewCredentials(attrs)) id = credentials.ConsumerIdentity{} - attrs = common.Properties{} + attrs = misc.Properties{} } name = name[1:] id[name] = value diff --git a/cmds/ocm/commands/cachecmds/clean/cmd.go b/cmds/ocm/commands/cachecmds/clean/cmd.go index ab6bad8459..c79fdc05ab 100644 --- a/cmds/ocm/commands/cachecmds/clean/cmd.go +++ b/cmds/ocm/commands/cachecmds/clean/cmd.go @@ -12,7 +12,7 @@ import ( "ocm.software/ocm/api/oci/extensions/attrs/cacheattr" utils2 "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/commands/cachecmds/names" "ocm.software/ocm/cmds/ocm/commands/verbs" @@ -92,7 +92,7 @@ func (o *Command) Complete(args []string) error { } func (o *Command) Run() error { - cnt, ncnt, fcnt, size, nsize, fsize, err := o.cache.Cleanup(common.NewPrinter(o.Context.StdErr()), &o.before, o.dryrun) + cnt, ncnt, fcnt, size, nsize, fsize, err := o.cache.Cleanup(misc.NewPrinter(o.Context.StdErr()), &o.before, o.dryrun) if err != nil { return err } diff --git a/cmds/ocm/commands/common/options/closureoption/option.go b/cmds/ocm/commands/common/options/closureoption/option.go index 9b6f23a06c..b5af7254a8 100644 --- a/cmds/ocm/commands/common/options/closureoption/option.go +++ b/cmds/ocm/commands/common/options/closureoption/option.go @@ -3,14 +3,14 @@ package closureoption import ( "fmt" + "github.com/mandelsoft/goutils/general" "github.com/modern-go/reflect2" "github.com/spf13/pflag" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/cobrautils/flag" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/common/options" "ocm.software/ocm/cmds/ocm/common/output" "ocm.software/ocm/cmds/ocm/common/processing" @@ -129,7 +129,7 @@ func (o *Option) Mapper(opts options.OptionSetProvider, path func(interface{}) s } func History(e interface{}) string { - if o, ok := e.(common.HistorySource); ok { + if o, ok := e.(misc.HistorySource); ok { if h := o.GetHistory(); h != nil { return h.String() } @@ -175,7 +175,7 @@ func AddChain(opts *output.Options, chain, add processing.ProcessChain) processi } func TableOutput(in *output.TableOutput, closure ...ClosureFunction) *output.TableOutput { - cf := utils.Optional(closure...) + cf := general.Optional(closure...) chain := processing.Append(in.Chain, processing.Explode(cf.Exploder(in.Options))) copts := From(in.Options) return &output.TableOutput{ diff --git a/cmds/ocm/commands/common/options/keyoption/config.go b/cmds/ocm/commands/common/options/keyoption/config.go index 7b1d584b5c..9390cf14b3 100644 --- a/cmds/ocm/commands/common/options/keyoption/config.go +++ b/cmds/ocm/commands/common/options/keyoption/config.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/spf13/pflag" "ocm.software/ocm/api/datacontext" @@ -14,7 +15,6 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/tech/signing" "ocm.software/ocm/api/tech/signing/signutils" - "ocm.software/ocm/api/utils" ) type ConfigFragment struct { @@ -71,7 +71,7 @@ func (c *ConfigFragment) Evaluate(ctx ocm.Context, keys signing.KeyRegistry) (*E if len(c.RootCAs) > 0 { var list []*x509.Certificate for _, r := range c.RootCAs { - data, err := utils.ReadFile(r, vfsattr.Get(ctx)) + data, err := optionutils.ReadFile(r, vfsattr.Get(ctx)) if err != nil { return nil, errors.Wrapf(err, "root CA") } @@ -103,9 +103,9 @@ func (c *ConfigFragment) HandleKeys(ctx datacontext.Context, desc string, keys [ var err error switch file[0] { case '=', '!', '@': - data, err = utils.ResolveData(file, fs) + data, err = optionutils.ResolveData(file, fs) default: - data, err = utils.ReadFile(file, fs) + data, err = optionutils.ReadFile(file, fs) } if err != nil { return errors.Wrapf(err, "cannot read %s file %q", desc, file) diff --git a/cmds/ocm/commands/misccmds/action/execute/cmd.go b/cmds/ocm/commands/misccmds/action/execute/cmd.go index a781ed6511..7724b73aac 100644 --- a/cmds/ocm/commands/misccmds/action/execute/cmd.go +++ b/cmds/ocm/commands/misccmds/action/execute/cmd.go @@ -5,6 +5,7 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -12,8 +13,7 @@ import ( "ocm.software/ocm/api/credentials" "ocm.software/ocm/api/datacontext/action" "ocm.software/ocm/api/datacontext/action/api" - utils2 "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/api/utils/runtime" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/names" @@ -80,7 +80,7 @@ func (o *Command) Complete(args []string) error { data := []byte(args[0]) if strings.HasPrefix(args[0], "@") { - data, err = utils2.ResolveData(args[0][1:], o.FileSystem()) + data, err = optionutils.ResolveData(args[0][1:], o.FileSystem()) if err != nil { return err } @@ -142,7 +142,7 @@ func (o *Command) Complete(args []string) error { } func (o *Command) Run() error { - var creds common.Properties + var creds misc.Properties if len(o.Consumer) > 0 { c, err := credentials.RequiredCredentialsForConsumer(o.CredentialsContext(), o.Consumer, o.Matcher) diff --git a/cmds/ocm/commands/misccmds/hash/sign/cmd.go b/cmds/ocm/commands/misccmds/hash/sign/cmd.go index db6cf1d299..62cf2a2ef5 100644 --- a/cmds/ocm/commands/misccmds/hash/sign/cmd.go +++ b/cmds/ocm/commands/misccmds/hash/sign/cmd.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -16,7 +17,6 @@ import ( "ocm.software/ocm/api/tech/signing" "ocm.software/ocm/api/tech/signing/handlers/rsa" "ocm.software/ocm/api/tech/signing/signutils" - utils2 "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/commands/misccmds/names" "ocm.software/ocm/cmds/ocm/commands/verbs" @@ -92,14 +92,14 @@ func (o *Command) Complete(args []string) error { } if o.pubFile != "" { - o.pub, err = utils2.ReadFile(o.pubFile, o.FileSystem()) + o.pub, err = optionutils.ReadFile(o.pubFile, o.FileSystem()) if err != nil { return err } } if o.rootFile != "" { - roots, err := utils2.ReadFile(o.rootFile, o.FileSystem()) + roots, err := optionutils.ReadFile(o.rootFile, o.FileSystem()) if err != nil { return err } @@ -112,7 +112,7 @@ func (o *Command) Complete(args []string) error { if len(o.rootCAs) > 0 { var list []*x509.Certificate for _, r := range o.rootCAs { - data, err := utils2.ReadFile(r, o.FileSystem()) + data, err := optionutils.ReadFile(r, o.FileSystem()) if err != nil { return errors.Wrapf(err, "root CA") } @@ -131,7 +131,7 @@ func (o *Command) Complete(args []string) error { } } - o.priv, err = utils2.ReadFile(args[0], o.FileSystem()) + o.priv, err = optionutils.ReadFile(args[0], o.FileSystem()) if err != nil { return err } diff --git a/cmds/ocm/commands/misccmds/rsakeypair/cmd.go b/cmds/ocm/commands/misccmds/rsakeypair/cmd.go index 579d956d67..d1e886a30e 100644 --- a/cmds/ocm/commands/misccmds/rsakeypair/cmd.go +++ b/cmds/ocm/commands/misccmds/rsakeypair/cmd.go @@ -9,6 +9,7 @@ import ( "time" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/ioutils" parse "github.com/mandelsoft/spiff/dynaml/x509" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/spf13/cobra" @@ -20,7 +21,6 @@ import ( "ocm.software/ocm/api/tech/signing" "ocm.software/ocm/api/tech/signing/handlers/rsa" "ocm.software/ocm/api/tech/signing/signutils" - utils2 "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/cobrautils/flag" "ocm.software/ocm/api/utils/encrypt" "ocm.software/ocm/api/utils/out" @@ -137,7 +137,7 @@ func (o *Command) Complete(args []string) error { if o.rootcerts != "" { pool, err := signutils.GetCertPool(o.rootcerts, false) if err != nil { - path, err := utils2.ResolvePath(o.rootcerts) + path, err := ioutils.ResolvePath(o.rootcerts) if err != nil { return errors.Wrapf(err, "failed to resolve root certificates") } @@ -190,7 +190,7 @@ func (o *Command) Complete(args []string) error { raw := []byte(o.cacert) cert, pool, err := signutils.GetCertificate(o.cacert, false) if err != nil { - path, err := utils2.ResolvePath(o.cacert) + path, err := ioutils.ResolvePath(o.cacert) if err != nil { return errors.Wrapf(err, "failed to resolve cacert file %q", o.cacert) } @@ -225,7 +225,7 @@ func (o *Command) Complete(args []string) error { if o.cakey != "" { key, err := parse.ParsePrivateKey(o.cakey) if err != nil { - path, err := utils2.ResolvePath(o.cakey) + path, err := ioutils.ResolvePath(o.cakey) if err != nil { return errors.Wrapf(err, "failed to resolve ca key file %q", o.cakey) } diff --git a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/attached.go b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/attached.go index 4597bfdf01..2fd9e3edda 100644 --- a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/attached.go +++ b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/attached.go @@ -7,7 +7,7 @@ import ( "github.com/mandelsoft/logging" "github.com/opencontainers/go-digest" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/common/output" "ocm.software/ocm/cmds/ocm/common/processing" ) @@ -31,7 +31,7 @@ func explodeAttached(o interface{}) []interface{} { dig := blob.Digest() prefix := Attachment(dig, "") list, err := obj.Namespace.ListTags() - hist := sliceutils.CopyAppend(obj.History, common.NewNameVersion("", dig.String())) + hist := sliceutils.CopyAppend(obj.History, misc.NewNameVersion("", dig.String())) if err == nil { for _, l := range list { if strings.HasPrefix(l, prefix) { diff --git a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/clean.go b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/clean.go index 1d10cafc52..d784abe67f 100644 --- a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/clean.go +++ b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/clean.go @@ -3,7 +3,7 @@ package artifacthdlr import ( "github.com/opencontainers/go-digest" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/common/data" "ocm.software/ocm/cmds/ocm/common/output" "ocm.software/ocm/cmds/ocm/common/processing" @@ -55,7 +55,7 @@ func clean(iterable data.Iterable) data.Iterable { d := depth[dig] if l == 0 && l < d && (e.Spec.Tag == nil || *e.Spec.Tag == tags[dig]) { j := i + 1 - prefix := e.History.Append(common.NewNameVersion("", dig.String())) + prefix := e.History.Append(misc.NewNameVersion("", dig.String())) for ; j < len(data) && data[j].(*Object).History.HasPrefix(prefix); j++ { } data = append(data[:i], data[j:]...) diff --git a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/closure.go b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/closure.go index 082cacf0a5..8303be765d 100644 --- a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/closure.go +++ b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/closure.go @@ -2,7 +2,7 @@ package artifacthdlr import ( "ocm.software/ocm/api/oci" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/common/output" ) @@ -10,17 +10,17 @@ import ( //////////////////////////////////////////////////////////////////////////////// func ClosureExplode(opts *output.Options, e interface{}) []interface{} { - return traverse(common.History{}, e.(*Object), opts.Context) + return traverse(misc.History{}, e.(*Object), opts.Context) } -func traverse(hist common.History, o *Object, octx out.Context) []output.Object { +func traverse(hist misc.History, o *Object, octx out.Context) []output.Object { blob, err := o.Artifact.Blob() if err != nil { out.Errf(octx, "unable to get artifact blob: %s", err) return nil } - key := common.NewNameVersion("", blob.Digest().String()) + key := misc.NewNameVersion("", blob.Digest().String()) if err := hist.Add(oci.KIND_OCIARTIFACT, key); err != nil { out.Errf(octx, "unable to add artifact to history: %s", err) @@ -30,9 +30,9 @@ func traverse(hist common.History, o *Object, octx out.Context) []output.Object if o.Artifact.IsIndex() { refs := o.Artifact.IndexAccess().GetDescriptor().Manifests - found := map[common.NameVersion]bool{} + found := map[misc.NameVersion]bool{} for _, ref := range refs { - key := common.NewNameVersion("", ref.Digest.String()) + key := misc.NewNameVersion("", ref.Digest.String()) if found[key] { continue // skip same ref with different attributes for recursion } diff --git a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/sort.go b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/sort.go index 924e2e407a..2afc5609c8 100644 --- a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/sort.go +++ b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/sort.go @@ -3,7 +3,7 @@ package artifacthdlr import ( "strings" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/common/processing" ) @@ -13,7 +13,7 @@ func Compare(a, b interface{}) int { c := strings.Compare(aa.Spec.UniformRepositorySpec.String(), ab.Spec.UniformRepositorySpec.String()) if c == 0 { - return common.CompareHistoryElement(aa, ab) + return misc.CompareHistoryElement(aa, ab) } return c } diff --git a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/typehandler.go b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/typehandler.go index 5d027b3fd8..c36aef0e61 100644 --- a/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/typehandler.go +++ b/cmds/ocm/commands/ocicmds/common/handlers/artifacthdlr/typehandler.go @@ -10,7 +10,7 @@ import ( clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/oci" "ocm.software/ocm/api/oci/artdesc" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/common/output" "ocm.software/ocm/cmds/ocm/common/tree" "ocm.software/ocm/cmds/ocm/common/utils" @@ -23,8 +23,8 @@ func Elem(e interface{}) oci.ArtifactAccess { //////////////////////////////////////////////////////////////////////////////// type Object struct { - History common.History - Key common.NameVersion + History misc.History + Key misc.NameVersion Spec oci.RefSpec AttachKind string Namespace oci.NamespaceAccess @@ -32,16 +32,16 @@ type Object struct { } var ( - _ common.HistoryElement = (*Object)(nil) - _ tree.Object = (*Object)(nil) - _ tree.Typed = (*Object)(nil) + _ misc.HistoryElement = (*Object)(nil) + _ tree.Object = (*Object)(nil) + _ tree.Typed = (*Object)(nil) ) -func (o *Object) GetHistory() common.History { +func (o *Object) GetHistory() misc.History { return o.History } -func (o *Object) GetKey() common.NameVersion { +func (o *Object) GetKey() misc.NameVersion { return o.Key } @@ -49,7 +49,7 @@ func (o *Object) GetKind() string { return o.AttachKind } -func (o *Object) IsNode() *common.NameVersion { +func (o *Object) IsNode() *misc.NameVersion { blob, err := o.Artifact.Blob() if err != nil { logging.DefaultContext().Logger().LogError(err, "failed to fetch blob from artifact") @@ -57,7 +57,7 @@ func (o *Object) IsNode() *common.NameVersion { return nil } - nv := common.NewNameVersion("", blob.Digest().String()) + nv := misc.NewNameVersion("", blob.Digest().String()) return &nv } @@ -98,13 +98,13 @@ type Manifest struct { //////////////////////////////////////////////////////////////////////////////// -func Key(a oci.ArtifactAccess) (common.NameVersion, error) { +func Key(a oci.ArtifactAccess) (misc.NameVersion, error) { blob, err := a.Blob() if err != nil { - return common.NameVersion{}, fmt.Errorf("unable to determine blob name: %w", err) + return misc.NameVersion{}, fmt.Errorf("unable to determine blob name: %w", err) } - return common.NewNameVersion("", blob.Digest().String()), nil + return misc.NewNameVersion("", blob.Digest().String()), nil } type TypeHandler struct { diff --git a/cmds/ocm/commands/ocmcmds/common/addconfig.go b/cmds/ocm/commands/ocmcmds/common/addconfig.go index cb46149860..f6e378edea 100644 --- a/cmds/ocm/commands/ocmcmds/common/addconfig.go +++ b/cmds/ocm/commands/ocmcmds/common/addconfig.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/ioutils" "github.com/mandelsoft/goutils/sliceutils" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/spf13/pflag" @@ -12,7 +13,7 @@ import ( clictx "ocm.software/ocm/api/cli" utils2 "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/addhdlrs" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/inputs" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/templateroption" @@ -101,12 +102,12 @@ func (o *ResourceConfigAdderCommand) Complete(args []string) error { func (o *ResourceConfigAdderCommand) ProcessResourceDescriptions(h ResourceSpecHandler) error { fs := o.Context.FileSystem() - ictx := inputs.NewContext(o.Context, common.NewPrinter(o.Context.StdOut()), templateroption.From(o).Vars) + ictx := inputs.NewContext(o.Context, misc.NewPrinter(o.Context.StdOut()), templateroption.From(o).Vars) mode := vfs.FileMode(0o600) listkey := utils.Plural(h.Key(), 0) var current string - configFile, err := utils2.ResolvePath(o.ConfigFile) + configFile, err := ioutils.ResolvePath(o.ConfigFile) if err != nil { return errors.Wrapf(err, "failed to resolve config file %s", o.ConfigFile) } diff --git a/cmds/ocm/commands/ocmcmds/common/addhdlrs/comp/components.go b/cmds/ocm/commands/ocmcmds/common/addhdlrs/comp/components.go index 05d6139249..2a254a10a7 100644 --- a/cmds/ocm/commands/ocmcmds/common/addhdlrs/comp/components.go +++ b/cmds/ocm/commands/ocmcmds/common/addhdlrs/comp/components.go @@ -12,7 +12,7 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/tools/transfer" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/addhdlrs" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/inputs" @@ -36,10 +36,10 @@ func ProcessComponents(ctx clictx.Context, ictx inputs.Context, repo ocm.Reposit return err } - index := set.New[common.NameVersion]() + index := set.New[misc.NameVersion]() for _, elem := range elems { if r, ok := elem.Spec().(*ResourceSpec); ok { - index.Add(common.NewNameVersion(r.Name, r.Version)) + index.Add(misc.NewNameVersion(r.Name, r.Version)) } } @@ -63,7 +63,7 @@ func ProcessComponents(ctx clictx.Context, ictx inputs.Context, repo ocm.Reposit ictx.Printf("completing %s:%s...\n", r.Name, r.Version) for _, cr := range cv.GetDescriptor().References { loop := loop.Nested() - nv := common.NewNameVersion(cr.ComponentName, cr.Version) + nv := misc.NewNameVersion(cr.ComponentName, cr.Version) if index.Contains(nv) { continue } diff --git a/cmds/ocm/commands/ocmcmds/common/addhdlrs/options.go b/cmds/ocm/commands/ocmcmds/common/addhdlrs/options.go index 2297e16847..a831985192 100644 --- a/cmds/ocm/commands/ocmcmds/common/addhdlrs/options.go +++ b/cmds/ocm/commands/ocmcmds/common/addhdlrs/options.go @@ -41,7 +41,7 @@ func (o *Options) addBoolFlag(fs *pflag.FlagSet, p *bool, long string, short str func (o *Options) applyPreserve(opts *ocm.ElementModificationOptions) { if !o.PreserveSignature { - opts.ModifyElement = generics.Pointer(true) + opts.ModifyElement = generics.PointerTo(true) } } diff --git a/cmds/ocm/commands/ocmcmds/common/addhdlrs/utils.go b/cmds/ocm/commands/ocmcmds/common/addhdlrs/utils.go index 1e8a02d0aa..45b5deb7f6 100644 --- a/cmds/ocm/commands/ocmcmds/common/addhdlrs/utils.go +++ b/cmds/ocm/commands/ocmcmds/common/addhdlrs/utils.go @@ -8,6 +8,7 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/vfs/pkg/vfs" "gopkg.in/yaml.v3" "k8s.io/apimachinery/pkg/util/validation/field" @@ -78,7 +79,7 @@ func DetermineElementsForSource(ctx clictx.Context, ictx inputs.Context, templ t listkey := cliutils.Plural(h.Key(), 0) if reslist, ok := tmp[listkey]; ok { if len(tmp) != 1 { - return nil, errors.Newf("invalid %s spec %d: either a list or a single spec possible for %s (found keys %s)", h.Key(), i, listkey, utils.StringMapKeys(tmp)) + return nil, errors.Newf("invalid %s spec %d: either a list or a single spec possible for %s (found keys %s)", h.Key(), i, listkey, maputils.OrderedKeys(tmp)) } l, ok := reslist.([]interface{}) if !ok { @@ -96,7 +97,7 @@ func DetermineElementsForSource(ctx clictx.Context, ictx inputs.Context, templ t if entry, ok := tmp[h.Key()]; ok { if m, ok := entry.(map[string]interface{}); ok { if len(tmp) != 1 { - return nil, errors.Newf("invalid %s spec %d: either a list or a single spec possible for %s (found keys %s)", h.Key(), i, listkey, utils.StringMapKeys(tmp)) + return nil, errors.Newf("invalid %s spec %d: either a list or a single spec possible for %s (found keys %s)", h.Key(), i, listkey, maputils.OrderedKeys(tmp)) } tmp = m } @@ -163,7 +164,7 @@ func DetermineElementForData(ctx clictx.Context, ictx inputs.Context, si SourceI if err != nil { return nil, err } - if err = Validate(input, ictx, general.OptionalDefaulted(si.Origin(), input.SourceFile)); err != nil { + if err = Validate(input, ictx, general.OptionalNonZeroDefaulted(si.Origin(), input.SourceFile)); err != nil { return nil, err } } diff --git a/cmds/ocm/commands/ocmcmds/common/cmds/signing/cmd.go b/cmds/ocm/commands/ocmcmds/common/cmds/signing/cmd.go index 347def81ab..957e4a5aa8 100644 --- a/cmds/ocm/commands/ocmcmds/common/cmds/signing/cmd.go +++ b/cmds/ocm/commands/ocmcmds/common/cmds/signing/cmd.go @@ -12,7 +12,7 @@ import ( metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/ocm/resolvers" "ocm.software/ocm/api/ocm/tools/signing" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/lookupoption" @@ -97,7 +97,7 @@ func (o *SignatureCommand) Run() (rerr error) { if err != nil { return err } - err = utils.HandleOutput(NewAction(o.spec.terms, o.Context.OCMContext(), common.NewPrinter(o.Context.StdOut()), sopts), handler, utils.StringElemSpecs(o.Refs...)...) + err = utils.HandleOutput(NewAction(o.spec.terms, o.Context.OCMContext(), misc.NewPrinter(o.Context.StdOut()), sopts), handler, utils.StringElemSpecs(o.Refs...)...) if err != nil { return err } @@ -116,7 +116,7 @@ type Action interface { type action struct { desc []string - printer common.Printer + printer misc.Printer state signing.WalkingState baseresolver ocm.ComponentVersionResolver sopts *signing.Options @@ -125,7 +125,7 @@ type action struct { var _ output.Output = (*action)(nil) -func NewAction(desc []string, ctx ocm.Context, p common.Printer, sopts *signing.Options) Action { +func NewAction(desc []string, ctx ocm.Context, p misc.Printer, sopts *signing.Options) Action { return &action{ desc: desc, printer: p, @@ -142,7 +142,7 @@ func (a *action) Digest(o *comphdlr.Object) (*metav1.DigestSpec, *compdesc.Compo d, err := signing.Apply(a.printer, &a.state, o.ComponentVersion, &sopts) var cd *compdesc.ComponentDescriptor - nv := common.VersionedElementKey(o.ComponentVersion) + nv := misc.VersionedElementKey(o.ComponentVersion) vi := a.state.Get(nv) if vi != nil { cd = vi.GetContext(nv).Descriptor diff --git a/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/closure.go b/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/closure.go index 2dcd8861dd..330dd98c19 100644 --- a/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/closure.go +++ b/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/closure.go @@ -4,7 +4,7 @@ import ( "github.com/mandelsoft/goutils/errors" "ocm.software/ocm/api/ocm" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/lookupoption" "ocm.software/ocm/cmds/ocm/common/output" @@ -13,11 +13,11 @@ import ( //////////////////////////////////////////////////////////////////////////////// func ClosureExplode(opts *output.Options, e interface{}) []interface{} { - return traverse(common.History{}, e.(*Object), opts.Context, opts.Session, lookupoption.From(opts)) + return traverse(misc.History{}, e.(*Object), opts.Context, opts.Session, lookupoption.From(opts)) } -func traverse(hist common.History, o *Object, octx out.Context, sess ocm.Session, lookup ocm.ComponentVersionResolver) []interface{} { - key := common.VersionedElementKey(o.ComponentVersion) +func traverse(hist misc.History, o *Object, octx out.Context, sess ocm.Session, lookup ocm.ComponentVersionResolver) []interface{} { + key := misc.VersionedElementKey(o.ComponentVersion) if err := hist.Add(ocm.KIND_COMPONENTVERSION, key); err != nil { return nil } @@ -27,7 +27,7 @@ func traverse(hist common.History, o *Object, octx out.Context, sess ocm.Session refs=append(refs[:0:0], refs...) sort.Sort(refs) */ - found := map[common.NameVersion]bool{} + found := map[misc.NameVersion]bool{} for _, ref := range refs { key := ocm.ComponentRefKey(&ref) if found[key] { diff --git a/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/options.go b/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/options.go index e30f5c460f..006e1052ea 100644 --- a/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/options.go +++ b/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/options.go @@ -2,9 +2,9 @@ package comphdlr import ( "github.com/Masterminds/semver/v3" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/ocm" - "ocm.software/ocm/api/utils" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/lookupoption" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/versionconstraintsoption" "ocm.software/ocm/cmds/ocm/common/options" @@ -63,7 +63,7 @@ func (o latestonly) ApplyToCompHandler(handler *TypeHandler) { } func LatestOnly(b ...bool) Option { - return latestonly{utils.OptionalDefaultedBool(true, b...)} + return latestonly{general.OptionalDefaultedBool(true, b...)} } //////////////////////////////////////////////////////////////////////////////// diff --git a/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/typehandler.go b/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/typehandler.go index 3112ba5c99..49fcbcf612 100644 --- a/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/typehandler.go +++ b/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr/typehandler.go @@ -12,7 +12,7 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/semverutils" "ocm.software/ocm/cmds/ocm/common/output" "ocm.software/ocm/cmds/ocm/common/tree" @@ -26,7 +26,7 @@ func Elem(e interface{}) ocm.ComponentVersionAccess { //////////////////////////////////////////////////////////////////////////////// type Object struct { - History common.History + History misc.History Identity metav1.Identity Spec ocm.RefSpec @@ -36,19 +36,19 @@ type Object struct { } var ( - _ common.HistorySource = (*Object)(nil) - _ tree.Object = (*Object)(nil) + _ misc.HistorySource = (*Object)(nil) + _ tree.Object = (*Object)(nil) ) type Manifest struct { - History common.History `json:"context"` + History misc.History `json:"context"` Element *compdesc.ComponentDescriptor `json:"element"` } func (o *Object) AsManifest() interface{} { h := o.History if h == nil { - h = common.History{} + h = misc.History{} } return &Manifest{ h, @@ -56,16 +56,16 @@ func (o *Object) AsManifest() interface{} { } } -func (o *Object) GetHistory() common.History { +func (o *Object) GetHistory() misc.History { return o.History } -func (o *Object) IsNode() *common.NameVersion { - var nv common.NameVersion +func (o *Object) IsNode() *misc.NameVersion { + var nv misc.NameVersion if o.ComponentVersion == nil { nv = o.Spec.NameVersion() } else { - nv = common.VersionedElementKey(o.ComponentVersion) + nv = misc.VersionedElementKey(o.ComponentVersion) } return &nv } diff --git a/cmds/ocm/commands/ocmcmds/common/handlers/elemhdlr/typehandler.go b/cmds/ocm/commands/ocmcmds/common/handlers/elemhdlr/typehandler.go index 6e960c30c7..2b7a4d09db 100644 --- a/cmds/ocm/commands/ocmcmds/common/handlers/elemhdlr/typehandler.go +++ b/cmds/ocm/commands/ocmcmds/common/handlers/elemhdlr/typehandler.go @@ -8,7 +8,7 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr" "ocm.software/ocm/cmds/ocm/common/output" "ocm.software/ocm/cmds/ocm/common/tree" @@ -16,28 +16,28 @@ import ( ) type Object struct { - History common.History + History misc.History Version ocm.ComponentVersionAccess VersionId metav1.Identity Spec metav1.Identity Index int Id metav1.Identity - Node *common.NameVersion + Node *misc.NameVersion Element compdesc.ElementMetaAccessor } func (o *Object) String() string { - return fmt.Sprintf("history: %s, id: %s, location: %s", o.History, o.Id, common.VersionedElementKey(o.Version)) + return fmt.Sprintf("history: %s, id: %s, location: %s", o.History, o.Id, misc.VersionedElementKey(o.Version)) } var ( - _ common.HistorySource = (*Object)(nil) - _ tree.Object = (*Object)(nil) + _ misc.HistorySource = (*Object)(nil) + _ tree.Object = (*Object)(nil) ) type Manifest struct { - History common.History `json:"context"` + History misc.History `json:"context"` Element compdesc.Element `json:"element"` } @@ -48,11 +48,11 @@ func (o *Object) AsManifest() interface{} { } } -func (o *Object) GetHistory() common.History { +func (o *Object) GetHistory() misc.History { return o.History } -func (o *Object) IsNode() *common.NameVersion { +func (o *Object) IsNode() *misc.NameVersion { return o.Node } @@ -148,7 +148,7 @@ func (h *TypeHandler) all(c *comphdlr.Object) ([]output.Object, error) { e := elemaccess.Get(i) if h.filterElement(e) { result = append(result, &Object{ - History: c.History.Append(common.VersionedElementKey(c.ComponentVersion)), + History: c.History.Append(misc.VersionedElementKey(c.ComponentVersion)), Version: c.ComponentVersion, VersionId: c.Identity, Index: i, @@ -160,7 +160,7 @@ func (h *TypeHandler) all(c *comphdlr.Object) ([]output.Object, error) { if len(result) == 0 && h.forceEmpty { result = append(result, &Object{ - History: c.History.Append(common.VersionedElementKey(c.ComponentVersion)), + History: c.History.Append(misc.VersionedElementKey(c.ComponentVersion)), Version: c.ComponentVersion, VersionId: c.Identity, Index: -1, @@ -203,7 +203,7 @@ func (h *TypeHandler) get(c *comphdlr.Object, elemspec utils.ElemSpec) ([]output ok, _ := selector.Match(eid) if ok { result = append(result, &Object{ - History: c.History.Append(common.VersionedElementKey(c.ComponentVersion)), + History: c.History.Append(misc.VersionedElementKey(c.ComponentVersion)), Version: c.ComponentVersion, VersionId: c.Identity, Index: i, @@ -215,7 +215,7 @@ func (h *TypeHandler) get(c *comphdlr.Object, elemspec utils.ElemSpec) ([]output } if len(result) == 0 && h.forceEmpty { result = append(result, &Object{ - History: c.History.Append(common.VersionedElementKey(c.ComponentVersion)), + History: c.History.Append(misc.VersionedElementKey(c.ComponentVersion)), Version: c.ComponentVersion, VersionId: c.Identity, Index: -1, diff --git a/cmds/ocm/commands/ocmcmds/common/handlers/vershdlr/options.go b/cmds/ocm/commands/ocmcmds/common/handlers/vershdlr/options.go index 79f7355d91..931c0d89f2 100644 --- a/cmds/ocm/commands/ocmcmds/common/handlers/vershdlr/options.go +++ b/cmds/ocm/commands/ocmcmds/common/handlers/vershdlr/options.go @@ -2,9 +2,9 @@ package vershdlr import ( "github.com/Masterminds/semver/v3" + "github.com/mandelsoft/goutils/general" "ocm.software/ocm/api/ocm" - "ocm.software/ocm/api/utils" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/lookupoption" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/versionconstraintsoption" "ocm.software/ocm/cmds/ocm/common/options" @@ -63,7 +63,7 @@ func (o latestonly) ApplyToHandler(handler *TypeHandler) { } func LatestOnly(b ...bool) Option { - return latestonly{utils.OptionalDefaultedBool(true, b...)} + return latestonly{general.OptionalDefaultedBool(true, b...)} } //////////////////////////////////////////////////////////////////////////////// diff --git a/cmds/ocm/commands/ocmcmds/common/inputs/inputfields.go b/cmds/ocm/commands/ocmcmds/common/inputs/inputfields.go index b3ae07ad64..6c9e2eb165 100644 --- a/cmds/ocm/commands/ocmcmds/common/inputs/inputfields.go +++ b/cmds/ocm/commands/ocmcmds/common/inputs/inputfields.go @@ -4,7 +4,8 @@ import ( "fmt" "strings" - "ocm.software/ocm/api/utils" + "github.com/mandelsoft/goutils/stringutils" + "ocm.software/ocm/api/utils/cobrautils/flagsets" ) @@ -93,6 +94,6 @@ func InputFieldDoc(name string, desc string, opt flagsets.ConfigOptionType) stri } return `- **` + name + `** *string* ` + oname + ` -` + utils.IndentLines(strings.TrimSpace(desc), " ", false) + ` +` + stringutils.IndentLines(strings.TrimSpace(desc), " ", false) + ` ` } diff --git a/cmds/ocm/commands/ocmcmds/common/inputs/inputtype.go b/cmds/ocm/commands/ocmcmds/common/inputs/inputtype.go index 39a233d97f..2110ea5ae2 100644 --- a/cmds/ocm/commands/ocmcmds/common/inputs/inputtype.go +++ b/cmds/ocm/commands/ocmcmds/common/inputs/inputtype.go @@ -7,15 +7,15 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/stringutils" "github.com/modern-go/reflect2" "k8s.io/apimachinery/pkg/util/validation/field" clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/datacontext" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/cobrautils/flagsets" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/runtime" ) @@ -25,7 +25,7 @@ const KIND_INPUTTYPE = "input type" type Context interface { clictx.Context - Printer() common.Printer + Printer() misc.Printer Printf(msg string, args ...interface{}) (int, error) Variables() map[string]interface{} Section(msg string, args ...interface{}) Context @@ -34,11 +34,11 @@ type Context interface { type context struct { clictx.Context - printer common.Printer + printer misc.Printer variables map[string]interface{} } -func NewContext(ctx clictx.Context, pr common.Printer, variables map[string]interface{}) Context { +func NewContext(ctx clictx.Context, pr misc.Printer, variables map[string]interface{}) Context { return &context{ Context: ctx, printer: pr, @@ -50,7 +50,7 @@ func (c *context) Printf(msg string, args ...interface{}) (int, error) { return c.printer.Printf(msg, args...) } -func (c *context) Printer() common.Printer { +func (c *context) Printer() misc.Printer { return c.printer } @@ -73,7 +73,7 @@ func (c *context) AddGap(gap string) Context { type InputResourceInfo struct { // ComponentVersion is the name of the component version to generate. - ComponentVersion common.NameVersion + ComponentVersion misc.NameVersion // ElementName is the name of the element to create. ElementName string // The path of the file the inputs description has been taken from. @@ -433,7 +433,7 @@ func Usage(scheme InputTypeScheme) string { The resource specification supports the following blob input types, specified with the field type in the input field:` for _, t := range scheme.KnownTypeNames() { - s = fmt.Sprintf("%s\n\n- Input type %s\n\n%s", s, t, utils.IndentLines(scheme.GetInputType(t).Usage(), " ")) + s = fmt.Sprintf("%s\n\n- Input type %s\n\n%s", s, t, stringutils.IndentLines(scheme.GetInputType(t).Usage(), " ")) } return s + "\n" } diff --git a/cmds/ocm/commands/ocmcmds/common/inputs/types/directory/spec.go b/cmds/ocm/commands/ocmcmds/common/inputs/types/directory/spec.go index be736935e1..c82e0323c8 100644 --- a/cmds/ocm/commands/ocmcmds/common/inputs/types/directory/spec.go +++ b/cmds/ocm/commands/ocmcmds/common/inputs/types/directory/spec.go @@ -3,9 +3,9 @@ package directory import ( "fmt" + "github.com/mandelsoft/goutils/optionutils" "k8s.io/apimachinery/pkg/util/validation/field" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/blobaccess/dirtree" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/inputs" @@ -70,8 +70,8 @@ func (s *Spec) GetBlob(ctx inputs.Context, info inputs.InputResourceInfo) (bloba dirtree.WithCompressWithGzip(s.Compress()), dirtree.WithIncludeFiles(s.IncludeFiles), dirtree.WithExcludeFiles(s.ExcludeFiles), - dirtree.WithFollowSymlinks(utils.AsBool(s.FollowSymlinks)), - dirtree.WithPreserveDir(utils.AsBool(s.PreserveDir)), + dirtree.WithFollowSymlinks(optionutils.AsBool(s.FollowSymlinks)), + dirtree.WithPreserveDir(optionutils.AsBool(s.PreserveDir)), ) return access, "", err } diff --git a/cmds/ocm/commands/ocmcmds/common/inputs/types/spiff/spiff_test.go b/cmds/ocm/commands/ocmcmds/common/inputs/types/spiff/spiff_test.go index b7d7b99349..3304109480 100644 --- a/cmds/ocm/commands/ocmcmds/common/inputs/types/spiff/spiff_test.go +++ b/cmds/ocm/commands/ocmcmds/common/inputs/types/spiff/spiff_test.go @@ -5,7 +5,7 @@ import ( . "github.com/onsi/gomega" . "ocm.software/ocm/cmds/ocm/testhelper" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/inputs" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/inputs/types/spiff" ) @@ -15,7 +15,7 @@ var _ = Describe("spiff processing", func() { var ictx inputs.Context var info inputs.InputResourceInfo - nv := common.NewNameVersion("test", "v1") + nv := misc.NewNameVersion("test", "v1") BeforeEach(func() { info = inputs.InputResourceInfo{ @@ -24,7 +24,7 @@ var _ = Describe("spiff processing", func() { InputFilePath: "/testdata/dummy", } env = NewTestEnv(TestData()) - ictx = inputs.NewContext(env.Context, common.NewPrinter(env.Context.StdOut()), nil) + ictx = inputs.NewContext(env.Context, misc.NewPrinter(env.Context.StdOut()), nil) }) AfterEach(func() { diff --git a/cmds/ocm/commands/ocmcmds/common/options/downloaderoption/option_test.go b/cmds/ocm/commands/ocmcmds/common/options/downloaderoption/option_test.go index 6cdfa5a10c..75f2d2aa68 100644 --- a/cmds/ocm/commands/ocmcmds/common/options/downloaderoption/option_test.go +++ b/cmds/ocm/commands/ocmcmds/common/options/downloaderoption/option_test.go @@ -26,7 +26,7 @@ var _ = Describe("Downloader Option Test Environment", func() { MustBeSuccessful(fs.Parse([]string{"--downloader", `bla/blub:a:b:10={"k":"v"}`})) MustBeSuccessful(o.Configure(nil)) Expect(len(o.Registrations)).To(Equal(1)) - Expect(o.Registrations[0].Prio).To(Equal(generics.Pointer(10))) + Expect(o.Registrations[0].Prio).To(Equal(generics.PointerTo(10))) Expect(o.Registrations[0].Name).To(Equal("bla/blub")) Expect(o.Registrations[0].ArtifactType).To(Equal("a")) Expect(o.Registrations[0].MediaType).To(Equal("b")) @@ -38,7 +38,7 @@ var _ = Describe("Downloader Option Test Environment", func() { MustBeSuccessful(fs.Parse([]string{"--downloader", `bla/blub:::10={"k":"v"}`})) MustBeSuccessful(o.Configure(nil)) Expect(len(o.Registrations)).To(Equal(1)) - Expect(o.Registrations[0].Prio).To(Equal(generics.Pointer(10))) + Expect(o.Registrations[0].Prio).To(Equal(generics.PointerTo(10))) Expect(o.Registrations[0].Name).To(Equal("bla/blub")) Expect(o.Registrations[0].ArtifactType).To(Equal("")) Expect(o.Registrations[0].MediaType).To(Equal("")) diff --git a/cmds/ocm/commands/ocmcmds/common/options/optutils/registration.go b/cmds/ocm/commands/ocmcmds/common/options/optutils/registration.go index e6bd620a98..ad10d2b7b3 100644 --- a/cmds/ocm/commands/ocmcmds/common/options/optutils/registration.go +++ b/cmds/ocm/commands/ocmcmds/common/options/optutils/registration.go @@ -8,11 +8,11 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/generics" + "github.com/mandelsoft/goutils/optionutils" "github.com/spf13/pflag" "sigs.k8s.io/yaml" clictx "ocm.software/ocm/api/cli" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/cobrautils/flag" ) @@ -79,7 +79,7 @@ func (o *RegistrationOption) Configure(ctx clictx.Context) error { if err != nil { return fmt.Errorf("invalid %s registration %s (invalid priority) must be of %s", o.name, n, RegistrationFormat) } - prio = generics.Pointer(int(v)) + prio = generics.PointerTo(int(v)) } i = strings.Index(med, ":") if i >= 0 { @@ -90,7 +90,7 @@ func (o *RegistrationOption) Configure(ctx clictx.Context) error { var raw []byte var err error if strings.HasPrefix(v, "@") { - raw, err = utils.ReadFile(v[1:], ctx.FileSystem()) + raw, err = optionutils.ReadFile(v[1:], ctx.FileSystem()) if err != nil { return errors.Wrapf(err, "cannot read %s config from %q", o.name, v[1:]) } diff --git a/cmds/ocm/commands/ocmcmds/common/options/schemaoption/option.go b/cmds/ocm/commands/ocmcmds/common/options/schemaoption/option.go index 2ee7bf480d..f21523cbb3 100644 --- a/cmds/ocm/commands/ocmcmds/common/options/schemaoption/option.go +++ b/cmds/ocm/commands/ocmcmds/common/options/schemaoption/option.go @@ -2,11 +2,11 @@ package schemaoption import ( "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" "github.com/spf13/pflag" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - utils2 "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/errkind" "ocm.software/ocm/api/utils/listformat" "ocm.software/ocm/cmds/ocm/common/options" @@ -19,7 +19,7 @@ func From(o options.OptionSetProvider) *Option { } func New(def string, internal ...bool) *Option { - return &Option{Defaulted: def, internal: utils2.Optional(internal...)} + return &Option{Defaulted: def, internal: general.Optional(internal...)} } type Option struct { diff --git a/cmds/ocm/commands/ocmcmds/common/options/scriptoption/config.go b/cmds/ocm/commands/ocmcmds/common/options/scriptoption/config.go index 819d0b7259..4a0e91b5c2 100644 --- a/cmds/ocm/commands/ocmcmds/common/options/scriptoption/config.go +++ b/cmds/ocm/commands/ocmcmds/common/options/scriptoption/config.go @@ -4,6 +4,7 @@ import ( "encoding/json" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/vfs" cfgcpi "ocm.software/ocm/api/config/cpi" @@ -78,7 +79,7 @@ func (a *Config) ApplyTo(ctx cfgcpi.Context, target interface{}) error { if spec.Path == "" { return errors.Newf("script or path must be set for entry %q", t.Script) } - data, err := utils.ReadFile(spec.Path, utils.FileSystem(spec.FileSystem, t.FileSystem)) + data, err := optionutils.ReadFile(spec.Path, utils.FileSystem(spec.FileSystem, t.FileSystem)) if err != nil { return errors.Wrapf(err, "script file %q", spec.Path) } diff --git a/cmds/ocm/commands/ocmcmds/common/options/scriptoption/option.go b/cmds/ocm/commands/ocmcmds/common/options/scriptoption/option.go index ff8acf3c7d..270410c1e6 100644 --- a/cmds/ocm/commands/ocmcmds/common/options/scriptoption/option.go +++ b/cmds/ocm/commands/ocmcmds/common/options/scriptoption/option.go @@ -2,6 +2,7 @@ package scriptoption import ( "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/spf13/pflag" @@ -9,7 +10,6 @@ import ( cfgcpi "ocm.software/ocm/api/config/cpi" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/spiff" - "ocm.software/ocm/api/utils" "ocm.software/ocm/cmds/ocm/common/options" ) @@ -59,7 +59,7 @@ func (o *Option) Configure(ctx clictx.Context) error { } } if o.ScriptFile != "" { - data, err := utils.ReadFile(o.ScriptFile, ctx.FileSystem()) + data, err := optionutils.ReadFile(o.ScriptFile, ctx.FileSystem()) if err != nil { return errors.Wrapf(err, "invalid transfer script file") } diff --git a/cmds/ocm/commands/ocmcmds/common/options/uploaderoption/option_test.go b/cmds/ocm/commands/ocmcmds/common/options/uploaderoption/option_test.go index 91a4fd78c9..ab63e2bcee 100644 --- a/cmds/ocm/commands/ocmcmds/common/options/uploaderoption/option_test.go +++ b/cmds/ocm/commands/ocmcmds/common/options/uploaderoption/option_test.go @@ -26,7 +26,7 @@ var _ = Describe("Downloader Option Test Environment", func() { MustBeSuccessful(fs.Parse([]string{"--uploader", `bla/blub:a:b:10={"k":"v"}`})) MustBeSuccessful(o.Configure(nil)) Expect(len(o.Registrations)).To(Equal(1)) - Expect(o.Registrations[0].Prio).To(Equal(generics.Pointer(10))) + Expect(o.Registrations[0].Prio).To(Equal(generics.PointerTo(10))) Expect(o.Registrations[0].Name).To(Equal("bla/blub")) Expect(o.Registrations[0].ArtifactType).To(Equal("a")) Expect(o.Registrations[0].MediaType).To(Equal("b")) @@ -38,7 +38,7 @@ var _ = Describe("Downloader Option Test Environment", func() { MustBeSuccessful(fs.Parse([]string{"--uploader", `bla/blub:::10={"k":"v"}`})) MustBeSuccessful(o.Configure(nil)) Expect(len(o.Registrations)).To(Equal(1)) - Expect(o.Registrations[0].Prio).To(Equal(generics.Pointer(10))) + Expect(o.Registrations[0].Prio).To(Equal(generics.PointerTo(10))) Expect(o.Registrations[0].Name).To(Equal("bla/blub")) Expect(o.Registrations[0].ArtifactType).To(Equal("")) Expect(o.Registrations[0].MediaType).To(Equal("")) diff --git a/cmds/ocm/commands/ocmcmds/common/options/versionconstraintsoption/option.go b/cmds/ocm/commands/ocmcmds/common/options/versionconstraintsoption/option.go index fb8d140a3b..596704c45c 100644 --- a/cmds/ocm/commands/ocmcmds/common/options/versionconstraintsoption/option.go +++ b/cmds/ocm/commands/ocmcmds/common/options/versionconstraintsoption/option.go @@ -2,9 +2,9 @@ package versionconstraintsoption import ( "github.com/Masterminds/semver/v3" + "github.com/mandelsoft/goutils/general" "github.com/spf13/pflag" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/cobrautils/flag" "ocm.software/ocm/cmds/ocm/common/options" ) @@ -16,7 +16,7 @@ func From(o options.OptionSetProvider) *Option { } func New(silent ...bool) *Option { - return &Option{SilentLatestOption: utils.Optional(silent...)} + return &Option{SilentLatestOption: general.Optional(silent...)} } type Option struct { @@ -33,7 +33,7 @@ func (o *Option) AddFlags(fs *pflag.FlagSet) { } func (o *Option) SetLatest(latest ...bool) *Option { - o.Latest = utils.OptionalDefaultedBool(true, latest...) + o.Latest = general.OptionalDefaultedBool(true, latest...) return o } diff --git a/cmds/ocm/commands/ocmcmds/common/resources.go b/cmds/ocm/commands/ocmcmds/common/resources.go index 3ef2840856..c4f7718a22 100644 --- a/cmds/ocm/commands/ocmcmds/common/resources.go +++ b/cmds/ocm/commands/ocmcmds/common/resources.go @@ -26,7 +26,7 @@ import ( "ocm.software/ocm/api/utils/cobrautils/flagsets" "ocm.software/ocm/api/utils/logging" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/addhdlrs" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/inputs" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/dryrunoption" @@ -446,7 +446,7 @@ func (o *ResourceAdderCommand) Complete(args []string) error { func (o *ResourceAdderCommand) ProcessResourceDescriptions() error { fs := o.Context.FileSystem() - printer := common.NewPrinter(o.Context.StdOut()) + printer := misc.NewPrinter(o.Context.StdOut()) elems, ictx, err := addhdlrs.ProcessDescriptions(o.Context, printer, templateroption.From(o).Options, o.Handler, o.Resources) if err != nil { return err @@ -482,9 +482,9 @@ func ProcessElements(ictx inputs.Context, cv ocm.ComponentVersionAccess, elems [ var acc ocm.AccessSpec // Local Blob info := inputs.InputResourceInfo{ - ComponentVersion: common.VersionedElementKey(cv), + ComponentVersion: misc.VersionedElementKey(cv), ElementName: elem.Spec().GetName(), - InputFilePath: general.OptionalDefaulted(elem.Source().Origin(), elem.Input().SourceFile), + InputFilePath: general.OptionalNonZeroDefaulted(elem.Source().Origin(), elem.Input().SourceFile), } blob, hint, berr := elem.Input().Input.GetBlob(ictx, info) if berr != nil { diff --git a/cmds/ocm/commands/ocmcmds/common/utils.go b/cmds/ocm/commands/ocmcmds/common/utils.go index b5324d114c..e4953a5f6c 100644 --- a/cmds/ocm/commands/ocmcmds/common/utils.go +++ b/cmds/ocm/commands/ocmcmds/common/utils.go @@ -6,12 +6,12 @@ import ( "github.com/mandelsoft/goutils/errors" "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/maputils" clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" - utils2 "ocm.software/ocm/api/utils" "ocm.software/ocm/cmds/ocm/common/options" ) @@ -109,7 +109,7 @@ func MapLabelSpecs(d interface{}) (interface{}, error) { var labels []interface{} found := map[string]struct{}{} - for _, k := range utils2.StringMapKeys(m) { + for _, k := range maputils.OrderedKeys(m) { v := m[k] entry := map[string]interface{}{} if strings.HasPrefix(k, "*") { diff --git a/cmds/ocm/commands/ocmcmds/componentarchive/transfer/cmd.go b/cmds/ocm/commands/ocmcmds/componentarchive/transfer/cmd.go index e79d6155d3..5891128391 100644 --- a/cmds/ocm/commands/ocmcmds/componentarchive/transfer/cmd.go +++ b/cmds/ocm/commands/ocmcmds/componentarchive/transfer/cmd.go @@ -10,7 +10,7 @@ import ( "ocm.software/ocm/api/ocm/tools/transfer/transferhandler" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/commands/common/options/formatoption" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/lookupoption" @@ -110,5 +110,5 @@ func (o *Command) Run() error { if err != nil { return err } - return transfer.TransferVersion(common.NewPrinter(o.Context.StdOut()), nil, source, target, thdlr) + return transfer.TransferVersion(misc.NewPrinter(o.Context.StdOut()), nil, source, target, thdlr) } diff --git a/cmds/ocm/commands/ocmcmds/components/check/cmd.go b/cmds/ocm/commands/ocmcmds/components/check/cmd.go index 79baa1e4e6..8ff70855e5 100644 --- a/cmds/ocm/commands/ocmcmds/components/check/cmd.go +++ b/cmds/ocm/commands/ocmcmds/components/check/cmd.go @@ -3,6 +3,7 @@ package check import ( "fmt" + "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/goutils/optionutils" "github.com/spf13/cobra" "k8s.io/apimachinery/pkg/util/json" @@ -10,8 +11,7 @@ import ( clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/ocmutils/check" - utils2 "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/commands/common/options/failonerroroption" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr" @@ -139,7 +139,7 @@ func mapWideOutput(e interface{}) interface{} { missing[id.String()] = d + "]" } sep := "" - for _, k := range utils2.StringMapKeys(missing) { + for _, k := range maputils.OrderedKeys(missing) { mmsg += sep + k + missing[k] sep = ", " } @@ -170,10 +170,10 @@ func mapWideOutput(e interface{}) interface{} { type CheckResult = check.Result type Entry struct { - Status string `json:"status"` - ComponentVersion common.NameVersion `json:"componentVersion"` - Results *CheckResult `json:",inline"` // does not work - Error error `json:"error,omitempty"` + Status string `json:"status"` + ComponentVersion misc.NameVersion `json:"componentVersion"` + Results *CheckResult `json:",inline"` // does not work + Error error `json:"error,omitempty"` } func (n Entry) MarshalJSON() ([]byte, error) { @@ -211,7 +211,7 @@ func NewAction(opts *output.Options) processing.ProcessChain { func (a *action) Map(in interface{}) interface{} { i := in.(*comphdlr.Object) o := &Entry{ - ComponentVersion: common.VersionedElementKey(i.ComponentVersion), + ComponentVersion: misc.VersionedElementKey(i.ComponentVersion), } status := "" o.Results, o.Error = a.options.For(i.ComponentVersion) @@ -221,17 +221,17 @@ func (a *action) Map(in interface{}) interface{} { } if !o.Results.IsEmpty() { if len(o.Results.Missing) > 0 { - a.erropt.AddError(fmt.Errorf("incomplete component version %s", common.VersionedElementKey(i.ComponentVersion))) + a.erropt.AddError(fmt.Errorf("incomplete component version %s", misc.VersionedElementKey(i.ComponentVersion))) status += ",Incomplete" } if len(o.Results.Sources) > 0 || len(o.Results.Resources) > 0 { if len(o.Results.Resources) > 0 { status += ",Resources" - a.erropt.AddError(fmt.Errorf("version %s with non-local resources", common.VersionedElementKey(i.ComponentVersion))) + a.erropt.AddError(fmt.Errorf("version %s with non-local resources", misc.VersionedElementKey(i.ComponentVersion))) } if len(o.Results.Sources) > 0 { status += ",Sources" - a.erropt.AddError(fmt.Errorf("version %s with non-local sources", common.VersionedElementKey(i.ComponentVersion))) + a.erropt.AddError(fmt.Errorf("version %s with non-local sources", misc.VersionedElementKey(i.ComponentVersion))) } } } diff --git a/cmds/ocm/commands/ocmcmds/components/download/cmd.go b/cmds/ocm/commands/ocmcmds/components/download/cmd.go index 71ac2a8d7f..d0f6275f58 100644 --- a/cmds/ocm/commands/ocmcmds/components/download/cmd.go +++ b/cmds/ocm/commands/ocmcmds/components/download/cmd.go @@ -13,7 +13,7 @@ import ( "ocm.software/ocm/api/ocm/tools/transfer" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/commands/common/options/destoption" "ocm.software/ocm/cmds/ocm/commands/common/options/formatoption" @@ -143,8 +143,8 @@ func (d *action) Save(o *comphdlr.Object, f string) (err error) { //nolint:staticcheck // Deprecated: Component Archive (CA) - https://kubernetes.slack.com/archives/C05UWBE8R1D/p1734357630853489 defer errors.PropagateError(&err, set.Close) - nv := common.VersionedElementKey(src) - hist := common.History{nv} + nv := misc.VersionedElementKey(src) + hist := misc.History{nv} err = transfer.CopyVersion(nil, d.cmd.OCMContext().Logger().WithValues("download", f), hist, src, set, nil) if err == nil { diff --git a/cmds/ocm/commands/ocmcmds/components/hash/cmd.go b/cmds/ocm/commands/ocmcmds/components/hash/cmd.go index dfe19514be..261fc80122 100644 --- a/cmds/ocm/commands/ocmcmds/components/hash/cmd.go +++ b/cmds/ocm/commands/ocmcmds/components/hash/cmd.go @@ -12,7 +12,7 @@ import ( clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/compdesc" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/commands/common/options/closureoption" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" @@ -114,18 +114,18 @@ func TableOutput(opts *output.Options, h *action, mapping processing.MappingFunc type Object struct { Spec ocm.RefSpec - History common.History + History misc.History Descriptor *compdesc.ComponentDescriptor Error error } type Manifest struct { - History common.History `json:"context"` - Component string `json:"component"` - Version string `json:"version"` - Normalized string `json:"normalized,omitempty"` - Hash string `json:"hash,omitempty"` - Error string `json:"error,omitempty"` + History misc.History `json:"context"` + Component string `json:"component"` + Version string `json:"version"` + Normalized string `json:"normalized,omitempty"` + Hash string `json:"hash,omitempty"` + Error string `json:"error,omitempty"` } //////////////////////////////////////////////////////////////////////////////// @@ -163,7 +163,7 @@ type action struct { opts *hashoption.Option mode *Option - norms map[common.NameVersion]string + norms map[misc.NameVersion]string } func (h *action) Add(e interface{}) error { @@ -171,7 +171,7 @@ func (h *action) Add(e interface{}) error { if m.Error != "" { return fmt.Errorf("cannot handle %s: %s\n", m.History, m.Error) } - h.norms[common.NewNameVersion(m.Component, m.Version)] = m.Normalized + h.norms[misc.NewNameVersion(m.Component, m.Version)] = m.Normalized return nil } @@ -234,7 +234,7 @@ func newAction(opts *output.Options) *action { mode: From(opts), } if opts.OutputMode == "norm" { - h.norms = map[common.NameVersion]string{} + h.norms = map[misc.NameVersion]string{} } return h } @@ -253,7 +253,7 @@ func (h *action) _manifester(e interface{}) *Manifest { hist := p.History if hist == nil { - hist = common.History{} + hist = misc.History{} } m := &Manifest{ diff --git a/cmds/ocm/commands/ocmcmds/components/hash/options.go b/cmds/ocm/commands/ocmcmds/components/hash/options.go index 99346e88a2..fa6d2443a3 100644 --- a/cmds/ocm/commands/ocmcmds/components/hash/options.go +++ b/cmds/ocm/commands/ocmcmds/components/hash/options.go @@ -4,7 +4,7 @@ import ( "github.com/spf13/pflag" "ocm.software/ocm/api/ocm/tools/signing" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" signingcmd "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/cmds/signing" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/hashoption" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/lookupoption" @@ -45,7 +45,7 @@ func (o *Option) Complete(cmd *Command) error { sopts := signing.NewOptions(hashoption.From(cmd), signing.Resolver(repo, lookup.Resolver), signing.Update(o.Update), signing.VerifyDigests(o.Verify)) err := sopts.Complete(cmd.Context.OCMContext()) if err == nil { - o.action = signingcmd.NewAction([]string{"", ""}, cmd.Context.OCMContext(), common.NewPrinter(nil), sopts) + o.action = signingcmd.NewAction([]string{"", ""}, cmd.Context.OCMContext(), misc.NewPrinter(nil), sopts) } return err } diff --git a/cmds/ocm/commands/ocmcmds/components/sign/cmd_test.go b/cmds/ocm/commands/ocmcmds/components/sign/cmd_test.go index 26b7ba3f0d..04bad2f2f0 100644 --- a/cmds/ocm/commands/ocmcmds/components/sign/cmd_test.go +++ b/cmds/ocm/commands/ocmcmds/components/sign/cmd_test.go @@ -26,7 +26,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -425,8 +425,8 @@ successfully signed github.com/mandelsoft/ref:v1 (digest SHA-256:${ref}) store := Must(signing.NewVerifiedStore(VERIFIED_FILE, env.FileSystem())) - CheckStore(store, common.NewNameVersion(COMPONENTA, VERSION)) - CheckStore(store, common.NewNameVersion(COMPONENTB, VERSION)) + CheckStore(store, misc.NewNameVersion(COMPONENTA, VERSION)) + CheckStore(store, misc.NewNameVersion(COMPONENTB, VERSION)) }, Entry("v1", substitutionsV1, compdesc.JsonNormalisationV1), Entry("v2", substitutionsV2, compdesc.JsonNormalisationV2), @@ -435,10 +435,10 @@ successfully signed github.com/mandelsoft/ref:v1 (digest SHA-256:${ref}) }) }) -func CheckStore(store signing.VerifiedStore, ve common.VersionedElement) { +func CheckStore(store signing.VerifiedStore, ve misc.VersionedElement) { e := store.Get(ve) ExpectWithOffset(1, e).NotTo(BeNil()) - ExpectWithOffset(1, common.VersionedElementKey(e)).To(Equal(common.VersionedElementKey(ve))) + ExpectWithOffset(1, misc.VersionedElementKey(e)).To(Equal(misc.VersionedElementKey(ve))) } func prepareEnv(env *TestEnv, componentAArchive, componentBArchive string) { diff --git a/cmds/ocm/commands/ocmcmds/components/transfer/cmd.go b/cmds/ocm/commands/ocmcmds/components/transfer/cmd.go index d01c477bf9..e9bdc48b90 100644 --- a/cmds/ocm/commands/ocmcmds/components/transfer/cmd.go +++ b/cmds/ocm/commands/ocmcmds/components/transfer/cmd.go @@ -15,7 +15,7 @@ import ( "ocm.software/ocm/api/ocm/tools/transfer" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/spiff" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/commands/common/options/closureoption" "ocm.software/ocm/cmds/ocm/commands/common/options/formatoption" @@ -143,7 +143,7 @@ func (o *Command) Run() error { hdlr := comphdlr.NewTypeHandler(o.Context.OCM(), session, repooption.From(o).Repository, comphdlr.OptionsFor(o)) err = utils.HandleOutput(&action{ cmd: o, - printer: common.NewPrinter(o.Context.StdOut()), + printer: misc.NewPrinter(o.Context.StdOut()), target: target, handler: thdlr, closure: transfer.TransportClosure{}, @@ -159,7 +159,7 @@ func (o *Command) Run() error { type action struct { cmd *Command - printer common.Printer + printer misc.Printer target ocm.Repository handler transferhandler.TransferHandler closure transfer.TransportClosure @@ -197,7 +197,7 @@ func (a *action) Out() error { if a.cmd.BOMFile != "" { bom := BOM{} - for _, nv := range maputils.Keys(a.closure, common.CompareNameVersion) { + for _, nv := range maputils.Keys(a.closure, misc.CompareNameVersion) { bom.List = append(bom.List, BomEntry{ Component: nv.GetName(), Version: nv.GetVersion(), diff --git a/cmds/ocm/commands/ocmcmds/components/transfer/cmd_test.go b/cmds/ocm/commands/ocmcmds/components/transfer/cmd_test.go index 51948a7ad2..6738677de0 100644 --- a/cmds/ocm/commands/ocmcmds/components/transfer/cmd_test.go +++ b/cmds/ocm/commands/ocmcmds/components/transfer/cmd_test.go @@ -10,6 +10,7 @@ import ( . "ocm.software/ocm/api/oci/testhelper" . "ocm.software/ocm/cmds/ocm/testhelper" + "github.com/mandelsoft/goutils/optionutils" "github.com/spf13/cobra" clictx "ocm.software/ocm/api/cli" @@ -22,9 +23,8 @@ import ( "ocm.software/ocm/api/ocm/extensions/accessmethods/ociartifact" resourcetypes "ocm.software/ocm/api/ocm/extensions/artifacttypes" ctfocm "ocm.software/ocm/api/ocm/extensions/repositories/ctf" - ocmutils "ocm.software/ocm/api/ocm/ocmutils" + "ocm.software/ocm/api/ocm/ocmutils" handlercfg "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/config" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/mime" @@ -254,7 +254,7 @@ transferring version "github.com/mandelsoft/test:v1"... It("transfers ctf to ctf+tgz with config option", func() { cfg := handlercfg.NewConfig() - cfg.ResourcesByValue = utils.BoolP(true) + cfg.ResourcesByValue = optionutils.BoolP(true) mod := func(ctx clictx.Context, cmd *cobra.Command) { if cmd == nil { @@ -278,7 +278,7 @@ transferring version "github.com/mandelsoft/test:v1"... It("transfers ctf to ctf+tgz with config set", func() { cfg := handlercfg.NewConfig() - cfg.ResourcesByValue = utils.BoolP(true) + cfg.ResourcesByValue = optionutils.BoolP(true) cfgcfg := config.New() cfgcfg.AddSet("transfer", "standard transfer options to use") diff --git a/cmds/ocm/commands/ocmcmds/components/verify/cmd_test.go b/cmds/ocm/commands/ocmcmds/components/verify/cmd_test.go index a94e825f5e..b3e24ed735 100644 --- a/cmds/ocm/commands/ocmcmds/components/verify/cmd_test.go +++ b/cmds/ocm/commands/ocmcmds/components/verify/cmd_test.go @@ -27,7 +27,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -211,14 +211,14 @@ successfully verified github.com/mandelsoft/ref:v1 (digest SHA-256:${ref}) store := Must(NewVerifiedStore(VERIFIED_FILE, env.FileSystem())) - CheckStore(store, common.NewNameVersion(COMPONENTA, VERSION)) - CheckStore(store, common.NewNameVersion(COMPONENTB, VERSION)) + CheckStore(store, misc.NewNameVersion(COMPONENTA, VERSION)) + CheckStore(store, misc.NewNameVersion(COMPONENTB, VERSION)) }) }) }) -func CheckStore(store VerifiedStore, ve common.VersionedElement) { +func CheckStore(store VerifiedStore, ve misc.VersionedElement) { e := store.Get(ve) ExpectWithOffset(1, e).NotTo(BeNil()) - ExpectWithOffset(1, common.VersionedElementKey(e)).To(Equal(common.VersionedElementKey(ve))) + ExpectWithOffset(1, misc.VersionedElementKey(e)).To(Equal(misc.VersionedElementKey(ve))) } diff --git a/cmds/ocm/commands/ocmcmds/ctf/transfer/cmd.go b/cmds/ocm/commands/ocmcmds/ctf/transfer/cmd.go index 227c458b11..045f49635d 100644 --- a/cmds/ocm/commands/ocmcmds/ctf/transfer/cmd.go +++ b/cmds/ocm/commands/ocmcmds/ctf/transfer/cmd.go @@ -11,7 +11,7 @@ import ( "ocm.software/ocm/api/ocm/tools/transfer/transferhandler" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/spiff" "ocm.software/ocm/api/utils/accessobj" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/commands/common/options/closureoption" "ocm.software/ocm/cmds/ocm/commands/common/options/formatoption" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" @@ -112,7 +112,7 @@ func (o *Command) Run() error { return err } a := &action{ - printer: common.NewPrinter(o.Context.StdOut()), + printer: misc.NewPrinter(o.Context.StdOut()), target: target, handler: thdlr, closure: transfer.TransportClosure{}, @@ -124,7 +124,7 @@ func (o *Command) Run() error { ///////////////////////////////////////////////////////////////////////////// type action struct { - printer common.Printer + printer misc.Printer target ocm.Repository handler transferhandler.TransferHandler closure transfer.TransportClosure diff --git a/cmds/ocm/commands/ocmcmds/plugins/describe/cmd.go b/cmds/ocm/commands/ocmcmds/plugins/describe/cmd.go index 709b563061..b0d7bf6def 100644 --- a/cmds/ocm/commands/ocmcmds/plugins/describe/cmd.go +++ b/cmds/ocm/commands/ocmcmds/plugins/describe/cmd.go @@ -7,7 +7,7 @@ import ( clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/utils/cobrautils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" handler "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/pluginhdlr" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/names" "ocm.software/ocm/cmds/ocm/commands/verbs" @@ -64,13 +64,13 @@ func (o *Command) Run() error { ///////////////////////////////////////////////////////////////////////////// type action struct { - Printer common.Printer + Printer misc.Printer Count int } func NewAction(o *Command) *action { return &action{ - Printer: common.NewPrinter(o.StdOut()), + Printer: misc.NewPrinter(o.StdOut()), } } @@ -78,7 +78,7 @@ func (a *action) Add(e interface{}) error { a.Count++ p := handler.Elem(e) - out, buf := common.NewBufferedPrinter() + out, buf := misc.NewBufferedPrinter() DescribePlugin(p, out) if a.Count > 1 { a.Printer.Printf("----------------------\n") diff --git a/cmds/ocm/commands/ocmcmds/plugins/describe/describe.go b/cmds/ocm/commands/ocmcmds/plugins/describe/describe.go index bc667eac53..97da70a934 100644 --- a/cmds/ocm/commands/ocmcmds/plugins/describe/describe.go +++ b/cmds/ocm/commands/ocmcmds/plugins/describe/describe.go @@ -5,10 +5,10 @@ import ( "ocm.software/ocm/api/ocm/plugin" plugincommon "ocm.software/ocm/api/ocm/plugin/common" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) -func DescribePlugin(p plugin.Plugin, out common.Printer) { +func DescribePlugin(p plugin.Plugin, out misc.Printer) { out.Printf("Plugin Name: %s\n", p.Name()) out.Printf("Plugin Version: %s\n", p.Version()) out.Printf("Path: %s\n", p.Path()) diff --git a/cmds/ocm/commands/ocmcmds/plugins/get/cmd.go b/cmds/ocm/commands/ocmcmds/plugins/get/cmd.go index 5dce6e1532..df647e182a 100644 --- a/cmds/ocm/commands/ocmcmds/plugins/get/cmd.go +++ b/cmds/ocm/commands/ocmcmds/plugins/get/cmd.go @@ -5,13 +5,13 @@ import ( "sort" "strings" + "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/goutils/set" "github.com/spf13/cobra" clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/ocm/plugin" "ocm.software/ocm/api/ocm/plugin/common" - utils2 "ocm.software/ocm/api/utils" handler "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/pluginhdlr" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/names" "ocm.software/ocm/cmds/ocm/commands/verbs" @@ -115,7 +115,7 @@ func mapGetWideOutput(e interface{}) interface{} { } var methods []string - for _, m := range utils2.StringMapKeys(found) { + for _, m := range maputils.OrderedKeys(found) { l := found[m] if len(l) == 0 { methods = append(methods, m) diff --git a/cmds/ocm/commands/ocmcmds/plugins/install/cmd.go b/cmds/ocm/commands/ocmcmds/plugins/install/cmd.go index b384c2c366..a038c92165 100644 --- a/cmds/ocm/commands/ocmcmds/plugins/install/cmd.go +++ b/cmds/ocm/commands/ocmcmds/plugins/install/cmd.go @@ -12,7 +12,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/attrs/plugincacheattr" "ocm.software/ocm/api/ocm/plugin/cache" "ocm.software/ocm/api/utils/cobrautils/flag" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/pluginhdlr" @@ -96,7 +96,7 @@ func (o *Command) Complete(args []string) error { } o.Ref = args[0] } - o.Printer = common.NewPrinter(o.StdOut()) + o.Printer = misc.NewPrinter(o.StdOut()) return nil } diff --git a/cmds/ocm/commands/ocmcmds/pubsub/set/cmd.go b/cmds/ocm/commands/ocmcmds/pubsub/set/cmd.go index e49f68323a..3884ae7e11 100644 --- a/cmds/ocm/commands/ocmcmds/pubsub/set/cmd.go +++ b/cmds/ocm/commands/ocmcmds/pubsub/set/cmd.go @@ -3,6 +3,7 @@ package set import ( "fmt" + "github.com/mandelsoft/goutils/optionutils" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -10,7 +11,6 @@ import ( "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/cpi" "ocm.software/ocm/api/ocm/extensions/pubsub" - utils2 "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/names" "ocm.software/ocm/cmds/ocm/commands/verbs" @@ -70,7 +70,7 @@ func (o *Command) Complete(args []string) error { if o.Delete { return fmt.Errorf("delete does not require a specification argument") } - o.Spec, err = utils2.ResolveData(args[1], o.FileSystem()) + o.Spec, err = optionutils.ResolveData(args[1], o.FileSystem()) if err != nil { return err } diff --git a/cmds/ocm/commands/ocmcmds/resources/add/cmd_test.go b/cmds/ocm/commands/ocmcmds/resources/add/cmd_test.go index bc3284214d..b0d3bd3cd1 100644 --- a/cmds/ocm/commands/ocmcmds/resources/add/cmd_test.go +++ b/cmds/ocm/commands/ocmcmds/resources/add/cmd_test.go @@ -27,7 +27,7 @@ import ( "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -54,7 +54,7 @@ func CheckTextResourceBlob(env *TestEnv, cd *compdesc.ComponentDescriptor, name list, err := vfs.ReadDir(env, env.Join(ARCH, comparch.BlobsDirectoryName)) found := map[string]string{} - blobname := common.DigestToFileName(dig) + blobname := misc.DigestToFileName(dig) for _, e := range list { data, err := env.ReadFile(env.Join(ARCH, comparch.BlobsDirectoryName, e.Name())) Expect(err).To(Succeed()) @@ -81,7 +81,7 @@ func CheckTextResourceBlob(env *TestEnv, cd *compdesc.ComponentDescriptor, name spec, err := env.OCMContext().AccessSpecForSpec(cd.Resources[0].Access) Expect(err).To(Succeed()) Expect(spec.GetType()).To(Equal(localblob.Type)) - Expect(spec.(*localblob.AccessSpec).LocalReference).To(Equal(common.DigestToFileName(dig))) + Expect(spec.(*localblob.AccessSpec).LocalReference).To(Equal(misc.DigestToFileName(dig))) Expect(spec.(*localblob.AccessSpec).MediaType).To(Equal("text/plain")) } @@ -224,7 +224,7 @@ var _ = Describe("Add resources", func() { // sha is always different for helm artifact // Expect(acc.(*localblob.AccessSpec).LocalReference).To(Equal("sha256.817db2696ed23f7779a7f848927e2958d2236e5483ad40875274462d8fa8ef9a")) - blobpath := env.Join(ARCH, comparch.BlobsDirectoryName, common.DigestToFileName(digest.Digest(acc.(*localblob.AccessSpec).LocalReference))) + blobpath := env.Join(ARCH, comparch.BlobsDirectoryName, misc.DigestToFileName(digest.Digest(acc.(*localblob.AccessSpec).LocalReference))) blob := blobaccess.ForFile(mime.MIME_GZIP, blobpath, env) set, err := artifactset.OpenFromBlob(accessobj.ACC_READONLY, blob) diff --git a/cmds/ocm/commands/ocmcmds/resources/download/cmd_test.go b/cmds/ocm/commands/ocmcmds/resources/download/cmd_test.go index 6aab6733e6..2a82dca9b8 100644 --- a/cmds/ocm/commands/ocmcmds/resources/download/cmd_test.go +++ b/cmds/ocm/commands/ocmcmds/resources/download/cmd_test.go @@ -21,7 +21,7 @@ import ( "ocm.software/ocm/api/utils/accessio" "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -249,7 +249,7 @@ successfully verified test.de/x:v1 (digest SHA-256:ba5b4af72fcb707a4a8ebc48b088c store := Must(signing.NewVerifiedStore(VERIFIED_FILE, env.FileSystem())) - cd := store.Get(common.NewNameVersion(COMP, VERSION)) + cd := store.Get(misc.NewNameVersion(COMP, VERSION)) cd.Resources[0].Digest.Value = "b" + cd.Resources[0].Digest.Value[1:] store.Add(cd) diff --git a/cmds/ocm/commands/ocmcmds/resources/download/options.go b/cmds/ocm/commands/ocmcmds/resources/download/options.go index 4942477e1d..9761264105 100644 --- a/cmds/ocm/commands/ocmcmds/resources/download/options.go +++ b/cmds/ocm/commands/ocmcmds/resources/download/options.go @@ -1,9 +1,10 @@ package download import ( + "github.com/mandelsoft/goutils/general" + "github.com/mandelsoft/goutils/optionutils" "github.com/spf13/pflag" - "ocm.software/ocm/api/utils" "ocm.software/ocm/cmds/ocm/common/output" ) @@ -14,7 +15,7 @@ func From(o *output.Options) *Option { } func NewOptions(silent ...bool) *Option { - return &Option{SilentOption: utils.Optional(silent...)} + return &Option{SilentOption: general.Optional(silent...)} } type Option struct { @@ -24,7 +25,7 @@ type Option struct { } func (o *Option) SetUseHandlers(ok ...bool) *Option { - o.UseHandlers = utils.OptionalDefaultedBool(true, ok...) + o.UseHandlers = optionutils.BoolOption(ok...) return o } diff --git a/cmds/ocm/commands/ocmcmds/routingslips/common/options.go b/cmds/ocm/commands/ocmcmds/routingslips/common/options.go index a3f3ee1c95..dc6fe1373e 100644 --- a/cmds/ocm/commands/ocmcmds/routingslips/common/options.go +++ b/cmds/ocm/commands/ocmcmds/routingslips/common/options.go @@ -2,9 +2,9 @@ package common import ( "github.com/Masterminds/semver/v3" + "github.com/mandelsoft/goutils/optionutils" "ocm.software/ocm/api/ocm" - "ocm.software/ocm/api/utils" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/lookupoption" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/options/versionconstraintsoption" @@ -47,7 +47,7 @@ func (o verify) ApplyToElemHandler(handler *TypeHandler) { } func WithVerification(flag ...bool) Option { - return verify(utils.OptionalDefaultedBool(true, flag...)) + return verify(optionutils.BoolOption(flag...)) } //////////////////////////////////////////////////////////////////////////////// diff --git a/cmds/ocm/commands/ocmcmds/routingslips/common/typehandler.go b/cmds/ocm/commands/ocmcmds/routingslips/common/typehandler.go index dfaa6fc60b..aa88b601da 100644 --- a/cmds/ocm/commands/ocmcmds/routingslips/common/typehandler.go +++ b/cmds/ocm/commands/ocmcmds/routingslips/common/typehandler.go @@ -4,11 +4,11 @@ import ( "fmt" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/extensions/labels/routingslip" - utils2 "ocm.software/ocm/api/utils" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr" "ocm.software/ocm/cmds/ocm/common/output" "ocm.software/ocm/cmds/ocm/common/utils" @@ -148,7 +148,7 @@ func (h *TypeHandler) all(c *comphdlr.Object) ([]output.Object, error) { Error: err.Error(), }) } else { - for _, n := range utils2.StringMapKeys(slips) { + for _, n := range maputils.OrderedKeys(slips) { s, err := slips.Get(n) if err != nil { return nil, errors.ErrInvalid(routingslip.KIND_ROUTING_SLIP, n) diff --git a/cmds/ocm/commands/ocmcmds/sources/add/cmd_test.go b/cmds/ocm/commands/ocmcmds/sources/add/cmd_test.go index d0a8d8ccfb..a6c374fb0c 100644 --- a/cmds/ocm/commands/ocmcmds/sources/add/cmd_test.go +++ b/cmds/ocm/commands/ocmcmds/sources/add/cmd_test.go @@ -16,7 +16,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/repositories/comparch" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" ) const ( @@ -70,7 +70,7 @@ func CheckTextSource(env *TestEnv, cd *compdesc.ComponentDescriptor, name string dig := rblob.Digest() data, err := rblob.Get() Expect(err).To(Succeed()) - bpath := env.Join(ARCH, comparch.BlobsDirectoryName, common.DigestToFileName(dig)) + bpath := env.Join(ARCH, comparch.BlobsDirectoryName, misc.DigestToFileName(dig)) Expect(env.FileExists(bpath)).To(BeTrue()) Expect(env.ReadFile(bpath)).To(Equal(data)) @@ -81,7 +81,7 @@ func CheckTextSource(env *TestEnv, cd *compdesc.ComponentDescriptor, name string spec, err := env.OCMContext().AccessSpecForSpec(r.Access) Expect(err).To(Succeed()) Expect(spec.GetType()).To(Equal(localblob.Type)) - Expect(spec.(*localblob.AccessSpec).LocalReference).To(Equal(common.DigestToFileName(dig))) + Expect(spec.(*localblob.AccessSpec).LocalReference).To(Equal(misc.DigestToFileName(dig))) Expect(spec.(*localblob.AccessSpec).MediaType).To(Equal(mime.MIME_TEXT)) } diff --git a/cmds/ocm/commands/toicmds/config/bootstrap/cmd.go b/cmds/ocm/commands/toicmds/config/bootstrap/cmd.go index 2e0ba195cb..c431efb7fb 100644 --- a/cmds/ocm/commands/toicmds/config/bootstrap/cmd.go +++ b/cmds/ocm/commands/toicmds/config/bootstrap/cmd.go @@ -6,6 +6,7 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/stringutils" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -19,8 +20,7 @@ import ( "ocm.software/ocm/api/ocm/resourcerefs" "ocm.software/ocm/api/ocm/tools/toi" "ocm.software/ocm/api/ocm/tools/toi/install" - utils3 "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/api/utils/runtime" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" @@ -155,7 +155,7 @@ type Binary struct { func (a *action) Out() error { cv := a.data[0].ComponentVersion - nv := common.VersionedElementKey(cv) + nv := misc.VersionedElementKey(cv) rid := metav1.NewResourceRef(a.cmd.Id) resolver := lookupoption.From(a.cmd) @@ -173,7 +173,7 @@ func (a *action) Out() error { } if spec.Description != "" { - out.Outf(a.cmd.Context, "\nPackage Description:\n%s\n\n", utils3.IndentLines(spec.Description, " ", false)) + out.Outf(a.cmd.Context, "\nPackage Description:\n%s\n\n", stringutils.IndentLines(spec.Description, " ", false)) } if spec.AdditionalResources == nil { out.Outf(a.cmd.Context, "no configuration templates found for %s in %s\n", ires.Meta().GetName(), nv) @@ -246,7 +246,7 @@ func (a *action) download(kind, path string, cv ocm.ComponentVersionAccess, spec return errors.Wrapf(err, "%s resource", kind) } out.Outf(a.cmd.Context, "downloading %s...\n", kind) - ok, _, err := download.For(a.cmd.Context).DownloadAsBlob(common.NewPrinter(a.cmd.StdOut()), res, path, a.cmd.FileSystem()) + ok, _, err := download.For(a.cmd.Context).DownloadAsBlob(misc.NewPrinter(a.cmd.StdOut()), res, path, a.cmd.FileSystem()) if err != nil { return err } diff --git a/cmds/ocm/commands/toicmds/package/bootstrap/cmd.go b/cmds/ocm/commands/toicmds/package/bootstrap/cmd.go index 084ae99909..8a37063393 100644 --- a/cmds/ocm/commands/toicmds/package/bootstrap/cmd.go +++ b/cmds/ocm/commands/toicmds/package/bootstrap/cmd.go @@ -4,6 +4,8 @@ import ( "fmt" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" + "github.com/mandelsoft/goutils/optionutils" "github.com/mandelsoft/vfs/pkg/vfs" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -17,10 +19,9 @@ import ( "ocm.software/ocm/api/ocm/tools/toi/drivers/docker" "ocm.software/ocm/api/ocm/tools/toi/drivers/filesystem" "ocm.software/ocm/api/ocm/tools/toi/install" - utils2 "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/listformat" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/api/utils/runtime" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" @@ -147,7 +148,7 @@ for the parameter and credentials file using the command ocm bootstrap conf Using the option --config it is possible to configure options for the execution environment (so far only docker is supported). The following options are possible: -` + listformat.FormatListElements("", listformat.StringElementList(utils2.StringMapKeys(docker.Options))) + ` +` + listformat.FormatListElements("", listformat.StringElementList(maputils.OrderedKeys(docker.Options))) + ` Using the option --create-env <toi root folder> it is possible to create a local execution environment for an executor according to the executor @@ -195,7 +196,7 @@ func (o *Command) Complete(args []string) error { } o.Id = id if len(o.CredentialsFile) > 0 { - data, err := utils2.ReadFile(o.CredentialsFile, o.Context.FileSystem()) + data, err := optionutils.ReadFile(o.CredentialsFile, o.Context.FileSystem()) if err != nil { return errors.Wrapf(err, "failed reading credentials file %q", o.CredentialsFile) } @@ -207,7 +208,7 @@ func (o *Command) Complete(args []string) error { } } if len(o.ParameterFile) > 0 { - data, err := utils2.ReadFile(o.ParameterFile, o.Context.FileSystem()) + data, err := optionutils.ReadFile(o.ParameterFile, o.Context.FileSystem()) if err != nil { return errors.Wrapf(err, "failed reading parameter file %q", o.ParameterFile) } @@ -280,8 +281,8 @@ func (a *action) Out() error { } } - common.NewPrinter(a.cmd.StdOut()) - result, err := install.Execute(common.NewPrinter(a.cmd.StdOut()), driver, a.cmd.Action, a.cmd.Id, a.cmd.Credentials, a.cmd.Parameters, a.cmd.OCMContext(), a.data[0].ComponentVersion, lookupoption.From(a.cmd)) + misc.NewPrinter(a.cmd.StdOut()) + result, err := install.Execute(misc.NewPrinter(a.cmd.StdOut()), driver, a.cmd.Action, a.cmd.Id, a.cmd.Credentials, a.cmd.Parameters, a.cmd.OCMContext(), a.data[0].ComponentVersion, lookupoption.From(a.cmd)) if err != nil { return err } diff --git a/cmds/ocm/commands/toicmds/package/describe/cmd.go b/cmds/ocm/commands/toicmds/package/describe/cmd.go index 99ed640351..97405e6616 100644 --- a/cmds/ocm/commands/toicmds/package/describe/cmd.go +++ b/cmds/ocm/commands/toicmds/package/describe/cmd.go @@ -5,6 +5,8 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" + "github.com/mandelsoft/goutils/stringutils" "github.com/spf13/cobra" clictx "ocm.software/ocm/api/cli" @@ -15,8 +17,7 @@ import ( "ocm.software/ocm/api/ocm/resourcerefs" "ocm.software/ocm/api/ocm/tools/toi" "ocm.software/ocm/api/ocm/tools/toi/install" - utils3 "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/out" ocmcommon "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common" "ocm.software/ocm/cmds/ocm/commands/ocmcmds/common/handlers/comphdlr" @@ -135,7 +136,7 @@ func (a *action) Out() error { if i > 0 { a.Outf("\n") } - nv := common.VersionedElementKey(a.data[i].ComponentVersion) + nv := misc.VersionedElementKey(a.data[i].ComponentVersion) err := a.describe(a.data[i].ComponentVersion) if err != nil { out.Errf(a.cmd.Context, "%s: %s\n", nv, err) @@ -158,7 +159,7 @@ type einfo struct { } func (a *action) describe(cv ocm.ComponentVersionAccess) error { - nv := common.VersionedElementKey(cv) + nv := misc.VersionedElementKey(cv) rid := metav1.NewResourceRef(a.cmd.Id) resolver := lookupoption.From(a.cmd) @@ -177,12 +178,12 @@ func (a *action) describe(cv ocm.ComponentVersionAccess) error { a.Outf("TOI Package %s[%s]\n", nv, ires.Meta().GetName()) if spec.Description != "" { - a.Outf(" Package Description:\n%s\n\n", utils3.IndentLines(strings.TrimSpace(spec.Description), " ", false)) + a.Outf(" Package Description:\n%s\n\n", stringutils.IndentLines(strings.TrimSpace(spec.Description), " ", false)) } if len(spec.AdditionalResources) == 0 { a.Outf(" no additional resources found\n") } else { - keys := utils3.StringMapKeys(spec.AdditionalResources) + keys := maputils.OrderedKeys(spec.AdditionalResources) a.Outf(" Additional Resources:\n") for _, k := range keys { switch k { @@ -223,14 +224,14 @@ func (a *action) describe(cv ocm.ComponentVersionAccess) error { if len(actions) == 0 { a.Outf(" Warning: no actions defined\n") } else { - keys := utils3.StringMapKeys(actions) + keys := maputils.OrderedKeys(actions) a.Outf(" Supported Actions:\n") for _, k := range keys { info := actions[k] exec := spec.Executors[info.index] out.Outf(a.cmd.Context, " - %s: provided by %s\n", k, exec.Name()) if len(exec.CredentialMapping) > 0 { - ckeys := utils3.StringMapKeys(exec.CredentialMapping) + ckeys := maputils.OrderedKeys(exec.CredentialMapping) out.Outf(a.cmd.Context, " credential key mappings\n") for _, c := range ckeys { out.Outf(a.cmd.Context, " - %s: %s\n", c, exec.CredentialMapping[c]) @@ -241,7 +242,7 @@ func (a *action) describe(cv ocm.ComponentVersionAccess) error { if len(spec.Credentials) == 0 { a.Outf(" no credentials required\n") } else { - keys := utils3.StringMapKeys(spec.Credentials) + keys := maputils.OrderedKeys(spec.Credentials) a.Outf(" Required Credentials:\n") for _, k := range keys { cred := spec.Credentials[k] @@ -250,15 +251,15 @@ func (a *action) describe(cv ocm.ComponentVersionAccess) error { opt = " (optional)" } out.Outf(a.cmd.Context, " - %s%s\n", k, opt) - out.Outf(a.cmd.Context, " description: %s\n", utils3.IndentLines(strings.TrimSpace(cred.Description), " ", true)) + out.Outf(a.cmd.Context, " description: %s\n", stringutils.IndentLines(strings.TrimSpace(cred.Description), " ", true)) if len(cred.ConsumerId) != 0 { out.Outf(a.cmd.Context, " used as consumer id: %s\n", cred.ConsumerId) } if len(cred.Properties) != 0 { - ckeys := utils3.StringMapKeys(cred.Properties) + ckeys := maputils.OrderedKeys(cred.Properties) out.Outf(a.cmd.Context, " required properties:\n") for _, c := range ckeys { - out.Outf(a.cmd.Context, " - %s: %s\n", c, utils3.IndentLines(strings.TrimSpace(cred.Properties[c]), " ", true)) + out.Outf(a.cmd.Context, " - %s: %s\n", c, stringutils.IndentLines(strings.TrimSpace(cred.Properties[c]), " ", true)) } } } diff --git a/cmds/ocm/common/output/complexoutput.go b/cmds/ocm/common/output/complexoutput.go index 144a81c288..70b3bb1ac0 100644 --- a/cmds/ocm/common/output/complexoutput.go +++ b/cmds/ocm/common/output/complexoutput.go @@ -6,9 +6,9 @@ import ( . "ocm.software/ocm/api/utils/out" . "ocm.software/ocm/cmds/ocm/common/processing" + "github.com/mandelsoft/goutils/stringutils" "sigs.k8s.io/yaml" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/runtime" ) @@ -73,16 +73,16 @@ func (this *ComplexProcessingOutput) out(gap string, m map[string]interface{}) { Outf(this.Context, "%s%s:\n", gap, k) s, err := yaml.Marshal(v) if err == nil { - utils.IndentLines(string(s), gap) + stringutils.IndentLines(string(s), gap) } default: - eff := utils.IndentLines(fmt.Sprintf("%v", v), gap+" ") + eff := stringutils.IndentLines(fmt.Sprintf("%v", v), gap+" ") Outf(this.Context, "%s%s: %s", gap, k, eff[len(gap)+2:]) } } } s, err := yaml.Marshal(rest) if err == nil { - Out(this.Context, utils.IndentLines(string(s), gap)) + Out(this.Context, stringutils.IndentLines(string(s), gap)) } } diff --git a/cmds/ocm/common/output/options.go b/cmds/ocm/common/output/options.go index 4c2fad86e3..e8c25d5c27 100644 --- a/cmds/ocm/common/output/options.go +++ b/cmds/ocm/common/output/options.go @@ -5,13 +5,13 @@ import ( "strings" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/maputils" "github.com/mandelsoft/goutils/sliceutils" "github.com/mandelsoft/logging" "github.com/spf13/pflag" clictx "ocm.software/ocm/api/cli" "ocm.software/ocm/api/ocm" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/listformat" "ocm.software/ocm/cmds/ocm/common/options" "ocm.software/ocm/cmds/ocm/common/processing" @@ -115,7 +115,7 @@ func (o *Options) UseColumnOptimization() bool { func (o *Options) AddFlags(fs *pflag.FlagSet) { s := "" if len(o.Outputs) > 1 { - list := utils.StringMapKeys(o.Outputs) + list := maputils.OrderedKeys(o.Outputs) sep := "" for _, o := range list { if o != "" { @@ -200,7 +200,7 @@ func (o *Options) Usage() string { s += ` With the option --output the output mode can be selected. The following modes are supported: -` + listformat.FormatList(o.OutputMode, utils.StringMapKeys(o.Outputs)...) +` + listformat.FormatList(o.OutputMode, maputils.OrderedKeys(o.Outputs)...) } return s } diff --git a/cmds/ocm/common/output/tableoutput.go b/cmds/ocm/common/output/tableoutput.go index c8cd1881b9..a65a638e4d 100644 --- a/cmds/ocm/common/output/tableoutput.go +++ b/cmds/ocm/common/output/tableoutput.go @@ -6,8 +6,8 @@ import ( . "ocm.software/ocm/cmds/ocm/common/processing" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/general" - "ocm.software/ocm/api/utils" "ocm.software/ocm/api/utils/out" "ocm.software/ocm/api/utils/semverutils" "ocm.software/ocm/cmds/ocm/common/data" @@ -141,7 +141,7 @@ func (this *TableProcessingOutput) Out() error { // if vers is set to true, a semver based comparison is applied, otherwise // a regular string comparison. func compareColumn(c int, vers ...bool) CompareFunction { - if utils.Optional(vers...) { + if general.Optional(vers...) { return _compareColumn(c, semverutils.VersionCache{}.Compare) } else { return _compareColumn(c, strings.Compare) diff --git a/cmds/ocm/common/output/treeoutput.go b/cmds/ocm/common/output/treeoutput.go index b545519c4a..08828a8174 100644 --- a/cmds/ocm/common/output/treeoutput.go +++ b/cmds/ocm/common/output/treeoutput.go @@ -33,7 +33,7 @@ func (f TreeElemTitleFunc) ApplyTreeOutputOption(o *TreeOutputOptions) { type TreeSymbol string func (s TreeSymbol) ApplyTreeOutputOption(o *TreeOutputOptions) { - o.symbol = generics.Pointer(string(s)) + o.symbol = generics.PointerTo(string(s)) } type TreeOutputOptions struct { diff --git a/cmds/ocm/common/tree/tree.go b/cmds/ocm/common/tree/tree.go index 8e4026f11e..6aad3cec02 100644 --- a/cmds/ocm/common/tree/tree.go +++ b/cmds/ocm/common/tree/tree.go @@ -4,13 +4,14 @@ import ( "fmt" "strings" - "ocm.software/ocm/api/utils" - common "ocm.software/ocm/api/utils/misc" + "github.com/mandelsoft/goutils/general" + + "ocm.software/ocm/api/utils/misc" ) type Object interface { - common.HistorySource - IsNode() *common.NameVersion + misc.HistorySource + IsNode() *misc.NameVersion } type Typed interface { @@ -21,7 +22,7 @@ type ValidTreeElement interface { IsValid() bool } -type NodeCreator func(common.History, common.NameVersion) Object +type NodeCreator func(misc.History, misc.NameVersion) Object // TreeObject is an element enriched by a textual // tree graph prefix line. @@ -39,8 +40,8 @@ func (t *TreeObject) String() string { } type TreeNode struct { - common.NameVersion - History common.History + misc.NameVersion + History misc.History CausedBy Object // the object causing the synthesized node to be inserted } @@ -61,7 +62,7 @@ var ( // is not desired, pass an empty symbol string. func MapToTree(objs Objects, creator NodeCreator, symbols ...string) TreeObjects { result := TreeObjects{} - nodeSym := utils.OptionalDefaulted(node, symbols...) + nodeSym := general.OptionalDefaulted(node, symbols...) if nodeSym != "" && !strings.HasPrefix(nodeSym, " ") { nodeSym = " " + nodeSym } @@ -69,8 +70,8 @@ func MapToTree(objs Objects, creator NodeCreator, symbols ...string) TreeObjects return result } -func handleLevel(objs Objects, header string, prefix common.History, start int, creator NodeCreator, result *TreeObjects, nodeSym string) { - var node *common.NameVersion +func handleLevel(objs Objects, header string, prefix misc.History, start int, creator NodeCreator, result *TreeObjects, nodeSym string) { + var node *misc.NameVersion lvl := len(prefix) for i := start; i < len(objs); { var next int diff --git a/cmds/ocm/common/tree/tree_test.go b/cmds/ocm/common/tree/tree_test.go index add8a423a1..b5e2ef186f 100644 --- a/cmds/ocm/common/tree/tree_test.go +++ b/cmds/ocm/common/tree/tree_test.go @@ -6,25 +6,25 @@ import ( . "github.com/onsi/ginkgo/v2" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/cmds/ocm/common/tree" ) type Elem struct { - common.History + misc.History Node bool Data string } var _ tree.Object = (*Elem)(nil) -func (e *Elem) GetHistory() common.History { +func (e *Elem) GetHistory() misc.History { return e.History } -func (e *Elem) IsNode() *common.NameVersion { +func (e *Elem) IsNode() *misc.NameVersion { if e.Node { - n := common.NewNameVersion(e.Data, "") + n := misc.NewNameVersion(e.Data, "") return &n } return nil @@ -43,25 +43,25 @@ func (e *Invalid) IsValid() bool { } func I(hist ...string) *Invalid { - h := common.History{} + h := misc.History{} for _, v := range hist { - h = append(h, common.NewNameVersion(v, "")) + h = append(h, misc.NewNameVersion(v, "")) } return &Invalid{Elem{h, false, ""}} } func E(d string, hist ...string) *Elem { - h := common.History{} + h := misc.History{} for _, v := range hist { - h = append(h, common.NewNameVersion(v, "")) + h = append(h, misc.NewNameVersion(v, "")) } return &Elem{h, false, d} } func N(d string, hist ...string) *Elem { - h := common.History{} + h := misc.History{} for _, v := range hist { - h = append(h, common.NewNameVersion(v, "")) + h = append(h, misc.NewNameVersion(v, "")) } return &Elem{h, true, d} } diff --git a/examples/lib/comparison-scenario/00-consumer.go b/examples/lib/comparison-scenario/00-consumer.go index b1b346722b..f1c06cb90c 100644 --- a/examples/lib/comparison-scenario/00-consumer.go +++ b/examples/lib/comparison-scenario/00-consumer.go @@ -11,11 +11,11 @@ import ( metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/ocm/extensions/download" "ocm.software/ocm/api/ocm/extensions/repositories/ocireg" - ocmutils "ocm.software/ocm/api/ocm/ocmutils" + "ocm.software/ocm/api/ocm/ocmutils" "ocm.software/ocm/api/ocm/tools/signing" "ocm.software/ocm/api/ocm/tools/transfer" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/tarutils" "ocm.software/ocm/examples/lib/helper" ) @@ -43,7 +43,7 @@ func TransportTo(target ocm.Repository, src string) error { err = transfer.Transfer(cv, target, standard.ResourcesByValue(), standard.Overwrite(), - transfer.WithPrinter(common.StdoutPrinter)) + transfer.WithPrinter(misc.StdoutPrinter)) if err != nil { return errors.Wrapf(err, "transfer failed") } diff --git a/examples/lib/comparison-scenario/04-transport.go b/examples/lib/comparison-scenario/04-transport.go index 033fc75e95..53c678fb32 100644 --- a/examples/lib/comparison-scenario/04-transport.go +++ b/examples/lib/comparison-scenario/04-transport.go @@ -9,7 +9,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/repositories/ocireg" "ocm.software/ocm/api/ocm/tools/transfer" "ocm.software/ocm/api/ocm/tools/transfer/transferhandler/standard" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/examples/lib/helper" ) @@ -60,7 +60,7 @@ func TransportComponentVersion(ctx ocm.Context, cfg *helper.Config) error { err = transfer.Transfer(cv, target, standard.ResourcesByValue(), standard.Overwrite(), - transfer.WithPrinter(common.StdoutPrinter)) + transfer.WithPrinter(misc.StdoutPrinter)) if err != nil { return errors.Wrapf(err, "transfer failed") } diff --git a/examples/lib/comparison-scenario/09-localize.go b/examples/lib/comparison-scenario/09-localize.go index d6f4a7ccd6..b94d996804 100644 --- a/examples/lib/comparison-scenario/09-localize.go +++ b/examples/lib/comparison-scenario/09-localize.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/mandelsoft/goutils/errors" + "github.com/mandelsoft/goutils/stringutils" "github.com/mandelsoft/vfs/pkg/memoryfs" "github.com/mandelsoft/vfs/pkg/vfs" "helm.sh/helm/v3/pkg/chart" @@ -150,13 +151,13 @@ func Localize(cfg *helper.Config, config template.Values, release, namespace str fmt.Printf(" - %s\n", f) } desc, _ := runtime.ToYAML(chart.Metadata) - fmt.Printf("chart meta data:\n%s\n", utils.IndentLines(string(desc), " ", false)) + fmt.Printf("chart meta data:\n%s\n", stringutils.IndentLines(string(desc), " ", false)) yamlvalues, err := runtime.ToYAML(values) if err != nil { return errors.Wrapf(err, "invalid values") } - fmt.Printf("localized and configured values:\n%s\n", utils.IndentLines(string(yamlvalues), " ", false)) + fmt.Printf("localized and configured values:\n%s\n", stringutils.IndentLines(string(yamlvalues), " ", false)) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // installation diff --git a/examples/lib/example.go b/examples/lib/example.go index d0e4c3ddcf..27e2ff890d 100644 --- a/examples/lib/example.go +++ b/examples/lib/example.go @@ -3,11 +3,12 @@ package main import ( "fmt" + "github.com/mandelsoft/goutils/stringutils" + "ocm.software/ocm/api/ocm" "ocm.software/ocm/api/ocm/compdesc" metav1 "ocm.software/ocm/api/ocm/compdesc/meta/v1" "ocm.software/ocm/api/ocm/extensions/repositories/ocireg" - "ocm.software/ocm/api/utils" ) const ( @@ -62,7 +63,7 @@ func MyFirstOCMApplication() error { return err } - fmt.Printf(" content:\n%s\n", utils.IndentLines(string(data), " ")) + fmt.Printf(" content:\n%s\n", stringutils.IndentLines(string(data), " ")) return nil } diff --git a/examples/lib/tour/01-getting-started/example.go b/examples/lib/tour/01-getting-started/example.go index dbd69cc38b..104d8db59d 100644 --- a/examples/lib/tour/01-getting-started/example.go +++ b/examples/lib/tour/01-getting-started/example.go @@ -15,7 +15,7 @@ import ( "ocm.software/ocm/api/ocm/extensions/repositories/ocireg" "ocm.software/ocm/api/ocm/extraid" utils "ocm.software/ocm/api/ocm/ocmutils" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/semverutils" ) @@ -232,7 +232,7 @@ func GettingStarted() error { // The executable downloader is registered by default and automatically // sets the `X `flag for the written file. // --- begin download --- - _, err = download.DownloadResource(ctx, res, "/tmp/ocmcli", download.WithPrinter(common.NewPrinter(os.Stdout))) + _, err = download.DownloadResource(ctx, res, "/tmp/ocmcli", download.WithPrinter(misc.NewPrinter(os.Stdout))) if err != nil { return errors.Wrapf(err, "download failed") } diff --git a/examples/lib/tour/02-composing-a-component-version/01-basic-componentversion-creation.go b/examples/lib/tour/02-composing-a-component-version/01-basic-componentversion-creation.go index 04c69aa0c6..e5a86869e6 100644 --- a/examples/lib/tour/02-composing-a-component-version/01-basic-componentversion-creation.go +++ b/examples/lib/tour/02-composing-a-component-version/01-basic-componentversion-creation.go @@ -17,7 +17,7 @@ import ( ctfocm "ocm.software/ocm/api/ocm/extensions/repositories/ctf" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/semverutils" ) @@ -199,7 +199,7 @@ data: some very important data required to understand this component return errors.Wrapf(err, "invalid resource meta") } res := dockermultiblob.ResourceAccess(cv.GetContext(), meta, - dockermultiblob.WithPrinter(common.StdoutPrinter), + dockermultiblob.WithPrinter(misc.StdoutPrinter), dockermultiblob.WithHint("ocm.software/ocmci"), dockermultiblob.WithVersion(current_version), dockermultiblob.WithVariants( @@ -317,7 +317,7 @@ func listVersions(repo ocm.Repository, list ...string) error { if err != nil { return errors.Wrapf(err, "cannot get latest version for %s", name) } - nested.Close(cv, "component version", common.VersionedElementKey(cv).String()) + nested.Close(cv, "component version", misc.VersionedElementKey(cv).String()) nested.Finalize() } diff --git a/examples/lib/tour/03-working-with-credentials/common.go b/examples/lib/tour/03-working-with-credentials/common.go index aa2f05fafa..6f15d6031e 100644 --- a/examples/lib/tour/03-working-with-credentials/common.go +++ b/examples/lib/tour/03-working-with-credentials/common.go @@ -17,7 +17,7 @@ import ( resourcetypes "ocm.software/ocm/api/ocm/extensions/artifacttypes" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/semverutils" ) @@ -156,7 +156,7 @@ data: some very important data required to understand this component return errors.Wrapf(err, "invalid resource meta") } res := dockermultiblob.ResourceAccess(cv.GetContext(), meta, - dockermultiblob.WithPrinter(common.StdoutPrinter), + dockermultiblob.WithPrinter(misc.StdoutPrinter), dockermultiblob.WithHint("ocm.software/ocmci"), dockermultiblob.WithVersion(current_version), dockermultiblob.WithVariants( @@ -272,14 +272,14 @@ func listVersions(repo ocm.Repository, list ...string) error { if err != nil { return errors.Wrapf(err, "cannot get latest version for %s", name) } - nested.Close(cv, "component version", common.VersionedElementKey(cv).String()) + nested.Close(cv, "component version", misc.VersionedElementKey(cv).String()) nested.Finalize() } return nil } -func obfuscate(props common.Properties) string { +func obfuscate(props misc.Properties) string { if pw, ok := props[credentials.ATTR_PASSWORD]; ok { if len(pw) > 5 { pw = pw[:5] + "***" diff --git a/examples/lib/tour/05-transporting-component-versions/common.go b/examples/lib/tour/05-transporting-component-versions/common.go index b05dcebe2c..b552213578 100644 --- a/examples/lib/tour/05-transporting-component-versions/common.go +++ b/examples/lib/tour/05-transporting-component-versions/common.go @@ -16,7 +16,7 @@ import ( resourcetypes "ocm.software/ocm/api/ocm/extensions/artifacttypes" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/semverutils" ) @@ -155,7 +155,7 @@ data: some very important data required to understand this component return errors.Wrapf(err, "invalid resource meta") } res := dockermultiblob.ResourceAccess(cv.GetContext(), meta, - dockermultiblob.WithPrinter(common.StdoutPrinter), + dockermultiblob.WithPrinter(misc.StdoutPrinter), dockermultiblob.WithHint("ocm.software/ocmci"), dockermultiblob.WithVersion(current_version), dockermultiblob.WithVariants( @@ -269,7 +269,7 @@ func listVersions(repo ocm.Repository, list ...string) error { if err != nil { return errors.Wrapf(err, "cannot get latest version for %s", name) } - nested.Close(cv, "component version", common.VersionedElementKey(cv).String()) + nested.Close(cv, "component version", misc.VersionedElementKey(cv).String()) nested.Finalize() } diff --git a/examples/lib/tour/06-signing-component-versions/common.go b/examples/lib/tour/06-signing-component-versions/common.go index f7c04737b9..a7ab02720c 100644 --- a/examples/lib/tour/06-signing-component-versions/common.go +++ b/examples/lib/tour/06-signing-component-versions/common.go @@ -21,7 +21,7 @@ import ( "ocm.software/ocm/api/tech/signing/signutils" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/api/utils/semverutils" "ocm.software/ocm/examples/lib/helper" ) @@ -161,7 +161,7 @@ data: some very important data required to understand this component return errors.Wrapf(err, "invalid resource meta") } res := dockermultiblob.ResourceAccess(cv.GetContext(), meta, - dockermultiblob.WithPrinter(common.StdoutPrinter), + dockermultiblob.WithPrinter(misc.StdoutPrinter), dockermultiblob.WithHint("ocm.software/ocmci"), dockermultiblob.WithVersion(current_version), dockermultiblob.WithVariants( @@ -296,7 +296,7 @@ func listVersions(repo ocm.Repository, list ...string) error { if err != nil { return errors.Wrapf(err, "cannot get latest version for %s", name) } - nested.Close(cv, "component version", common.VersionedElementKey(cv).String()) + nested.Close(cv, "component version", misc.VersionedElementKey(cv).String()) nested.Finalize() } diff --git a/examples/lib/transfer1/example.go b/examples/lib/transfer1/example.go index fd92781d84..a7bb115063 100644 --- a/examples/lib/transfer1/example.go +++ b/examples/lib/transfer1/example.go @@ -22,7 +22,7 @@ import ( "ocm.software/ocm/api/utils/accessobj" "ocm.software/ocm/api/utils/blobaccess" "ocm.software/ocm/api/utils/mime" - common "ocm.software/ocm/api/utils/misc" + "ocm.software/ocm/api/utils/misc" "ocm.software/ocm/examples/lib/helper" ) @@ -147,7 +147,7 @@ func TransferApplication() (rerr error) { return errors.Wrapf(err, "cannot list components") } - printer := common.NewPrinter(os.Stdout) + printer := misc.NewPrinter(os.Stdout) // gather transferred component versions // especially for transitive transports this should be // shared among multiple calls to TransferVersion to avoid diff --git a/go.mod b/go.mod index aab182ff4d..75643bc6d0 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/klauspost/compress v1.18.0 github.com/klauspost/pgzip v1.2.6 github.com/mandelsoft/filepath v0.0.0-20240223090642-3e2777258aa3 - github.com/mandelsoft/goutils v0.0.0-20241005173814-114fa825bbdc + github.com/mandelsoft/goutils v0.0.0-20250429160702-e623eb053914 github.com/mandelsoft/logging v0.0.0-20240618075559-fdca28a87b0a github.com/mandelsoft/spiff v1.7.0-beta-7 github.com/mandelsoft/vfs v0.4.4 diff --git a/go.sum b/go.sum index ad1cf45a22..1a3cd2daba 100644 --- a/go.sum +++ b/go.sum @@ -892,8 +892,8 @@ github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4 github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mandelsoft/filepath v0.0.0-20240223090642-3e2777258aa3 h1:oo9nIgnyiBgYPbcZslRT4y29siuL5EoNJ/t1tr0xEVQ= github.com/mandelsoft/filepath v0.0.0-20240223090642-3e2777258aa3/go.mod h1:LxhqC7khDoRENwooP6f/vWvia9ivj6TqLYrR39zqkN0= -github.com/mandelsoft/goutils v0.0.0-20241005173814-114fa825bbdc h1:706IHCvAg6DjmG4cQ24CRNpvNVJ8+KQkcGEdQiLyJbU= -github.com/mandelsoft/goutils v0.0.0-20241005173814-114fa825bbdc/go.mod h1:9TJgkwSY43RWHiIAAz7fL8SEIHf0L13Pk4w8fDIt+i4= +github.com/mandelsoft/goutils v0.0.0-20250429160702-e623eb053914 h1:ItIkvN3QLec7J88ZVi38YWhje3+G6aKDYupKIGKTXag= +github.com/mandelsoft/goutils v0.0.0-20250429160702-e623eb053914/go.mod h1:UeYhFI0gRoiTcmZH7VD/Oy5dYz4O8vyOv5tsiBTEUPo= github.com/mandelsoft/logging v0.0.0-20240618075559-fdca28a87b0a h1:MAvh0gbP2uwKmf7wWCkYCzrYa6vPjBvYeGhoUlVHwtI= github.com/mandelsoft/logging v0.0.0-20240618075559-fdca28a87b0a/go.mod h1:uO460C1lIB3IOOgrbXhAlz3AKsOv4T2K6ALBn3PwuSg= github.com/mandelsoft/spiff v1.7.0-beta-7 h1:ow8hgn7A80RlgsN2wjVpwl/7HSObzw3ph3m4vay7KZs=