/// <summary> /// Clean the build result from building the build pipeline of this build configuration. /// </summary> /// <param name="config">The build configuration that was used to build this build pipeline.</param> public CleanResult Clean(BuildConfiguration config) { if (config == null) { throw new ArgumentNullException(nameof(config)); } if (EditorApplication.isCompiling) { throw new InvalidOperationException("Cleaning is not allowed while Unity is compiling."); } if (EditorUtility.scriptCompilationFailed) { throw new InvalidOperationException("Cleaning is not allowed because scripts have compile errors in the editor."); } CleanResult result = null; try { using (var context = new CleanContext(this, config)) { var startTime = DateTime.Now; var timer = Stopwatch.StartNew(); result = OnClean(context); // Clean artifacts after OnClean, since OnClean might use artifacts to determine build directory config.CleanBuildArtifact(); timer.Stop(); if (result != null) { result.StartTime = startTime; result.Duration = timer.Elapsed; } } } catch (Exception exception) { result = CleanResult.Failure(this, config, exception); } return(result); }
/// <summary> /// Provides implementation to clean files produced by the build of this build pipeline corresponding to the specified build configuration. /// </summary> /// <param name="context">The clean context for the scope of the clean operation.</param> /// <returns>A result describing if clean is successful or not</returns> protected abstract CleanResult OnClean(CleanContext context);