OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of discovery_api_client_generator; | 5 part of discovery_api_client_generator; |
6 | 6 |
7 class Package { | 7 class Package { |
8 final String name; | 8 final String name; |
9 final List<String> apis; | 9 final List<String> apis; |
10 final Pubspec pubspec; | 10 final Pubspec pubspec; |
11 final String readme; | 11 final String readme; |
12 final String license; | 12 final String license; |
| 13 final String changelog; |
13 | 14 |
14 Package(this.name, this.apis, this.pubspec, this.readme, this.license); | 15 Package(this.name, this.apis, this.pubspec, this.readme, this.license, |
| 16 this.changelog); |
15 } | 17 } |
16 | 18 |
17 /** | 19 /** |
18 * Configuration of a set of packages generated from a set of APIs exposed by | 20 * Configuration of a set of packages generated from a set of APIs exposed by |
19 * a Discovery Service. | 21 * a Discovery Service. |
20 */ | 22 */ |
21 class DiscoveryPackagesConfiguration { | 23 class DiscoveryPackagesConfiguration { |
22 Map<String, Package> packages = {}; | 24 Map<String, Package> packages = {}; |
23 Iterable<String> excessApis; | 25 Iterable<String> excessApis; |
24 Iterable<String> missingApis; | 26 Iterable<String> missingApis; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 packages.forEach((name, package) { | 102 packages.forEach((name, package) { |
101 generateAllLibraries('$discoveryDocsDir/$name', | 103 generateAllLibraries('$discoveryDocsDir/$name', |
102 '$generatedApisDir/$name', | 104 '$generatedApisDir/$name', |
103 package.pubspec); | 105 package.pubspec); |
104 new File('$generatedApisDir/$name/README.md') | 106 new File('$generatedApisDir/$name/README.md') |
105 .writeAsStringSync(package.readme); | 107 .writeAsStringSync(package.readme); |
106 if (package.license != null) { | 108 if (package.license != null) { |
107 new File('$generatedApisDir/$name/LICENSE') | 109 new File('$generatedApisDir/$name/LICENSE') |
108 .writeAsStringSync(package.license); | 110 .writeAsStringSync(package.license); |
109 } | 111 } |
| 112 if (package.changelog != null) { |
| 113 new File('$generatedApisDir/$name/CHANGELOG.md') |
| 114 .writeAsStringSync(package.changelog); |
| 115 } |
110 }); | 116 }); |
111 }); | 117 }); |
112 } | 118 } |
113 | 119 |
114 // Return empty list for YAML null value. | 120 // Return empty list for YAML null value. |
115 static List _listFromYaml(value) => value != null ? value : []; | 121 static List _listFromYaml(value) => value != null ? value : []; |
116 | 122 |
117 static String _generateReadme( | 123 static String _generateReadme( |
118 String readmeFile, List<DirectoryListItems> items) { | 124 String readmeFile, List<DirectoryListItems> items) { |
119 var sb = new StringBuffer(); | 125 var sb = new StringBuffer(); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 | 168 |
163 static Package _packageFromYaml(String name, | 169 static Package _packageFromYaml(String name, |
164 YamlMap values, | 170 YamlMap values, |
165 String configFile, | 171 String configFile, |
166 List<DirectoryListItems> allApis) { | 172 List<DirectoryListItems> allApis) { |
167 var apis = _listFromYaml(values['apis']); | 173 var apis = _listFromYaml(values['apis']); |
168 var version = | 174 var version = |
169 values['version'] != null ? values['version'] : '0.1.0-dev'; | 175 values['version'] != null ? values['version'] : '0.1.0-dev'; |
170 var author = values['author']; | 176 var author = values['author']; |
171 var homepage = values['homepage']; | 177 var homepage = values['homepage']; |
| 178 |
| 179 var configUri = new Uri.file(configFile); |
| 180 |
172 var readmeFile; | 181 var readmeFile; |
173 if (values['readme'] != null) { | 182 if (values['readme'] != null) { |
174 readmeFile = new Uri.file(configFile).resolve(values['readme']).path; | 183 readmeFile = configUri.resolve(values['readme']).path; |
175 } | 184 } |
176 var licenseFile; | 185 var licenseFile; |
177 if (values['license'] != null) { | 186 if (values['license'] != null) { |
178 licenseFile = | 187 licenseFile = configUri.resolve(values['license']).path; |
179 new Uri.file(configFile).resolve(values['license']).path; | 188 } |
| 189 var changelogFile; |
| 190 if (values['changelog'] != null) { |
| 191 changelogFile = configUri.resolve(values['changelog']).path; |
180 } | 192 } |
181 | 193 |
182 // Generate package description. | 194 // Generate package description. |
183 var apiDescriptions = []; | 195 var apiDescriptions = []; |
184 var sb = new StringBuffer() | 196 var sb = new StringBuffer() |
185 ..write('"Auto-generated client libraries for accessing ' | 197 ..write('"Auto-generated client libraries for accessing ' |
186 'the following APIs:'); | 198 'the following APIs:'); |
187 bool first = true; | 199 bool first = true; |
188 allApis.forEach((DirectoryListItems apiDescription) { | 200 allApis.forEach((DirectoryListItems apiDescription) { |
189 if (apis.contains(apiDescription.id)) { | 201 if (apis.contains(apiDescription.id)) { |
190 if (!first) sb.write(', '); | 202 if (!first) sb.write(', '); |
191 sb.write(apiDescription.id); | 203 sb.write(apiDescription.id); |
192 apiDescriptions.add(apiDescription); | 204 apiDescriptions.add(apiDescription); |
193 first = false; | 205 first = false; |
194 } | 206 } |
195 }); | 207 }); |
196 sb.write('"'); | 208 sb.write('"'); |
197 | 209 |
198 // Generate the README.md file content. | 210 // Generate the README.md file content. |
199 var readme = _generateReadme(readmeFile, apiDescriptions); | 211 var readme = _generateReadme(readmeFile, apiDescriptions); |
200 | 212 |
201 // Read the LICENSE | 213 // Read the LICENSE |
202 var license = new File(licenseFile).readAsStringSync(); | 214 var license = new File(licenseFile).readAsStringSync(); |
203 | 215 |
| 216 // Read CHANGELOG.md |
| 217 var changelog = new File(changelogFile).readAsStringSync(); |
| 218 |
204 // Create package description with pubspec.yaml information. | 219 // Create package description with pubspec.yaml information. |
205 var pubspec = new Pubspec( | 220 var pubspec = new Pubspec( |
206 name, version, sb.toString(), author: author, homepage: homepage); | 221 name, version, sb.toString(), author: author, homepage: homepage); |
207 return new Package(name, apis, pubspec, readme, license); | 222 return new Package(name, apis, pubspec, readme, license, changelog); |
208 } | 223 } |
209 | 224 |
210 /// The known APIs are the APis mentioned in each package together with | 225 /// The known APIs are the APis mentioned in each package together with |
211 /// the APIs explicitly skipped. | 226 /// the APIs explicitly skipped. |
212 static Set<String> _calculateKnownApis(Map<String, Package> packages, | 227 static Set<String> _calculateKnownApis(Map<String, Package> packages, |
213 YamlList skippedApis) { | 228 YamlList skippedApis) { |
214 var knownApis = new Set(); | 229 var knownApis = new Set(); |
215 knownApis.addAll(skippedApis); | 230 knownApis.addAll(skippedApis); |
216 packages.forEach((_, package) => knownApis.addAll(package.apis)); | 231 packages.forEach((_, package) => knownApis.addAll(package.apis)); |
217 return knownApis; | 232 return knownApis; |
(...skipping 11 matching lines...) Expand all Loading... |
229 /// The excess APIs are the APIs mentioned in the configuration but not | 244 /// The excess APIs are the APIs mentioned in the configuration but not |
230 /// returned from the Discovery Service. | 245 /// returned from the Discovery Service. |
231 static Iterable<String> _calculateExcessApis( | 246 static Iterable<String> _calculateExcessApis( |
232 Iterable<String> knownApis, List<DirectoryListItems> allApis) { | 247 Iterable<String> knownApis, List<DirectoryListItems> allApis) { |
233 var excessApis = new Set.from(knownApis); | 248 var excessApis = new Set.from(knownApis); |
234 allApis.forEach((item) => excessApis.remove(item.id)); | 249 allApis.forEach((item) => excessApis.remove(item.id)); |
235 return excessApis; | 250 return excessApis; |
236 } | 251 } |
237 } | 252 } |
238 | 253 |
OLD | NEW |