示例#1
0
        public void SetUpdateInfoPanel(UpdateInfo lastUpdate, UpdateInfo info)
        {
            if (info.summary != null)
            {
                summaryLabel.Text = info.summary;
                versionLabel.Text = "Version " + VersionFormatter.ToString(info.version) + " - " + info.ReleaseDate.ToString("MMMM dd, yyyy");
            }
            else
            {
                summaryLabel.Text = "Version " + VersionFormatter.ToString(info.version);
                versionLabel.Text = "Released on " + info.ReleaseDate.ToString("MMMM dd, yyyy");
            }

            notesTextBox.Text = info.changeLog;

            FileDiffListItem[] diff;
            if (lastUpdate != null)
            {
                diff = GetUpdateFilesDiff(lastUpdate, info);
            }
            else
            {
                diff = new FileDiffListItem[info.fileChecksums.Count];
                for (int i = 0; i < diff.Length; i++)
                {
                    diff[i] = new FileDiffListItem(info.fileChecksums.Keys.ElementAt(i), FileDiffListItem.FileState.ADDED);
                }
            }

            SetFileChangesList(diff);
        }
示例#2
0
        private int GetDecimalPlaces(double argument)
        {
            if (Math.Floor(argument) == argument)
            {
                return(0);
            }
            string numberString = VersionFormatter.ToString(argument);

            return(numberString.Substring(numberString.IndexOf(".") + 1).Length);
        }
示例#3
0
        private static double GetDecimalIncrement(int decimalPlaces)
        {
            string resultString = "0.";

            for (int i = 0; i < decimalPlaces - 1; i++)
            {
                resultString = resultString + "0";
            }
            resultString = resultString + "1";
            return(VersionFormatter.FromString(resultString));
        }
示例#4
0
        /// <summary>
        /// Returns the normalized version identity. This does not contain metadata since
        /// it is not part of the actual package identity.
        /// </summary>
        public static string ToIdentityString(this SemanticVersion version)
        {
            var formatter = new VersionFormatter();
            var format    = "V";

            if (version.IsPrerelease)
            {
                format += "-R";
            }

            return(version.ToString(format, formatter));
        }
示例#5
0
        public void FormatComplexTest(string versionString, string expected)
        {
            // arrange
            var formatter = new VersionFormatter();
            var version   = NuGetVersion.Parse(versionString);

            // act
            var s  = String.Format(formatter, "{0:x}.{0:x}.{0:y}.{0:z}.{0:r}({0:M})*{0:R}: {0:V}", version, version, version, version, version, version, version, version);
            var s2 = version.ToString("x.x.y.z.r(M)*R: V", formatter);

            // assert
            Assert.Equal(expected, s);
            Assert.Equal(expected, s2);
        }
示例#6
0
        public void FormatVersionTest(string versionString, string expected)
        {
            // arrange
            var formatter = new VersionFormatter();
            var version   = NuGetVersion.Parse(versionString);

            // act
            var s  = String.Format(formatter, "{0:V}", version);
            var s2 = version.ToString("V", formatter);

            // assert
            Assert.Equal(expected, s);
            Assert.Equal(expected, s2);
        }
示例#7
0
        public void FormatVersionTest(string versionString, string expected)
        {
            // arrange
            var formatter = new VersionFormatter();
            var version = NuGetVersion.Parse(versionString);

            // act
            var s = String.Format(formatter, "{0:V}", version);
            var s2 = version.ToString("V", formatter);

            // assert
            Assert.Equal(expected, s);
            Assert.Equal(expected, s2);
        }
示例#8
0
        public void FormatReleaseTest(string versionString, string expected)
        {
            // arrange
            VersionFormatter formatter = new VersionFormatter();
            NuGetVersion     version   = NuGetVersion.Parse(versionString);

            // act
            string s  = String.Format(formatter, "{0:R}", version);
            string s2 = version.ToString("R", formatter);

            // assert
            Assert.Equal(expected, s);
            Assert.Equal(expected, s2);
        }
示例#9
0
        private UpdateInfo[] LoadUpdates(string folder, AppInfo info)
        {
            string versionsFolder = Path.Combine(folder, info.downloadBaseDir);

            UpdateInfo[] updates = new UpdateInfo[info.versions.Length];
            for (int i = 0; i < info.versions.Length; i++)
            {
                double cur = info.versions[i];
                string curVersionFolder = Path.Combine(versionsFolder, VersionFormatter.ToString(cur));
                string infoFile         = Path.Combine(curVersionFolder, "info.json");
                updates[i] = UpdateInfo.FromJson(File.ReadAllText(infoFile));
            }
            return(updates);
        }
示例#10
0
        public override void PublishUpdate(Project project, UpdateInfo newUpdate)
        {
            string updateVersion = VersionFormatter.ToString(newUpdate.version);

            AppInfo appInfo;
            string  appInfoFile = Path.Combine(targetFolder, "appinfo.json");

            if (!File.Exists(appInfoFile))
            {
                appInfo                 = new AppInfo();
                appInfo.appId           = project.AppID;
                appInfo.versions        = project.GetVersionNumbers();
                appInfo.downloadBaseDir = "versions";
                Directory.CreateDirectory(Path.Combine(targetFolder, "versions"));
                File.WriteAllText(appInfoFile, appInfo.ToJson());
            }
            else
            {
                appInfo = AppInfo.FromJson(File.ReadAllText(appInfoFile));
            }

            if (appInfo.versions.Contains(newUpdate.version))
            {
                throw new PublishingFailedException("Version " + updateVersion + " already exists.");
            }

            string versionsFolder        = Path.Combine(targetFolder, appInfo.downloadBaseDir);
            string newVersionFolder      = Path.Combine(versionsFolder, updateVersion);
            string newVersionFilesFolder = Path.Combine(newVersionFolder, "dl");

            if (Directory.Exists(newVersionFolder))
            {
                throw new PublishingFailedException("The destination folder for this version already exists!");
            }
            else
            {
                Directory.CreateDirectory(newVersionFilesFolder);
            }

            string infoFile = Path.Combine(newVersionFolder, "info.json");

            File.WriteAllText(infoFile, newUpdate.ToJson());

            CopyAllInFolder(project.ProjectFolder, newVersionFilesFolder);

            appInfo.versions = appInfo.versions.Concat(new double[] { newUpdate.version }).ToArray();
            File.WriteAllText(appInfoFile, appInfo.ToJson());
        }
示例#11
0
        public ActionResult GetHistory(string metaViewName, Guid id)
        {
            if (!SecurityCache.ViewCan(metaViewName, SecurityPermissionBaseTypeEnum.View))
            {
                return(new ContentResult
                {
                    ContentType = "text/html",
                    Content = DynamicEntityJSONDataSource.GetNotSuccess(WsFactory.GetАccessDeniedPage())
                });
            }

            return(new ContentResult
            {
                ContentType = "text/html",
                Content = VersionFormatter.GetObjectHistoryInHtml(id)
            });
        }
示例#12
0
        /// <summary>
        /// Returns the display version, this contains metadata and is not unique
        /// to the package identity.
        /// </summary>
        public static string ToFullVersionString(this SemanticVersion version)
        {
            var formatter = new VersionFormatter();
            var format    = "V";

            if (version.IsPrerelease)
            {
                format += "-R";
            }

            // TODO: re-add this once NuGet properly supports SemVer 2.0.0 metadata.
            //if (version.HasMetadata)
            //{
            //    format += "+M";
            //}

            return(version.ToString(format, formatter));
        }
示例#13
0
        private void publishUpdateButton_Click(object sender, EventArgs e)
        {
            newUpdateInfo.summary     = summaryTextBox.Text;
            newUpdateInfo.version     = VersionFormatter.FromString(versionTextBox.Text);
            newUpdateInfo.changeLog   = newNotesTextBox.Text;
            newUpdateInfo.ReleaseDate = DateTime.UtcNow;

            try {
                project.PublishUpdate(newUpdateInfo);
            } catch (PublishingFailedException ex) {
                MessageBox.Show(ex.Message, "Failed to publish update", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            } catch (Exception ex) {
                string message = "An exception occured while trying to publish the update: " + ex.Message + Environment.NewLine
                                 + "Stacktrace:" + Environment.NewLine + ex.StackTrace;
                MessageBox.Show(message, "Failed to publish update", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            parentPage.RefreshUpdateList();
            parentPage.SelectUpdate(0);
        }
示例#14
0
        private void SetUpdateList(UpdateInfo[] updatesUnsorted)
        {
            updatesList.Clear();

            if (updatesUnsorted == null)
            {
                return;
            }

            updates = updatesUnsorted.OrderByDescending(update => update.version);
            foreach (UpdateInfo cur in updates)
            {
                if (cur.summary == null)
                {
                    updatesList.Items.Add("Version " + VersionFormatter.ToString(cur.version));
                }
                else
                {
                    updatesList.Items.Add(cur.summary);
                }
                updatesList.ItemSubTexts.Add(DateTools.GetSimpleDateRepresentation(cur.ReleaseDate));
            }
        }
示例#15
0
        public void FormatComplexTest(string versionString, string expected)
        {
            // arrange
            var formatter = new VersionFormatter();
            var version = NuGetVersion.Parse(versionString);

            // act
            var s = String.Format(formatter, "{0:x}.{0:x}.{0:y}.{0:z}.{0:r}({0:M})*{0:R}: {0:V}", version, version, version, version, version, version, version, version);
            var s2 = version.ToString("x.x.y.z.r(M)*R: V", formatter);

            // assert
            Assert.Equal(expected, s);
            Assert.Equal(expected, s2);
        }
示例#16
0
 public void LoadUpdateChanges()
 {
     versionTextBox.Text = VersionFormatter.ToString(GetNextVersionNumber());
 }