LEFT | RIGHT |
1 /* | 1 /* |
2 Copyright 2013 Google Inc | 2 Copyright 2013 Google Inc |
3 | 3 |
4 Licensed under the Apache License, Version 2.0 (the "License"); | 4 Licensed under the Apache License, Version 2.0 (the "License"); |
5 you may not use this file except in compliance with the License. | 5 you may not use this file except in compliance with the License. |
6 You may obtain a copy of the License at | 6 You may obtain a copy of the License at |
7 | 7 |
8 http://www.apache.org/licenses/LICENSE-2.0 | 8 http://www.apache.org/licenses/LICENSE-2.0 |
9 | 9 |
10 Unless required by applicable law or agreed to in writing, software | 10 Unless required by applicable law or agreed to in writing, software |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 /// The Google APIs NuGet publisher uses a local folder "C:\LocalNuGetFeed"
to store all the NuGet packages | 78 /// The Google APIs NuGet publisher uses a local folder "C:\LocalNuGetFeed"
to store all the NuGet packages |
79 /// locally. | 79 /// locally. |
80 /// Notice also the different between bundle and package: | 80 /// Notice also the different between bundle and package: |
81 /// A bundle is the zip file that contains the sources, and it's is download
ed from | 81 /// A bundle is the zip file that contains the sources, and it's is download
ed from |
82 /// "https://google-api-client-libraries.appspot.com/" | 82 /// "https://google-api-client-libraries.appspot.com/" |
83 /// A package is the NuGet package we use to build a solution. We can store
NuGet packages locally (e.g. in | 83 /// A package is the NuGet package we use to build a solution. We can store
NuGet packages locally (e.g. in |
84 /// "C:\LocalNuGetFeed") or use the main NuGet repository at "https://nuget.
org/api/v2/" | 84 /// "C:\LocalNuGetFeed") or use the main NuGet repository at "https://nuget.
org/api/v2/" |
85 /// </remarks> | 85 /// </remarks> |
86 class Program | 86 class Program |
87 { | 87 { |
88 static TraceSource TraceSource = new TraceSource("Google.Apis"); | 88 private static TraceSource TraceSource = new TraceSource("Google.Apis"); |
89 | 89 |
90 /// <summary>The discovery URI to get all the public APIs.</summary> | 90 /// <summary>The discovery URI to get all the public APIs.</summary> |
91 static readonly Uri DiscoveryApiUri = new Uri(@"https://www.googleapis.c
om/discovery/v1/apis"); | 91 static readonly Uri DiscoveryApiUri = new Uri(@"https://www.googleapis.c
om/discovery/v1/apis"); |
92 | 92 |
93 /// <summary>The download URI format to download a specific API format.
Two parameters are expected the API· | 93 /// <summary>The download URI format to download a specific API format.
Two parameters are expected the API· |
94 /// name and its version.</summary> | 94 /// name and its version.</summary> |
95 const string DownloadUriFormat = | 95 const string DownloadUriFormat = |
96 "https://google-api-client-libraries.appspot.com/resources/api-libra
ries/download/stable/" + | 96 "https://google-api-client-libraries.appspot.com/download/library/{0
}/{1}/csharp?deps=0"; |
97 "{0}/{1}/csharp?deps=0"; | |
98 | 97 |
99 /// <summary>The template directory which contains the '.nuget' director
y and the necessary·· | 98 /// <summary>The template directory which contains the '.nuget' director
y and the necessary·· |
100 /// 'Microsoft.Bcl.Build.targets' file.</summary> | 99 /// 'Microsoft.Bcl.Build.targets' file.</summary> |
101 readonly string TemplateDirectory; | 100 readonly string TemplateDirectory; |
102 | 101 |
103 /// <summary>The directory that the bundle will be downloaded to.</summa
ry> | 102 /// <summary>The directory that the bundle will be downloaded to.</summa
ry> |
104 readonly string DownloadBundleTempDirectory = Path.Combine(Path.GetTempP
ath(), "GoogleAPIsPublisher"); | 103 readonly string DownloadBundleTempDirectory = Path.Combine(Path.GetTempP
ath(), "GoogleAPIsPublisher"); |
105 | 104 |
106 /// <summary>The program's options.</summary> | 105 /// <summary>The program's options.</summary> |
107 readonly Options options; | 106 readonly Options options; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 | 174 |
176 IEnumerable<DiscoveryItem> apis; | 175 IEnumerable<DiscoveryItem> apis; |
177 if (options.AllApis) | 176 if (options.AllApis) |
178 { | 177 { |
179 apis = await new DiscoveryService().GetApis(DiscoveryApiUri); | 178 apis = await new DiscoveryService().GetApis(DiscoveryApiUri); |
180 } | 179 } |
181 else | 180 else |
182 { | 181 { |
183 apis = new List<DiscoveryItem> { new DiscoveryItem | 182 apis = new List<DiscoveryItem> { new DiscoveryItem |
184 { | 183 { |
185 Name = options.ApiName, | 184 Name = options.ApiName.ToLower(), |
186 Version = options.ApiVersion | 185 Version = options.ApiVersion.ToLower() |
187 }}; | 186 }}; |
188 } | 187 } |
189 | 188 |
190 if (Directory.Exists(DownloadBundleTempDirectory)) | 189 if (Directory.Exists(DownloadBundleTempDirectory)) |
191 { | 190 { |
192 Directory.Delete(DownloadBundleTempDirectory, true); | 191 Directory.Delete(DownloadBundleTempDirectory, true); |
193 } | 192 } |
194 Directory.CreateDirectory(DownloadBundleTempDirectory); | 193 Directory.CreateDirectory(DownloadBundleTempDirectory); |
195 | 194 |
196 try | 195 try |
(...skipping 20 matching lines...) Expand all Loading... |
217 var workingDir = Path.Combine(DownloadBundleTempDirectory, | 216 var workingDir = Path.Combine(DownloadBundleTempDirectory, |
218 item.Name + "-" + item.Version); | 217 item.Name + "-" + item.Version); |
219 Directory.CreateDirectory(workingDir); | 218 Directory.CreateDirectory(workingDir); |
220 | 219 |
221 var bundleUri = string.Format(DownloadUriFormat, item.Name, item
.Version); | 220 var bundleUri = string.Format(DownloadUriFormat, item.Name, item
.Version); |
222 if (!string.IsNullOrEmpty(options.GoogleApisVersion)) | 221 if (!string.IsNullOrEmpty(options.GoogleApisVersion)) |
223 { | 222 { |
224 bundleUri = bundleUri + "&lv=" + options.GoogleApisVersion; | 223 bundleUri = bundleUri + "&lv=" + options.GoogleApisVersion; |
225 } | 224 } |
226 | 225 |
227 var publisher = new ApiItemLogic(item) | 226 var publisher = new NuGetApiPublisher(item) |
228 { | 227 { |
229 BundleDirectory = workingDir, | 228 BundleDirectory = workingDir, |
230 BundleUri = new Uri(bundleUri), | 229 BundleUri = new Uri(bundleUri), |
231 TemplateDirectory = TemplateDirectory, | 230 TemplateDirectory = TemplateDirectory, |
232 NuGetApiKey = options.NuGetApiKey, | 231 NuGetApiKey = options.NuGetApiKey, |
233 }; | 232 }; |
234 | 233 |
235 try | 234 try |
236 { | 235 { |
237 await publisher.Run(); | 236 await publisher.Run(); |
238 } | 237 } |
239 catch (Exception ex) | 238 catch (Exception ex) |
240 { | 239 { |
241 TraceSource.TraceEvent(TraceEventType.Error, "{0}\t Exceptio
n [{1}] occurred", item, ex.Message); | 240 TraceSource.TraceEvent(TraceEventType.Error, "{0}\t Exceptio
n [{1}] occurred", item, ex.Message); |
242 } | 241 } |
243 } | 242 } |
244 } | 243 } |
245 | 244 |
246 /// <summary> | 245 /// <summary> |
247 /// Tests the main logic behave as expected. <see cref="ApiItemLogic.Tes
t"/> for more details. | 246 /// Tests the main logic behave as expected. <see cref="NuGetApiPublishe
r.Test"/> for more details. |
248 /// </summary> | 247 /// </summary> |
249 async Task TestAsync(IEnumerable<DiscoveryItem> apis) | 248 async Task TestAsync(IEnumerable<DiscoveryItem> apis) |
250 { | 249 { |
251 foreach (var item in apis) | 250 foreach (var item in apis) |
252 { | 251 { |
253 var publisher = new ApiItemLogic(item) | 252 var publisher = new NuGetApiPublisher(item) |
254 { | 253 { |
255 TemplateDirectory = TemplateDirectory, | 254 TemplateDirectory = TemplateDirectory, |
256 }; | 255 }; |
257 try | 256 try |
258 { | 257 { |
259 await publisher.Test(options.ApisDirectory); | 258 await publisher.Test(options.ApisDirectory); |
260 } | 259 } |
261 catch (Exception ex) | 260 catch (Exception ex) |
262 { | 261 { |
263 TraceSource.TraceEvent(TraceEventType.Error, "{0}\t Exceptio
n [{1}] occurred", item, ex.Message); | 262 TraceSource.TraceEvent(TraceEventType.Error, "{0}\t Exceptio
n [{1}] occurred", item, ex.Message); |
264 } | 263 } |
265 } | 264 } |
266 } | 265 } |
267 } | 266 } |
268 } | 267 } |
LEFT | RIGHT |