WGet.NET 4.4.1
A WinGet wrapper library for .Net.
Loading...
Searching...
No Matches
WinGetPackageBuilder.cs
1//--------------------------------------------------//
2// Created by basicx-StrgV //
3// https://github.com/basicx-StrgV/ //
4//--------------------------------------------------//
5using System;
8
9namespace WGetNET.Builder
10{
14 internal class WinGetPackageBuilder : WinGetObjectBuilder<WinGetPackage>
15 {
16 private string _name = string.Empty;
17 private string _id = string.Empty;
18 private string _versionString = string.Empty;
19 private Version? _version = null;
20 private string _availableVersionString = string.Empty;
21 private Version? _availableVersion = null;
22 private string _sourceName = string.Empty;
23 private bool _hasShortenedId = false;
24
28 public WinGetPackageBuilder()
29 {
30 // Provide empty constructor
31 }
32
39 public void AddName(string name)
40 {
41 _name = name;
42 }
43
53 public void AddId(string id)
54 {
55 _hasShortenedId = CheckShortenedValue(id);
56 if (_hasShortenedId)
57 {
58 // Remove the char at the end of the shortened id.
59#if NETCOREAPP3_1_OR_GREATER
60 _id = id[..^1];
61#elif NETSTANDARD2_0
62 _id = id.Remove(id.Length - 1);
63#endif
64 }
65 else
66 {
67 _id = id;
68 }
69 }
70
77 public void AddVersion(string version)
78 {
79 _versionString = version;
80 _version = VersionParser.Parse(version);
81
82 if (string.IsNullOrWhiteSpace(_availableVersionString) || _availableVersion == null)
83 {
84 // Set the available version the current version as a default,
85 // if it is not set already.
86 AddAvailableVersion(version);
87 }
88 }
89
96 public void AddVersion(Version version)
97 {
98 _versionString = version.ToString();
99 _version = version;
100
101 if (string.IsNullOrWhiteSpace(_availableVersionString) || _availableVersion == null)
102 {
103 // Set the available version the current version as a default,
104 // if it is not set already.
105 AddAvailableVersion(version);
106 }
107 }
108
115 public void AddAvailableVersion(string availableVersion)
116 {
117 _availableVersionString = availableVersion;
118 _availableVersion = VersionParser.Parse(availableVersion);
119 }
120
127 public void AddAvailableVersion(Version availableVersion)
128 {
129 _availableVersionString = availableVersion.ToString();
130 _availableVersion = availableVersion;
131 }
132
139 public void AddSourceName(string sourceName)
140 {
141 _sourceName = sourceName;
142 }
143
150 public override WinGetPackage GetInstance()
151 {
152 if (_version == null)
153 {
154 _version = VersionParser.Parse(_versionString);
155 }
156
157 if (_availableVersion == null)
158 {
159 _availableVersion = VersionParser.Parse(_availableVersionString);
160 }
161
162 return new WinGetPackage(_name, _id, _versionString, _version, _availableVersionString, _availableVersion, _sourceName, _hasShortenedId);
163 }
164
166 public override void Clear()
167 {
168 _name = string.Empty;
169 _id = string.Empty;
170 _versionString = string.Empty;
171 _version = null;
172 _availableVersionString = string.Empty;
173 _availableVersion = null;
174 _sourceName = string.Empty;
175 _hasShortenedId = false;
176 }
177 }
178}
Represents a winget package.