public List <SolutionImportResult> ImportSolutions(
            string logsFolder,
            string configFilePath)
        {
            if (!Directory.Exists(logsFolder))
            {
                throw new Exception($"{logsFolder} does not exist");
            }

            if (!File.Exists(configFilePath))
            {
                throw new Exception($"{configFilePath} does not exist");
            }

            Logger.LogVerbose("Parsing import json file {0}", configFilePath);

            SolutionImportConfig config =
                Serializers.ParseJson <SolutionImportConfig>(configFilePath);

            Logger.LogVerbose("Finished parsing import json file {0}", configFilePath);

            Logger.LogVerbose("{0} solution for import found", config.Solutions.Count);

            FileInfo configInfo = new FileInfo(configFilePath);

            List <SolutionImportResult> results = ImportSolutions(
                configInfo.Directory.FullName,
                logsFolder,
                config);

            return(results);
        }
        public List <bool> PackSolutions(
            string solutionPackager,
            string outputFolder,
            string configFilePath,
            string logsDirectory)
        {
            if (!File.Exists(solutionPackager))
            {
                throw new Exception(string.Format("SolutionPackager.exe file couldn't be found at {0}", solutionPackager));
            }

            if (!Directory.Exists(outputFolder))
            {
                throw new Exception(string.Format("outputFolder couldn't be found at {0}", outputFolder));
            }

            if (!File.Exists(configFilePath))
            {
                throw new Exception(string.Format("Config file couldn't be found at {0}", configFilePath));
            }

            SolutionPackConfig config =
                Serializers.ParseJson <SolutionPackConfig>(configFilePath);

            List <bool> results = new List <bool>();

            foreach (SolutionPackOptions option in config.Solutions)
            {
                string configDirectory = new FileInfo(configFilePath).DirectoryName;

                string folder  = Path.Combine(configDirectory, option.Folder);
                string mapping = Path.Combine(configDirectory, option.MappingFile);

                bool result = PackSolution(
                    solutionPackager,
                    outputFolder,
                    folder,
                    option.PackageType,
                    option.IncludeVersionInName,
                    mapping,
                    option.SourceLoc,
                    option.Localize,
                    option.TreatWarningsAsErrors,
                    option.IncrementReleaseVersion,
                    option.Version,
                    logsDirectory
                    );

                results.Add(result);

                if (!result)
                {
                    break;
                }
            }

            Logger.LogInformation("{0} solutions processed out of {1}", results.Count, config.Solutions.Count);

            return(results);
        }
        public List <string> ExportSolutions(
            string outputFolder,
            string configFilePath)
        {
            SolutionExportConfig config =
                Serializers.ParseJson <SolutionExportConfig>(configFilePath);

            List <string> solutionFilePaths = ExportSolutions(outputFolder,
                                                              config);

            return(solutionFilePaths);
        }
        public Assembly ReadMappingFile(string mappingFile)
        {
            var fileInfo = new FileInfo(mappingFile);

            switch (fileInfo.Extension.ToLower())
            {
            case ".json":
                logVerbose("Reading mapping json file");
                var pluginAssembly = Serializers.ParseJson <Assembly>(mappingFile);
                logVerbose("Deserialized mapping json file");
                return(pluginAssembly);

            case ".xml":
                logVerbose("Reading mapping xml file");
                pluginAssembly = Serializers.ParseXml <Assembly>(mappingFile);
                logVerbose("Deserialized mapping xml file");
                return(pluginAssembly);

            default:
                throw new ArgumentException("Only .json and .xml mapping files are supported", nameof(ReadMappingFile));
            }
        }
 private void LoadList()
 {
     ConnectionList = Serializers.ParseJson <XrmConnectionInfoList>(ConfigPath);
 }