Added comments.
This commit is contained in:
parent
c4132b4061
commit
45768d89a6
Katteker
@ -5,8 +5,17 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Katteker
|
||||
{
|
||||
/// <summary>
|
||||
/// Helps handle the Changelog.
|
||||
/// </summary>
|
||||
public static class ChangelogHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Format the Changelog as Html compilant file.s
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <param name="extension"></param>
|
||||
/// <returns></returns>
|
||||
public static string ChangelogAsHtml(this string text, string extension)
|
||||
{
|
||||
string result;
|
||||
@ -27,6 +36,12 @@ namespace Katteker
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load changelog from Web or use the local file, if it fails.
|
||||
/// </summary>
|
||||
/// <param name="filename"></param>
|
||||
/// <param name="path"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<string> LoadChangelogAsync(string filename, string path)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(filename) || !string.IsNullOrEmpty(path))
|
||||
|
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
|
||||
// indem Sie "*" wie unten gezeigt eingeben:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.3")]
|
||||
[assembly: AssemblyFileVersion("1.0.3")]
|
||||
[assembly: AssemblyVersion("1.0.4")]
|
||||
[assembly: AssemblyFileVersion("1.0.4")]
|
||||
|
@ -5,12 +5,18 @@ using Semver;
|
||||
|
||||
namespace Katteker
|
||||
{
|
||||
/// <summary>
|
||||
/// Entry of a Release.
|
||||
/// </summary>
|
||||
public class ReleaseEntry : IComparable<ReleaseEntry>, IComparable
|
||||
{
|
||||
private const string FilenameRegex = @"(^.*)-((?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(?:\+[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?).*-(full|delta)";
|
||||
|
||||
private const char Seperator = '|';
|
||||
|
||||
/// <summary>
|
||||
/// Construct a new release entry.
|
||||
/// </summary>
|
||||
public ReleaseEntry(string filename, SemVersion version, long fileSize, bool isDelta, string sha1)
|
||||
{
|
||||
Filename = filename;
|
||||
@ -20,6 +26,10 @@ namespace Katteker
|
||||
SHA1 = sha1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Construct release entry from string.
|
||||
/// </summary>
|
||||
/// <exception cref="ArgumentOutOfRangeException"></exception>
|
||||
public ReleaseEntry(string line)
|
||||
{
|
||||
var elements = line?.Split(Seperator);
|
||||
@ -34,23 +44,53 @@ namespace Katteker
|
||||
IsDelta = fileSegments.Groups[3].Value != "full";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// cunstruct release entry from application name and version.
|
||||
/// </summary>
|
||||
/// <param name="applicationName"></param>
|
||||
/// <param name="version"></param>
|
||||
public ReleaseEntry(string applicationName, SemVersion version)
|
||||
{
|
||||
ApplicationName = applicationName;
|
||||
Version = version;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Version
|
||||
/// </summary>
|
||||
public SemVersion Version { get; }
|
||||
/// <summary>
|
||||
/// Hashsum of the file.
|
||||
/// </summary>
|
||||
public string SHA1 { get; }
|
||||
/// <summary>
|
||||
/// filename
|
||||
/// </summary>
|
||||
public string Filename { get; }
|
||||
/// <summary>
|
||||
/// Size of the file.
|
||||
/// </summary>
|
||||
public long Filesize { get; }
|
||||
/// <summary>
|
||||
/// Is true if the update is delta file. False otherwise.
|
||||
/// </summary>
|
||||
public bool IsDelta { get; }
|
||||
/// <summary>
|
||||
/// Name of the application.
|
||||
/// </summary>
|
||||
public string ApplicationName { get; }
|
||||
/// <summary>
|
||||
/// Format the release entry as line for release file.
|
||||
/// </summary>
|
||||
public string EntryAsString => $"{SHA1}{Seperator}{Filename}{Seperator}{Filesize}";
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string ToString() => $"{ApplicationName} {Version}";
|
||||
|
||||
/// <inheritdoc />
|
||||
public int CompareTo(object obj) => CompareTo(obj as ReleaseEntry);
|
||||
|
||||
/// <inheritdoc />
|
||||
public int CompareTo(ReleaseEntry other)
|
||||
{
|
||||
if (ReferenceEquals(this, other)) return 0;
|
||||
@ -60,13 +100,20 @@ namespace Katteker
|
||||
return string.Compare(Filename, other.Filename, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool Equals(object obj) => Equals(obj as ReleaseEntry);
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if the instances are equal. False otherwise.
|
||||
/// </summary>
|
||||
/// <param name="other"></param>
|
||||
/// <returns></returns>
|
||||
protected bool Equals(ReleaseEntry other)
|
||||
{
|
||||
return Equals(Version, other.Version) && string.Equals(SHA1, other.SHA1) && string.Equals(Filename, other.Filename) && Filesize == other.Filesize && IsDelta == other.IsDelta;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override int GetHashCode()
|
||||
{
|
||||
unchecked
|
||||
@ -80,14 +127,14 @@ namespace Katteker
|
||||
}
|
||||
}
|
||||
|
||||
public static bool operator ==(ReleaseEntry left, ReleaseEntry right)
|
||||
{
|
||||
return Equals(left, right);
|
||||
}
|
||||
/// <summary>
|
||||
/// Returns true if the left and right instances are equal.
|
||||
/// </summary>
|
||||
public static bool operator ==(ReleaseEntry left, ReleaseEntry right) => Equals(left, right);
|
||||
|
||||
public static bool operator !=(ReleaseEntry left, ReleaseEntry right)
|
||||
{
|
||||
return !Equals(left, right);
|
||||
}
|
||||
/// <summary>
|
||||
/// Returns true if the left and right instances are not equal.
|
||||
/// </summary>
|
||||
public static bool operator !=(ReleaseEntry left, ReleaseEntry right) => !Equals(left, right);
|
||||
}
|
||||
}
|
@ -6,6 +6,9 @@ using Semver;
|
||||
|
||||
namespace Katteker
|
||||
{
|
||||
/// <summary>
|
||||
/// This class represents the release file which will published.
|
||||
/// </summary>
|
||||
public class Releases : IEnumerable<ReleaseEntry>
|
||||
{
|
||||
private readonly string _filePath;
|
||||
@ -17,6 +20,9 @@ namespace Katteker
|
||||
ReleaseEntries = new SortedList<SemVersion, ReleaseEntry>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor with the path as paramter.
|
||||
/// </summary>
|
||||
public Releases(string path) : this()
|
||||
{
|
||||
_filePath = Path.Combine(path, Constants.Release);
|
||||
@ -24,6 +30,9 @@ namespace Katteker
|
||||
AddRange(File.ReadAllLines(_filePath));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor with the enumerable content.
|
||||
/// </summary>
|
||||
public Releases(IEnumerable<string> content) : this()
|
||||
{
|
||||
AddRange(content);
|
||||
@ -38,6 +47,9 @@ namespace Katteker
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write release file to disk.
|
||||
/// </summary>
|
||||
public void WriteReleaseFile()
|
||||
{
|
||||
File.WriteAllLines(_filePath, ReleaseEntries.Select(x => x.Value.EntryAsString));
|
||||
@ -61,20 +73,23 @@ namespace Katteker
|
||||
{
|
||||
ReleaseEntries.Remove(version);
|
||||
}
|
||||
|
||||
ReleaseEntries.Add(version, entry);
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Is true if the entry is the last entry.
|
||||
/// </summary>
|
||||
/// <param name="entry"></param>
|
||||
/// <returns></returns>
|
||||
public bool IsLatestEntry(ReleaseEntry entry) => entry.Equals(ReleaseEntries.LastOrDefault().Value);
|
||||
public IEnumerator<ReleaseEntry> GetEnumerator()
|
||||
{
|
||||
return ReleaseEntries.Values.GetEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return GetEnumerator();
|
||||
}
|
||||
/// <inheritdoc />
|
||||
public IEnumerator<ReleaseEntry> GetEnumerator() => ReleaseEntries.Values.GetEnumerator();
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
||||
}
|
||||
}
|
@ -2,12 +2,24 @@
|
||||
|
||||
namespace Katteker
|
||||
{
|
||||
/// <summary>
|
||||
/// Info about the updates.
|
||||
/// </summary>
|
||||
public class UpdateInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Currently installed version.
|
||||
/// </summary>
|
||||
public ReleaseEntry CurrentlyInstalledVersion { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Releases to apply.
|
||||
/// </summary>
|
||||
public List<ReleaseEntry> ReleasesToApply { get; } = new List<ReleaseEntry>();
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
public UpdateInfo(string applicationName, Releases releases)
|
||||
{
|
||||
CurrentlyInstalledVersion = new ReleaseEntry(applicationName, VersionUtils.GetCurrentVersion());
|
||||
|
Loading…
x
Reference in New Issue
Block a user