func CreatePlan(ctx context.Context, inputPath, outputPath string, customizationsPath, prjName string) plantypes.Plan {
	logrus.Debugf("Temp Dir : %s", common.TempPath)
	p := plantypes.NewPlan()
	p.Name = prjName
	p.Spec.RootDir = inputPath
	p.Spec.CustomizationsDir = customizationsPath
	if customizationsPath != "" {
		common.CheckAndCopyCustomizations(customizationsPath)
	}
	logrus.Infoln("Loading Configuration")
	configurationLoaders := configuration.GetLoaders()
	for _, l := range configurationLoaders {
		logrus.Infof("[%T] Loading configuration", l)
		err := l.UpdatePlan(&p)
		if err != nil {
			logrus.Warnf("[%T] Failed : %s", l, err)
		} else {
			logrus.Infof("[%T] Done", l)
		}
	}
	tc, err := (&configuration.ClusterMDLoader{}).GetTargetClusterMetadataForPlan(p)
	if err != nil {
		logrus.Errorf("Unable to load cluster metadata : %s", err)
	}
	transformer.Init(common.AssetsPath, inputPath, tc, outputPath, p.Name)
	ts := transformer.GetTransformers()
	for tn, t := range ts {
		config, _ := t.GetConfig()
		p.Spec.Configuration.Transformers[tn] = config.Spec.FilePath
	}
	logrus.Infoln("Configuration loading done")
	p.Spec.Services, err = transformer.GetServices(p.Name, inputPath)
	if err != nil {
		logrus.Errorf("Unable to create plan : %s", err)
	}
	logrus.Infof("No of services identified : %d", len(p.Spec.Services))
	return p
}
CreatePlan creates the plan from all planners
package lib
import (
	"context"
	"github.com/konveyor/move2kube/common"
	"github.com/konveyor/move2kube/configuration"
	"github.com/konveyor/move2kube/qaengine"
	"github.com/konveyor/move2kube/transformer"
	plantypes "github.com/konveyor/move2kube/types/plan"
	transformertypes "github.com/konveyor/move2kube/types/transformer"
	"github.com/sirupsen/logrus"
)