static void Main(string[] args) { Logger.Log("Package Manager Start"); PackageData packageData = new PackageData(); packageData.InputInstallFormsFolder = CreateFolder(CurrentFolder + Path.DirectorySeparatorChar, "install-forms"); packageData.InputInstallFirmwareFolder = CreateFolder(CurrentFolder + Path.DirectorySeparatorChar, "install-firmware"); packageData.InputRollbackFormsFolder = CreateFolder(CurrentFolder + Path.DirectorySeparatorChar, "rollback-forms"); packageData.InputRollbackFirmwareFolder = CreateFolder(CurrentFolder + Path.DirectorySeparatorChar, "rollback-firmware"); if (args.Length != 1) { ShowUsage(); CreateSampleInputFile(); FatalError("This program requires a json file passed as it's only argument. An example input file has been provided in the " + "same directory from whence you ran the executable. Please try again"); } string inputFile = args[0]; bool inputFileIsValid = ValidateInputFile(inputFile, ".json"); bool inputFoldersAreValid = ValidateInputFolders(packageData); if (!inputFileIsValid || !inputFoldersAreValid) { ShowUsage(); CreateSampleInputFile(); FatalError("The input file or input folders were not in a valid state. An example input file has been provided in the" + "same directory from whence you ran the executable. Please try again."); } ReadInputFileData(inputFile, packageData); SetPackageContentBooleans(packageData); CreatePackageFolders(packageData); FileBuilder fileBuilder = new FileBuilder(packageData); BuildPackageFiles(fileBuilder, packageData); if (packageData.HasRollback) { HandleRollbackItems(packageData, fileBuilder); } ManifestPackage(packageData); CleanExecutableDirectory(packageData); Logger.Log("Package Manager End"); Logger.Dispose(); }
/// <summary> /// Build all of the various files associated with a package. /// </summary> /// <param name="fileBuilder"> The file builder object, which contains methods for building each file type. </param> /// <param name="packageData"> The data object for the package </param> private static void BuildPackageFiles(FileBuilder fileBuilder, PackageData packageData) { string rootReadMe = CreateFile(packageData.RootPackageFolder, "readme.md"); string changeLogFile = CreateFile(packageData.RootPackageFolder, "changelog.txt"); string verifyReadMe = CreateFile(packageData.VerifyFolder, "readme.md"); string touchScript = CreateFile(packageData.ScriptsFolder, "touch.cmd"); string installReadMe = CreateFile(packageData.InstallFolder, "readme.md"); string installScript = CreateFile(packageData.InstallFolder, "install.cmd"); fileBuilder.BuildRootReadMe(rootReadMe); fileBuilder.BuildChangeLog(changeLogFile); fileBuilder.BuildVerifyReadMe(verifyReadMe); fileBuilder.BuildTouchScript(touchScript); fileBuilder.BuildInstallReadMe(installReadMe); fileBuilder.BuildInstallScript(installScript); }
/// <summary> /// Handles all items related to a rollback, if the package has one. /// </summary> /// <param name="packageData"> The data object for the package </param> /// <param name="fileBuilder"> The file building object, containing methods to build each file type for the package </param> private static void HandleRollbackItems(PackageData packageData, FileBuilder fileBuilder) { packageData.RollbackFolder = CreateFolder(packageData.RootPackageFolder, "rollback"); string rollbackReadMe = CreateFile(packageData.RollbackFolder, "readme.md"); string rollbackScript = CreateFile(packageData.RollbackFolder, "rollback.cmd"); if (packageData.HasFormsRollback) { packageData.RollbackForms = GetFolderFiles(packageData.InputRollbackFormsFolder); packageData.FinalRollbackFormsFolder = packageData.RollbackFolder + "\\Forms"; Directory.Move(packageData.InputRollbackFormsFolder, packageData.FinalRollbackFormsFolder); } if (packageData.HasFirmwareRollback) { packageData.RollbackFirmware = GetFolderFiles(packageData.InputRollbackFirmwareFolder); packageData.FinalRollbackFirmwareFolder = packageData.RollbackFolder + "\\Firmware"; Directory.Move(packageData.InputRollbackFirmwareFolder, packageData.FinalRollbackFirmwareFolder); } fileBuilder.BuildRollbackReadMe(rollbackReadMe); fileBuilder.BuildRollbackScript(rollbackScript); }