mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-20 02:09:26 -05:00
54 lines
2.1 KiB
Go
54 lines
2.1 KiB
Go
// Copyright (c) The OpenTofu Authors
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
// Copyright (c) 2023 HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/opentofu/opentofu/internal/depsrccfgs"
|
|
"github.com/opentofu/opentofu/internal/getmodules"
|
|
)
|
|
|
|
func remoteModulePackageFetcher(ctx context.Context, getOCICredsPolicy ociCredsPolicyBuilder) *getmodules.PackageFetcher {
|
|
// TODO: Pass in a real getmodules.PackageFetcherEnvironment here,
|
|
// which knows how to make use of the OCI authentication policy.
|
|
return getmodules.NewPackageFetcher(ctx, &modulePackageFetcherEnvironment{
|
|
getOCICredsPolicy: getOCICredsPolicy,
|
|
})
|
|
}
|
|
|
|
type modulePackageFetcherEnvironment struct {
|
|
getOCICredsPolicy ociCredsPolicyBuilder
|
|
}
|
|
|
|
// OCIRepositoryStore implements getmodules.PackageFetcherEnvironment.
|
|
func (m *modulePackageFetcherEnvironment) OCIRepositoryStore(ctx context.Context, registryDomainName string, repositoryPath string) (getmodules.OCIRepositoryStore, error) {
|
|
// We intentionally delay the finalization of the credentials policy until
|
|
// just before we need it because most OpenTofu commands don't install
|
|
// module packages at all, and even those that do only need to do this if
|
|
// using the "oci" source type, so we can avoid doing this work at all
|
|
// most of the time.
|
|
credsPolicy, err := m.getOCICredsPolicy(ctx)
|
|
if err != nil {
|
|
// This deals with only a small number of errors that we can't catch during CLI config validation
|
|
return nil, fmt.Errorf("invalid credentials configuration for OCI registries: %w", err)
|
|
}
|
|
return getOCIRepositoryStore(ctx, registryDomainName, repositoryPath, credsPolicy)
|
|
}
|
|
|
|
func modulePkgDepMappingOverrides(mainFetcher *getmodules.PackageFetcher, configs []*depsrccfgs.Config) *getmodules.PackageFetcher {
|
|
for _, config := range configs {
|
|
if len(config.SourcePackageRules) != 0 {
|
|
panic("source package overrides are not implemented in this prototype")
|
|
}
|
|
}
|
|
// We'll just return what we were given right now, since the module
|
|
// installation infrastructure isn't yet suitable to deal with this
|
|
// extra level of configuration.
|
|
return mainFetcher
|
|
}
|