func ReadAuditFromFile(fileName string) AuditData {
	auditData := AuditData{}
	oldFileBytes, err := ioutil.ReadFile(fileName)
	if err != nil {
		logrus.Errorf("Unable to read contents of loaded file: %v", err)
		os.Exit(1)
	}
	auditData, err = ParseAudit(oldFileBytes)
	if err != nil {
		logrus.Errorf("Error parsing file contents into auditData: %v", err)
		os.Exit(1)
	}
	return auditData
}
ReadAuditFromFile reads the data from a past audit stored in a JSON or YAML file.
package validator
import (
	"bytes"
	"fmt"
	"io"
	"io/ioutil"
	"os"
	"time"
	conf "github.com/fairwindsops/polaris/pkg/config"
	"github.com/fairwindsops/polaris/pkg/kube"
	"github.com/sirupsen/logrus"
	apiMachineryYAML "k8s.io/apimachinery/pkg/util/yaml"
)
func RunAudit(config conf.Configuration, kubeResources *kube.ResourceProvider) (AuditData, error) {
	displayName := config.DisplayName
	if displayName == "" {
		displayName = kubeResources.SourceName
	}
	results, err := ApplyAllSchemaChecksToResourceProvider(&config, kubeResources)
	if err != nil {
		return AuditData{}, err
	}
	auditData := AuditData{
		PolarisOutputVersion: PolarisOutputVersion,
		AuditTime:            kubeResources.CreationTime.Format(time.RFC3339),
		SourceType:           kubeResources.SourceType,
		SourceName:           kubeResources.SourceName,
		DisplayName:          displayName,
		ClusterInfo: ClusterInfo{
			Version:     kubeResources.ServerVersion,
			Nodes:       len(kubeResources.Nodes),
			Namespaces:  len(kubeResources.Namespaces),
			Controllers: kubeResources.Resources.GetNumberOfControllers(),
		},
		Results: results,
	}
	auditData.Score = auditData.GetSummary().GetScore()
	return auditData, nil
}