WGet.NET 4.4.1
A WinGet wrapper library for .Net.
Loading...
Searching...
No Matches
WinGetPinnedPackageBuilder.cs
1//--------------------------------------------------//
2// Created by basicx-StrgV //
3// https://github.com/basicx-StrgV/ //
4//--------------------------------------------------//
5using System;
8
9namespace WGetNET.Builder
10{
14 internal class WinGetPinnedPackageBuilder : WinGetObjectBuilder<WinGetPinnedPackage>
15 {
16 private string _pinTypeString = string.Empty;
17 private string _pinnedVersionString = string.Empty;
18 private PinType _pinType = PinType.Pinning;
19
20 private string _name = string.Empty;
21 private string _id = string.Empty;
22 private string _versionString = string.Empty;
23 private Version? _version = null;
24 private string _availableVersionString = string.Empty;
25 private Version? _availableVersion = null;
26 private string _sourceName = string.Empty;
27 private bool _hasShortenedId = false;
28
32 public WinGetPinnedPackageBuilder()
33 {
34 // Provide empty constructor
35 }
36
41 public void AddPinType(string pinType)
42 {
43 _pinTypeString = pinType;
44
45 _pinType = _pinTypeString.ToUpper() switch
46 {
47 "PINNING" => PinType.Pinning,
48 "BLOCKING" => PinType.Blocking,
49 "GATING" => PinType.Gating,
50 _ => PinType.Pinning,
51 };
52 }
53
61 public void AddPinnedVersion(string pinnedVersion)
62 {
63 _pinnedVersionString = pinnedVersion;
64 }
65
72 public void AddName(string name)
73 {
74 _name = name;
75 }
76
86 public void AddId(string id)
87 {
88 _hasShortenedId = CheckShortenedValue(id);
89 if (_hasShortenedId)
90 {
91 // Remove the char at the end of the shortened id.
92#if NETCOREAPP3_1_OR_GREATER
93 _id = id[..^1];
94#elif NETSTANDARD2_0
95 _id = id.Remove(id.Length - 1);
96#endif
97 }
98 else
99 {
100 _id = id;
101 }
102 }
103
110 public void AddVersion(string version)
111 {
112 _versionString = version;
113 _version = VersionParser.Parse(version);
114
115 if (string.IsNullOrWhiteSpace(_availableVersionString) || _availableVersion == null)
116 {
117 // Set the available version the current version as a default,
118 // if it is not set already.
119 AddAvailableVersion(version);
120 }
121
122 if (string.IsNullOrWhiteSpace(_pinnedVersionString))
123 {
124 // Set the pinned version the th current version as a default,
125 // if it is not set already.
126 AddPinnedVersion(version);
127 }
128 }
129
136 public void AddVersion(Version version)
137 {
138 _versionString = version.ToString();
139 _version = version;
140
141 if (string.IsNullOrWhiteSpace(_availableVersionString) || _availableVersion == null)
142 {
143 // Set the available version the current version as a default,
144 // if it is not set already.
145 AddAvailableVersion(version);
146 }
147
148 if (string.IsNullOrWhiteSpace(_pinnedVersionString))
149 {
150 // Set the pinned version the th current version as a default,
151 // if it is not set already.
152 AddPinnedVersion(version.ToString());
153 }
154 }
155
162 public void AddAvailableVersion(string availableVersion)
163 {
164 _availableVersionString = availableVersion;
165 _availableVersion = VersionParser.Parse(availableVersion);
166 }
167
174 public void AddAvailableVersion(Version availableVersion)
175 {
176 _availableVersionString = availableVersion.ToString();
177 _availableVersion = availableVersion;
178 }
179
186 public void AddSourceName(string sourceName)
187 {
188 _sourceName = sourceName;
189 }
190
197 public override WinGetPinnedPackage GetInstance()
198 {
199 if (_version == null)
200 {
201 _version = VersionParser.Parse(_versionString);
202 }
203
204 if (_availableVersion == null)
205 {
206 _availableVersion = VersionParser.Parse(_availableVersionString);
207 }
208
209 return new WinGetPinnedPackage(
210 _pinTypeString,
211 _pinType,
212 _pinnedVersionString,
213 _name,
214 _id,
215 _versionString,
216 _version,
217 _availableVersionString,
218 _availableVersion,
219 _sourceName,
220 _hasShortenedId);
221 }
222
224 public override void Clear()
225 {
226 _name = string.Empty;
227 _id = string.Empty;
228 _versionString = string.Empty;
229 _version = null;
230 _availableVersionString = string.Empty;
231 _availableVersion = null;
232 _sourceName = string.Empty;
233 _hasShortenedId = false;
234 }
235 }
236}
PinType
Enum of winget pin types.
Definition PinType.cs:11
Represents a winget pinned package.