コード例 #1
0
 private bool GetCanVersionIncremental(IncrementalStatus buildInfoIncrementalStatus)
 {
     if (!buildInfoIncrementalStatus.CanIncremental)
     {
         IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, buildInfoIncrementalStatus.Details);
         Logger.LogVerbose(buildInfoIncrementalStatus.Details);
         return(false);
     }
     if (LastBuildVersionInfo == null)
     {
         string message = $"Cannot build incrementally because last build didn't contain version {Version}.";
         IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, message);
         Logger.LogVerbose(message);
         return(false);
     }
     if (CurrentBuildVersionInfo.ConfigHash != LastBuildVersionInfo.ConfigHash)
     {
         string message = "Cannot build incrementally because config changed.";
         IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, message);
         Logger.LogVerbose(message);
         return(false);
     }
     if (_parameters.ForceRebuild)
     {
         string message = $"Disable incremental build by force rebuild option.";
         IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, message);
         Logger.LogVerbose(message);
         return(false);
     }
     IncrementalInfo.ReportStatus(true, IncrementalPhase.Build);
     return(true);
 }
コード例 #2
0
        private bool GetCanVersionIncremental(IncrementalStatus buildInfoIncrementalStatus)
        {
            bool   canIncremental;
            string details;
            string fullBuildReasonCode;

            if (!buildInfoIncrementalStatus.CanIncremental)
            {
                details             = buildInfoIncrementalStatus.Details;
                fullBuildReasonCode = buildInfoIncrementalStatus.FullBuildReasonCode;
                canIncremental      = false;
            }
            else if (LastBuildVersionInfo == null)
            {
                details             = $"Cannot build incrementally because last build didn't contain group {Version}.";
                fullBuildReasonCode = InfoCodes.FullBuildReason.NoAvailableGroupCache;
                canIncremental      = false;
            }
            else if (CurrentBuildVersionInfo.ConfigHash != LastBuildVersionInfo.ConfigHash)
            {
                details             = "Cannot build incrementally because config changed.";
                fullBuildReasonCode = InfoCodes.FullBuildReason.ConfigChanged;
                canIncremental      = false;
            }
            else if (_parameters.ForceRebuild)
            {
                details             = "Disable incremental build by force rebuild option.";
                fullBuildReasonCode = InfoCodes.FullBuildReason.ForceRebuild;
                canIncremental      = false;
            }
            else
            {
                details             = null;
                canIncremental      = true;
                fullBuildReasonCode = null;
            }

            var buildStrategy = canIncremental ? InfoCodes.Build.IsIncrementalBuild : InfoCodes.Build.IsFullBuild;

            if (canIncremental)
            {
                IncrementalInfo.ReportStatus(true, IncrementalPhase.Build);
                Logger.LogInfo($"Group {Version} will be built incrementally.", code: buildStrategy);
            }
            else
            {
                IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, details, fullBuildReasonCode);
                Logger.LogInfo($"Group {Version} will be built fully.", code: buildStrategy);
                Logger.LogInfo($"The reason of full building under group {Version} is: {details}", code: fullBuildReasonCode);
            }

            return(canIncremental);
        }
コード例 #3
0
        private bool GetIsIncremental()
        {
            const string prependWarning = "Cannot support incremental post processing, the reason is:";
            string       message;

            if (!ShouldTraceIncrementalInfo)
            {
                message = $"{prependWarning} should not trace intermediate info.";
                IncrementalInfo.ReportStatus(false, IncrementalPhase.PostProcessing, message);
                Logger.LogVerbose(message);
                return(false);
            }
            if (!EnableIncremental)
            {
                message = $"{prependWarning} it's disabled.";
                IncrementalInfo.ReportStatus(false, IncrementalPhase.PostProcessing, message);
                Logger.LogVerbose(message);
                return(false);
            }
            if (LastInfo == null)
            {
                message = $"{prependWarning} last post processor info is null.";
                IncrementalInfo.ReportStatus(false, IncrementalPhase.PostProcessing, message);
                Logger.LogVerbose(message);
                return(false);
            }
            if (CurrentInfo.PostProcessorInfos.Count != LastInfo.PostProcessorInfos.Count)
            {
                message = $"{prependWarning} post processor info count mismatch: last has {LastInfo.PostProcessorInfos.Count} while current has {CurrentInfo.PostProcessorInfos.Count}.";
                IncrementalInfo.ReportStatus(false, IncrementalPhase.PostProcessing, message);
                Logger.LogVerbose(message);
                return(false);
            }
            for (var i = 0; i < CurrentInfo.PostProcessorInfos.Count; i++)
            {
                var currentPostProcessorInfo = CurrentInfo.PostProcessorInfos[i];
                var lastPostProcessorInfo    = LastInfo.PostProcessorInfos[i];
                if (!currentPostProcessorInfo.Equals(lastPostProcessorInfo))
                {
                    message = $"{prependWarning} post processor info changed from last {lastPostProcessorInfo.ToJsonString()} to current {currentPostProcessorInfo.ToJsonString()}.";
                    IncrementalInfo.ReportStatus(false, IncrementalPhase.PostProcessing, message);
                    Logger.LogVerbose(message);
                    return(false);
                }
            }

            message = "Can support incremental post processing.";
            IncrementalInfo.ReportStatus(true, IncrementalPhase.PostProcessing, message);
            Logger.LogVerbose(message);
            return(true);
        }
コード例 #4
0
        private bool GetCanVersionIncremental(IncrementalStatus buildInfoIncrementalStatus)
        {
            bool   canIncremental;
            string details;
            string fullBuildReasonCode;

            if (!buildInfoIncrementalStatus.CanIncremental)
            {
                details             = buildInfoIncrementalStatus.Details;
                fullBuildReasonCode = buildInfoIncrementalStatus.FullBuildReasonCode;
                canIncremental      = false;
            }
            else if (LastBuildVersionInfo == null)
            {
                details             = $"Cannot build incrementally because last build didn't contain group {Version}.";
                fullBuildReasonCode = InfoCodes.FullBuildReason.NoAvailableGroupCache;
                canIncremental      = false;
            }
            else if (CurrentBuildVersionInfo.ConfigHash != LastBuildVersionInfo.ConfigHash)
            {
                details             = "Cannot build incrementally because config changed.";
                fullBuildReasonCode = InfoCodes.FullBuildReason.ConfigChanged;
                canIncremental      = false;
            }
            else
            {
                details             = null;
                canIncremental      = true;
                fullBuildReasonCode = null;
            }

            var buildStrategy    = canIncremental ? InfoCodes.Build.IsIncrementalBuild : InfoCodes.Build.IsFullBuild;
            var groupDisplayName = string.IsNullOrEmpty(Version) ? "the default group" : $"group '{Version}'";

            if (canIncremental)
            {
                IncrementalInfo.ReportStatus(true, IncrementalPhase.Build);
                Logger.LogVerbose($"Building {groupDisplayName} incrementally.", code: buildStrategy);
            }
            else
            {
                IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, details, fullBuildReasonCode);
                Logger.LogVerbose($"Building {groupDisplayName} fully.", code: buildStrategy);
                Logger.LogVerbose($"The reason of full building for {groupDisplayName} is: {details}", code: fullBuildReasonCode);
            }

            return(canIncremental);
        }
コード例 #5
0
        private bool GetCanVersionIncremental(IncrementalStatus buildInfoIncrementalStatus)
        {
            bool   canIncremental;
            string message;

            if (!buildInfoIncrementalStatus.CanIncremental)
            {
                message        = buildInfoIncrementalStatus.Details;
                canIncremental = false;
            }
            else if (LastBuildVersionInfo == null)
            {
                message        = $"Cannot build incrementally because last build didn't contain group {Version}.";
                canIncremental = false;
            }
            else if (CurrentBuildVersionInfo.ConfigHash != LastBuildVersionInfo.ConfigHash)
            {
                message        = "Cannot build incrementally because config changed.";
                canIncremental = false;
            }
            else if (_parameters.ForceRebuild)
            {
                message        = "Disable incremental build by force rebuild option.";
                canIncremental = false;
            }
            else
            {
                message        = null;
                canIncremental = true;
            }

            var buildStrategy = canIncremental ? InfoCodes.Build.IsIncrementalBuild : InfoCodes.Build.IsFullBuild;

            if (canIncremental)
            {
                IncrementalInfo.ReportStatus(true, IncrementalPhase.Build);
                Logger.LogInfo($"Group: {Version}, build strategy: {buildStrategy}", code: buildStrategy);
            }
            else
            {
                IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, message);
                Logger.LogInfo($"Group: {Version}, build strategy: {buildStrategy}, details: {message}", code: buildStrategy);
            }

            return(canIncremental);
        }
コード例 #6
0
 private bool GetCanVersionIncremental(IncrementalStatus buildInfoIncrementalStatus)
 {
     if (!buildInfoIncrementalStatus.CanIncremental)
     {
         IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, buildInfoIncrementalStatus.Details);
         Logger.LogVerbose(buildInfoIncrementalStatus.Details);
         return(false);
     }
     if (LastBuildVersionInfo == null)
     {
         string message = $"Cannot build incrementally because last build didn't contain version {Version}.";
         IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, message);
         Logger.LogVerbose(message);
         return(false);
     }
     if (CurrentBuildVersionInfo.ConfigHash != LastBuildVersionInfo.ConfigHash)
     {
         string message = "Cannot build incrementally because config changed.";
         IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, message);
         Logger.LogVerbose(message);
         return(false);
     }
     if (_parameters.ForceRebuild)
     {
         string message = $"Disable incremental build by force rebuild option.";
         IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, message);
         Logger.LogVerbose(message);
         return(false);
     }
     if (_parameters.ApplyTemplateSettings != null)
     {
         var options = _parameters.ApplyTemplateSettings.Options;
         if ((options & (ApplyTemplateOptions.ExportRawModel | ApplyTemplateOptions.ExportViewModel)) != ApplyTemplateOptions.None)
         {
             string message = $"Disable incremental build because ExportRawModel/ExportViewModel option enabled.";
             IncrementalInfo.ReportStatus(false, IncrementalPhase.Build, message);
             Logger.LogVerbose(message);
             return(false);
         }
     }
     IncrementalInfo.ReportStatus(true, IncrementalPhase.Build);
     return(true);
 }