// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package fetch

import "golang.org/x/mod/module"

// knownAlternatives lists module paths that are known to be forks of other
// modules.
// For example, github.com/msopentech/azure-sdk-for-go
// is an alternative to github.com/Azure/azure-sdk-for-go.
// Map keys are case-sensitive and should not include a final major version
// like "/v3" or ".v3" for gopkg.in paths.
//
// When a module has a go.mod file, we can detect alternatives by comparing the
// module path with the path in the go.mod file. This list is for modules
// without go.mod files.
var knownAlternatives = map[string]string{
	"github.com/Azure/Azure-sdk-for-go":                "github.com/Azure/azure-sdk-for-go",
	"github.com/azure/azure-sdk-for-go":                "github.com/Azure/azure-sdk-for-go",
	"github.com/evenh/azure-sdk-for-go":                "github.com/Azure/azure-sdk-for-go",
	"github.com/msopentech/azure-sdk-for-go":           "github.com/Azure/azure-sdk-for-go",
	"github.com/MSOpenTech/azure-sdk-for-go":           "github.com/Azure/azure-sdk-for-go",
	"github.com/scott-the-programmer/azure-sdk-for-go": "github.com/Azure/azure-sdk-for-go",
	"gopkg.in/Azure/azure-sdk-for-go":                  "github.com/Azure/azure-sdk-for-go",
	"gopkg.in/azure/azure-sdk-for-go":                  "github.com/Azure/azure-sdk-for-go",
	"github.com/masslessparticle/azure-sdk-for-go":     "github.com/Azure/azure-sdk-for-go",
	"github.com/aliyun/alibaba-cloud-sdk-go":           "github.com/Azure/azure-sdk-for-go",
	"github.com/johnstairs/azure-sdk-for-go	": "github.com/Azure/azure-sdk-for-go",
	"github.com/shopify/sarama": "github.com/Shopify/sarama",
}

// knownAlternativeFor returns the module that the given module path is an alternative to,
// or the empty string if there is no such module.
//
// It consults the knownAlternatives map, ignoring version suffixes.
func knownAlternativeFor(modulePath string) string {
	key, _, ok := module.SplitPathVersion(modulePath)
	if !ok {
		return ""
	}
	return knownAlternatives[key]
}
