func GetModelInfoFromLocalIndex()

in coverage/index.go [196:238]


func GetModelInfoFromLocalIndex(resourceId, apiVersion, method, swaggerRepo, indexCacheFile string) (*SwaggerModel, error) {
	swaggerRepo, err := filepath.Abs(swaggerRepo)
	if err != nil {
		return nil, fmt.Errorf("swagger repo path %q is invalid: %+v", swaggerRepo, err)
	}

	if _, err := os.Stat(swaggerRepo); os.IsNotExist(err) {
		return nil, fmt.Errorf("swagger repo path %q is invalid: path does not exist", swaggerRepo)
	}

	swaggerRepo = strings.TrimSuffix(swaggerRepo, "/")

	if !strings.HasSuffix(swaggerRepo, "specification") {
		return nil, fmt.Errorf("swagger repo path %q is invalid: must point to \"specification\", e.g., /home/projects/azure-rest-api-specs/specification", swaggerRepo)
	}

	swaggerRepo += "/"

	index, err := GetIndexFromLocalDir(swaggerRepo, indexCacheFile)
	if err != nil {
		return nil, fmt.Errorf("build index from local dir %s: %+v", swaggerRepo, err)
	}

	resourceURL := fmt.Sprintf("https://management.azure.com%s?api-version=%s", resourceId, apiVersion)
	uRL, err := url.Parse(resourceURL)
	if err != nil {
		return nil, fmt.Errorf("parsing URL %s: %+v", resourceURL, err)
	}
	ref, err := index.Lookup(method, *uRL)
	if err != nil {
		return nil, fmt.Errorf("lookup %s URL %s in index: %+v", method, resourceURL, err)
	}

	model, err := GetModelInfoFromIndexRef(openapispec.Ref{Ref: *ref}, swaggerRepo)
	if err != nil {
		return nil, fmt.Errorf("get model %s: %+v", ref, err)
	}
	if model.ModelName == "" {
		return nil, fmt.Errorf("PUT model not found for %s", ref.String())
	}

	return model, nil
}