Exemple #1
0
 public void Initialize()
 {
     Phase       = LifecyclePhase.Initialized;
     Initialized = 1;
     Executed    = 0;
     Disposed    = 0;
 }
        private void ValidateDependenciesLifecyclePhase(Dictionary <string, string> dependencies)
        {
            // No dependencies, exit early
            if (!dependencies.Any())
            {
                return;
            }

            // Extract the current track, since otherwise we'd be potentially parsing the version
            // multiple times
            var currentTrack = PackageLifecyclePhase.GetLifecyclePhaseOrRelation(Context.ProjectPackageInfo.version, Context.ProjectPackageInfo.name, Context);

            var supportedVersions = PackageLifecyclePhase.GetPhaseSupportedVersions(currentTrack);

            // Check each dependency against supported versions
            foreach (var dependency in dependencies)
            {
                // Skip invalid dependencies from this check
                SemVersion depVersion;
                if (!SemVersion.TryParse(dependency.Value, out depVersion))
                {
                    continue;
                }

                LifecyclePhase dependencyTrack = PackageLifecyclePhase.GetLifecyclePhaseOrRelation(dependency.Value.ToLower(), dependency.Key.ToLower(), Context);
                var            depId           = Utilities.CreatePackageId(dependency.Key, dependency.Value);
                if (!supportedVersions.HasFlag(dependencyTrack))
                {
                    AddError($"Package {Context.ProjectPackageInfo.Id} depends on package {depId} which is in an invalid track for release purposes. {currentTrack} versions can only depend on {supportedVersions.ToString()} versions. {ErrorDocumentation.GetLinkMessage(k_DocsFilePath, "package-depends-on-a-package-which-is-in-an-invalid-track-for-release-purposes")}");
                }
            }
        }
        internal static LifecyclePhase GetPhaseSupportedVersions(LifecyclePhase phase)
        {
            var supportedVersions = phase;

            // Set extra supported versions for other tracks
            switch (phase)
            {
            case LifecyclePhase.Release:
                supportedVersions = LifecyclePhase.Release;
                break;

            case LifecyclePhase.ReleaseCandidate:
                supportedVersions = LifecyclePhase.Release | LifecyclePhase.ReleaseCandidate;
                break;

            case LifecyclePhase.PreRelease:
                supportedVersions = LifecyclePhase.PreRelease | LifecyclePhase.ReleaseCandidate | LifecyclePhase.Release;
                break;

            case LifecyclePhase.Experimental:
                supportedVersions = LifecyclePhase.Preview | LifecyclePhase.Experimental | LifecyclePhase.PreRelease | LifecyclePhase.ReleaseCandidate | LifecyclePhase.Release;
                break;

            case LifecyclePhase.Preview:
                supportedVersions = LifecyclePhase.Preview | LifecyclePhase.Experimental | LifecyclePhase.PreRelease | LifecyclePhase.ReleaseCandidate | LifecyclePhase.Release;
                break;
            }

            return(supportedVersions);
        }
Exemple #4
0
 public void Execute(ref ExecuteContext <NoParameters, NoProviders> context)
 {
     Phase = LifecyclePhase.Executing;
     ++Executed;
 }
Exemple #5
0
 public void Dispose()
 {
     Phase = LifecyclePhase.Disposed;
     ++Disposed;
 }