public BuildInfoController(BuildInfoStorage buildInfoStorage, IProjectSettingsController projectSettingsController) { _projectSettingsController = projectSettingsController; _buildInfoStorage = buildInfoStorage; _buildInfo = _buildInfoStorage.LoadBuildInfo(); _activeCollection = _buildInfo.VariantCollections.Find(v => v.Name == _buildInfo.ActiveVariantCollectionName); }
public BuildVariantInspector (IBuildVariantsController buildVariantsController, IBuildInfoController buildInfoController, IProjectSettingsController projectSettingsController) { _buildVariantsController = buildVariantsController; _buildInfoController = buildInfoController; _projectSettingsController = projectSettingsController; }
public BuildVariantsExplorer(IBuildVariantsController buildVariantsController, IBuildInfoController buildInfoController, IBuildTargetIcons buildTargetIcons, IProjectSettingsController projectSettingsController) { _buildVariantsController = buildVariantsController; _buildInfoController = buildInfoController; _buildTargetIcons = buildTargetIcons; _projectSettingsController = projectSettingsController; }
public static void BuildAll(IBuildInfoController buildInfoController, IBuildVariantsController buildVariantsController, IProjectSettingsController projectSettingsController) { CheckForUnsavedSettings(buildInfoController, buildVariantsController, projectSettingsController); foreach (var buildVariant in buildVariantsController.BuildVariants) { BuildVariant(projectSettingsController, buildVariant); } RollBack(buildInfoController, buildVariantsController, projectSettingsController); }
private static void BuildVariant(IProjectSettingsController projectSettingsController, IBuildVariant buildVariant) { var tempPath = Path.Combine(Path.Combine(PluginFolder, "Temp"), Guid.NewGuid().ToString()); Directory.CreateDirectory(tempPath); Action restoreFiles = () => { }; restoreFiles = buildVariant.MoveFiles.Where(f => f.PerformOnStage == BuildStage.BeforeBuild). Aggregate(restoreFiles, (current, fileCopyInfo) => current + MoveFile(fileCopyInfo.From, fileCopyInfo.To, fileCopyInfo.Revert ? tempPath : null)); projectSettingsController.BuildAndApplyProjectSettings(buildVariant); var buildPlayerOptions = new BuildPlayerOptions { scenes = EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray(), locationPathName = buildVariant.BuildPath, target = buildVariant.BuildTarget, options = buildVariant.BuildOptions }; typeof(BuildPipeline).GetMethod("BuildPlayer", new [] { typeof(BuildPlayerOptions) }). Invoke(null, new object[] { buildPlayerOptions }); restoreFiles(); foreach (var fileMoveInfo in buildVariant.MoveFiles.Where(f => f.PerformOnStage == BuildStage.AfterBuild)) { MoveFile(fileMoveInfo.From, fileMoveInfo.To); } if (buildVariant.MakeZip) { var folderToCompressPath = Path.HasExtension(buildVariant.BuildPath) ? Path.GetDirectoryName(buildVariant.BuildPath) : buildVariant.BuildPath; var folderName = Path.GetFileName(folderToCompressPath); if (folderName != null) { using (var zip = new ZipFile()) { zip.AddDirectory(folderToCompressPath); zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; zip.Save(Path.Combine(Directory.GetParent(folderToCompressPath).FullName, folderName + ".zip")); } } } Directory.Delete(tempPath); foreach (var fileMoveInfo in buildVariant.MoveFiles.Where(f => f.PerformOnStage == BuildStage.AfterAll)) { MoveFile(fileMoveInfo.From, fileMoveInfo.To); } }
private static void CheckForUnsavedSettings(IBuildInfoController buildInfoController, IBuildVariantsController buildVariantsController, IProjectSettingsController projectSettingsController) { if (projectSettingsController.GetDiffWithActualSettings(buildVariantsController.BuildVariants.First(v => v.Guid == buildInfoController.BuildInfo.ActiveVariantGuid)).Any()) { throw new Exception("Active variant has unsaved settings!"); } }
public static void BuildVariant(IBuildInfoController buildInfoController, IBuildVariantsController buildVariantsController, IProjectSettingsController projectSettingsController, string variantGuid) { CheckForUnsavedSettings(buildInfoController, buildVariantsController, projectSettingsController); var buildVariant = buildVariantsController.BuildVariants.First(b => b.Guid == variantGuid); BuildVariant(projectSettingsController, buildVariant); RollBack(buildInfoController, buildVariantsController, projectSettingsController); }
public static void BuildColleciton(IBuildInfoController buildInfoController, IBuildVariantsController buildVariantsController, IProjectSettingsController projectSettingsController, string setName) { CheckForUnsavedSettings(buildInfoController, buildVariantsController, projectSettingsController); var set = buildInfoController.BuildInfo.VariantCollections.First(s => s.Name == setName); foreach (var buildVariant in buildVariantsController.BuildVariants) { if (set.GetBuildVariantGuids().Contains(buildVariant.Guid)) { BuildVariant(projectSettingsController, buildVariant); } } RollBack(buildInfoController, buildVariantsController, projectSettingsController); }
private static void RollBack(IBuildInfoController buildInfoController, IBuildVariantsController buildVariantsController, IProjectSettingsController projectSettingsController) { projectSettingsController.BuildAndApplyProjectSettings(buildVariantsController.BuildVariants. First(v => v.Guid == buildInfoController.BuildInfo.ActiveVariantGuid)); }