func LoadFromOrNew()

in pkg/instancetypes/instancetypes.go [64:90]


func LoadFromOrNew(directoryPath string, region string, ttl time.Duration, ec2Client ec2.DescribeInstanceTypesAPIClient) (*Provider, error) {
	expandedDirPath, err := homedir.Expand(directoryPath)
	if err != nil {
		return nil, fmt.Errorf("unable to load instance-type cache directory %s: %w", expandedDirPath, err)
	}
	if ttl <= 0 {
		provider := NewProvider(region, ec2Client)
		if err := provider.Clear(); err != nil {
			return nil, err
		}
		return provider, nil
	}
	itCache, err := loadFrom(ttl, region, expandedDirPath)
	if err != nil && !os.IsNotExist(err) {
		return nil, fmt.Errorf("unable to load instance-type cache from %s: %w", expandedDirPath, err)
	}
	if err != nil {
		itCache = cache.New(0, 0)
	}
	return &Provider{
		Region:        region,
		DirectoryPath: expandedDirPath,
		ec2Client:     ec2Client,
		cache:         itCache,
		logger:        log.New(io.Discard, "", 0),
	}, nil
}