예제 #1
0
        private Task GetBuildDefinition()
        {
            return(Task.Run(() =>
            {
                if (CurrentVersion == null)
                {
                    CurrentVersion = BuildsIndex.GetLast();
                }

                if (CurrentVersion == null)
                {
                    Logger.Error(null, "Cannot retrieve any new version...");
                    throw new NoAvailableBuildsException();
                }

                if (!BuildsIndex.Contains(CurrentVersion) && CurrentVersion.IsLower(BuildsIndex.GetFirst()))
                {
                    CurrentVersion = BuildsIndex.GetLast();
                    SetRepairNeeded();
                }

                try
                {
                    var downloadEntry = new DownloadEntry(
                        Settings.GetRemoteBuildDefinitionUrl(CurrentVersion),
                        Settings.GetRemoteBuildDefinitionUrl(CurrentVersion).Replace(Settings.RemoteUrl, string.Empty),
                        null,
                        null,
                        null
                        );
                    CurrentBuildDefinition =
                        Downloader.DownloadJson <BuildDefinition>(downloadEntry, Serializer);
                    Logger.Info("Retrieved definition for {CurrentVersion}", CurrentVersion);
                }
                catch
                {
                    CurrentBuildDefinition = new BuildDefinition()
                    {
                        Entries = new BuildDefinitionEntry[0]
                    };
                    Logger.Warning("Cannot retrieve the build definition for {CurrentVersion}", CurrentVersion);
                }
            }));
        }