Datei: Tools/PatchNdoVersion/Program.cs
Last Commit (6f29331)
1 | using System.Text; |
2 | using System.Text.RegularExpressions; |
3 | using System.Xml.Linq; |
4 | using System.Linq; |
5 | |
6 | namespace PatchNdoVersion |
7 | { |
8 | ····internal class Program |
9 | ····{ |
10 | ········static int Main(string[] args) |
11 | ········{ |
12 | ············if (args.Length < 3) |
13 | ············{ |
14 | ················Console.WriteLine( "usage: PatchNdoVersion <ProjFile> -i <NDOInterfaces-Version> -n <NDO-Version> -e <NDOEnhancer-Version>" ); |
15 | ················return -1; |
16 | ············} |
17 | |
18 | ············var projFile = args[0]; |
19 | ············string? iVersion = null; |
20 | ············string? eVersion = null; |
21 | ············string? nVersion = null; |
22 | |
23 | |
24 | ············if (!File.Exists(projFile)) |
25 | ············{ |
26 | ················Console.WriteLine( $"File doesn't exist: '{projFile}'" ); |
27 | ················return -3; |
28 | ············} |
29 | |
30 | |
31 | ············try |
32 | ············{ |
33 | ················Regex regex = new Regex(@"^\d+\.\d+\.\d+"); |
34 | ················var changed = false; |
35 | ················var i = Array.IndexOf(args, "-i"); |
36 | ················if (i > 0) |
37 | ················{ |
38 | ····················if (args.Length < i + 2) |
39 | ························throw new Exception( "Option -i needs a parameter." ); |
40 | ···················· |
41 | ····················iVersion = args[i + 1]; |
42 | |
43 | ····················if (!regex.Match( iVersion ).Success) |
44 | ························throw new Exception( "Parameter of -i must be a version string" ); |
45 | ················} |
46 | |
47 | ················var e = Array.IndexOf(args, "-e"); |
48 | ················if (e > 0) |
49 | ················{ |
50 | ····················if (args.Length < e + 2) |
51 | ························throw new Exception( "Option -e needs a parameter." ); |
52 | |
53 | ····················eVersion = args[e + 1]; |
54 | |
55 | ····················if (!regex.Match( eVersion ).Success) |
56 | ························throw new Exception( "Parameter of -e must be a version string" ); |
57 | ················} |
58 | |
59 | ················var n = Array.IndexOf(args, "-n"); |
60 | ················if (n > 0) |
61 | ················{ |
62 | ····················if (args.Length < n + 2) |
63 | ························throw new Exception( "Option -n needs a parameter." ); |
64 | |
65 | ····················nVersion = args[n + 1]; |
66 | |
67 | ····················if (!regex.Match( nVersion ).Success) |
68 | ························throw new Exception( "Parameter of -n must be a version string" ); |
69 | ················} |
70 | ················ |
71 | ················string ndoRootPath = AppDomain.CurrentDomain.BaseDirectory; |
72 | |
73 | ················XDocument doc = XDocument.Load( projFile ); |
74 | ················var project = doc.Root!; |
75 | |
76 | ················var prElement = project.Elements("ItemGroup").FirstOrDefault(pg => pg.Element("PackageReference") != null); ; |
77 | ················if (prElement == null) |
78 | ····················throw new Exception( "Project file doesn't have PackageReference items" ); |
79 | |
80 | ················if (iVersion != null) |
81 | ················{ |
82 | ····················var iElement = prElement.Elements("PackageReference").FirstOrDefault(el => el.Attribute("Include")?.Value == "NDOInterfaces"); |
83 | ····················if (iElement != null) |
84 | ····················{ |
85 | ························if (iElement.Attribute( "Version" )?.Value != iVersion) |
86 | ························{ |
87 | ····························iElement.Attribute( "Version" )!.Value = iVersion; |
88 | ····························changed = true; |
89 | ························} |
90 | ····················} |
91 | ····················else |
92 | ····················{ |
93 | ························throw new Exception( "Project needs a PackageReference to NDOInterfaces" ); |
94 | ····················} |
95 | ················} |
96 | |
97 | ················if (eVersion != null) |
98 | ················{ |
99 | ····················var eElement = prElement.Elements("PackageReference").FirstOrDefault(el => el.Attribute("Include")?.Value == "NDOEnhancer"); |
100 | ····················if (eElement != null) |
101 | ····················{ |
102 | ························if (eElement.Attribute( "Version" )?.Value != eVersion) |
103 | ························{ |
104 | ····························eElement.Attribute( "Version" )!.Value = eVersion; |
105 | ····························changed = true; |
106 | ························} |
107 | ····················} |
108 | ····················else |
109 | ····················{ |
110 | ························throw new Exception( "Project needs a PackageReference to NDOEnhancer" ); |
111 | ····················} |
112 | ················} |
113 | |
114 | ················if (nVersion != null) |
115 | ················{ |
116 | ····················var element = prElement.Elements("PackageReference").FirstOrDefault(el => el.Attribute("Include")?.Value.ToLower() == "ndo.dll"); |
117 | ····················if (element != null) |
118 | ····················{ |
119 | ························if (element.Attribute( "Version" )?.Value != nVersion) |
120 | ························{ |
121 | ····························element.Attribute( "Version" )!.Value = nVersion; |
122 | ····························changed = true; |
123 | ························} |
124 | ····················} |
125 | ····················else |
126 | ····················{ |
127 | ························throw new Exception( "Project needs a PackageReference to NDO.dll" ); |
128 | ····················} |
129 | ················} |
130 | |
131 | ················if (changed) |
132 | ····················doc.Save(projFile); |
133 | |
134 | ················return 0; |
135 | ············} |
136 | ············catch (Exception ex) |
137 | ············{ |
138 | ················Console.WriteLine( ex.ToString() ); |
139 | ················return -1; |
140 | ············} |
141 | ········} |
142 | ····} |
143 | } |
144 |
New Commit (4666cb7)
1 | using System.Text; |
2 | using System.Text.RegularExpressions; |
3 | using System.Xml.Linq; |
4 | using System.Linq; |
5 | |
6 | namespace PatchNdoVersion |
7 | { |
8 | ····internal class Program |
9 | ····{ |
10 | ········static int Main(string[] args) |
11 | ········{ |
12 | ············if (args.Length < 3) |
13 | ············{ |
14 | ················Console.WriteLine( "usage: PatchNdoVersion <ProjFile> -i <NDOInterfaces-Version> -n <NDO-Version> -e <NDOEnhancer-Version>" ); |
15 | ················return -1; |
16 | ············} |
17 | |
18 | ············var projFile = args[0]; |
19 | ············string? iVersion = null; |
20 | ············string? eVersion = null; |
21 | ············string? nVersion = null; |
22 | ············string? mVersion = null; |
23 | |
24 | |
25 | ············if (!File.Exists(projFile)) |
26 | ············{ |
27 | ················Console.WriteLine( $"File doesn't exist: '{projFile}'" ); |
28 | ················return -3; |
29 | ············} |
30 | |
31 | |
32 | ············try |
33 | ············{ |
34 | ················Regex regex = new Regex(@"^\d+\.\d+\.\d+"); |
35 | ················var changed = false; |
36 | ················var i = Array.IndexOf(args, "-i"); |
37 | ················if (i > 0) |
38 | ················{ |
39 | ····················if (args.Length < i + 2) |
40 | ························throw new Exception( "Option -i needs a parameter." ); |
41 | ···················· |
42 | ····················iVersion = args[i + 1]; |
43 | |
44 | ····················if (!regex.Match( iVersion ).Success) |
45 | ························throw new Exception( "Parameter of -i must be a version string" ); |
46 | ················} |
47 | |
48 | ················var e = Array.IndexOf(args, "-e"); |
49 | ················if (e > 0) |
50 | ················{ |
51 | ····················if (args.Length < e + 2) |
52 | ························throw new Exception( "Option -e needs a parameter." ); |
53 | |
54 | ····················eVersion = args[e + 1]; |
55 | |
56 | ····················if (!regex.Match( eVersion ).Success) |
57 | ························throw new Exception( "Parameter of -e must be a version string" ); |
58 | ················} |
59 | |
60 | ················var n = Array.IndexOf(args, "-n"); |
61 | ················if (n > 0) |
62 | ················{ |
63 | ····················if (args.Length < n + 2) |
64 | ························throw new Exception( "Option -n needs a parameter." ); |
65 | |
66 | ····················nVersion = args[n + 1]; |
67 | |
68 | ····················if (!regex.Match( nVersion ).Success) |
69 | ························throw new Exception( "Parameter of -n must be a version string" ); |
70 | ················} |
71 | |
72 | ················var m = Array.IndexOf(args, "-m"); |
73 | ················if (m > 0) |
74 | ················{ |
75 | ····················if (args.Length < m + 2) |
76 | ························throw new Exception( "Option -m needs a parameter." ); |
77 | |
78 | ····················mVersion = args[m + 1]; |
79 | |
80 | ····················if (!regex.Match( mVersion ).Success) |
81 | ························throw new Exception( "Parameter of -m must be a version string" ); |
82 | ················} |
83 | |
84 | ················string ndoRootPath = AppDomain.CurrentDomain.BaseDirectory; |
85 | |
86 | ················XDocument doc = XDocument.Load( projFile ); |
87 | ················var project = doc.Root!; |
88 | |
89 | ················var prElement = project.Elements("ItemGroup").FirstOrDefault(pg => pg.Element("PackageReference") != null); ; |
90 | ················if (prElement == null) |
91 | ····················throw new Exception( "Project file doesn't have PackageReference items" ); |
92 | |
93 | ················if (iVersion != null) |
94 | ················{ |
95 | ····················var iElement = prElement.Elements("PackageReference").FirstOrDefault(el => el.Attribute("Include")?.Value == "NDOInterfaces"); |
96 | ····················if (iElement != null) |
97 | ····················{ |
98 | ························if (iElement.Attribute( "Version" )?.Value != iVersion) |
99 | ························{ |
100 | ····························iElement.Attribute( "Version" )!.Value = iVersion; |
101 | ····························changed = true; |
102 | ························} |
103 | ····················} |
104 | ····················else |
105 | ····················{ |
106 | ························throw new Exception( "Project needs a PackageReference to NDOInterfaces" ); |
107 | ····················} |
108 | ················} |
109 | |
110 | ················if (eVersion != null) |
111 | ················{ |
112 | ····················var eElement = prElement.Elements("PackageReference").FirstOrDefault(el => el.Attribute("Include")?.Value == "NDOEnhancer"); |
113 | ····················if (eElement != null) |
114 | ····················{ |
115 | ························if (eElement.Attribute( "Version" )?.Value != eVersion) |
116 | ························{ |
117 | ····························eElement.Attribute( "Version" )!.Value = eVersion; |
118 | ····························changed = true; |
119 | ························} |
120 | ····················} |
121 | ····················else |
122 | ····················{ |
123 | ························throw new Exception( "Project needs a PackageReference to NDOEnhancer" ); |
124 | ····················} |
125 | ················} |
126 | |
127 | ················if (nVersion != null) |
128 | ················{ |
129 | ····················var element = prElement.Elements("PackageReference").FirstOrDefault(el => el.Attribute("Include")?.Value.ToLower() == "ndo.dll"); |
130 | ····················if (element != null) |
131 | ····················{ |
132 | ························if (element.Attribute( "Version" )?.Value != nVersion) |
133 | ························{ |
134 | ····························element.Attribute( "Version" )!.Value = nVersion; |
135 | ····························changed = true; |
136 | ························} |
137 | ····················} |
138 | ····················else |
139 | ····················{ |
140 | ························throw new Exception( "Project needs a PackageReference to NDO.dll" ); |
141 | ····················} |
142 | ················} |
143 | |
144 | ················if (mVersion != null) |
145 | ················{ |
146 | ····················var element = prElement.Elements("PackageReference").FirstOrDefault(el => el.Attribute("Include")?.Value.ToLower() == "ndo.mapping"); |
147 | ····················if (element != null) |
148 | ····················{ |
149 | ························if (element.Attribute( "Version" )?.Value != mVersion) |
150 | ························{ |
151 | ····························element.Attribute( "Version" )!.Value = mVersion; |
152 | ····························changed = true; |
153 | ························} |
154 | ····················} |
155 | ····················else |
156 | ····················{ |
157 | ························throw new Exception( "Project needs a PackageReference to NDO.mapping" ); |
158 | ····················} |
159 | ················} |
160 | |
161 | ················if (changed) |
162 | ····················doc.Save(projFile); |
163 | |
164 | ················return 0; |
165 | ············} |
166 | ············catch (Exception ex) |
167 | ············{ |
168 | ················Console.WriteLine( ex.ToString() ); |
169 | ················return -1; |
170 | ············} |
171 | ········} |
172 | ····} |
173 | } |
174 |