public BuildInfoController(BuildInfoStorage buildInfoStorage, IProjectSettingsController projectSettingsController)
        {
            _projectSettingsController = projectSettingsController;
            _buildInfoStorage          = buildInfoStorage;

            _buildInfo        = _buildInfoStorage.LoadBuildInfo();
            _activeCollection = _buildInfo.VariantCollections.Find(v => v.Name == _buildInfo.ActiveVariantCollectionName);
        }
Example #2
0
 public BuildVariantInspector
     (IBuildVariantsController buildVariantsController,
     IBuildInfoController buildInfoController, IProjectSettingsController projectSettingsController)
 {
     _buildVariantsController   = buildVariantsController;
     _buildInfoController       = buildInfoController;
     _projectSettingsController = projectSettingsController;
 }
Example #3
0
 public BuildVariantsExplorer(IBuildVariantsController buildVariantsController,
                              IBuildInfoController buildInfoController, IBuildTargetIcons buildTargetIcons,
                              IProjectSettingsController projectSettingsController)
 {
     _buildVariantsController   = buildVariantsController;
     _buildInfoController       = buildInfoController;
     _buildTargetIcons          = buildTargetIcons;
     _projectSettingsController = projectSettingsController;
 }
Example #4
0
 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);
 }
Example #5
0
        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);
            }
        }
Example #6
0
 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!");
     }
 }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
 private static void RollBack(IBuildInfoController buildInfoController,
                              IBuildVariantsController buildVariantsController, IProjectSettingsController projectSettingsController)
 {
     projectSettingsController.BuildAndApplyProjectSettings(buildVariantsController.BuildVariants.
                                                            First(v => v.Guid == buildInfoController.BuildInfo.ActiveVariantGuid));
 }