Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1981)

Unified Diff: lib/googleapis_generator.dart

Issue 1085593003: Split `run_config` into `run_config download` and `run_config generate`. (Closed) Base URL: git@github.com:dart-lang/googleapis.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: lib/googleapis_generator.dart
diff --git a/lib/googleapis_generator.dart b/lib/googleapis_generator.dart
index 5f738edf4a372454ae54a6c578c822106547b140..124fa44504b1a220f7d3919da75b692817d1c93e 100644
--- a/lib/googleapis_generator.dart
+++ b/lib/googleapis_generator.dart
@@ -20,23 +20,9 @@ Future<List<DirectoryListItems>> _listAllApis() {
}).whenComplete(() => client.close());
}
-Future<List<GenerateResult>> downloadDiscoveryDocuments(
+Future<List<RestDescription>> downloadDiscoveryDocuments(
String outputDir, {List<String> ids}) {
- var apiDescriptions = <RestDescription>[];
-
- var client = new http.Client();
- var discovery = _discoveryClient(client);
- return discovery.apis.list().then((DirectoryList list) {
- var futures = <Future>[];
- for (var item in list.items) {
- if (ids == null || ids.contains(item.id)) {
- futures.add(discovery.apis.getRest(item.name, item.version).then((doc) {
- apiDescriptions.add(doc);
- }));
- }
- }
- return Future.wait(futures).whenComplete(() => client.close());
- }).then((_) {
+ return fetchDiscoveryDocuments(ids: ids).then((List<RestDescription> apis) {
var directory = new Directory(outputDir);
if (directory.existsSync()) {
print('Deleting directory $outputDir.');
@@ -44,35 +30,75 @@ Future<List<GenerateResult>> downloadDiscoveryDocuments(
}
directory.createSync(recursive: true);
- for (var description in apiDescriptions) {
+ for (var description in apis) {
var name = '$outputDir/${description.name}__${description.version}.json';
var file = new File(name);
var encoder = new JsonEncoder.withIndent(' ');
file.writeAsStringSync(encoder.convert(description.toJson()));
print('Written: $name');
}
+ return apis;
});
}
-Future generateFromConfiguration(String configFile) {
- return _listAllApis().then((List<DirectoryListItems> items) {
- var configuration = new DiscoveryPackagesConfiguration(configFile, items);
+Future<List<RestDescription>> fetchDiscoveryDocuments({List<String> ids}) {
+ var apiDescriptions = <RestDescription>[];
- // Print warnings for APIs not mentioned.
- if (configuration.missingApis.isNotEmpty) {
- print('WARNING: No configuration for the following APIs:');
- configuration.missingApis.forEach((id) => print('- $id'));
- }
- if (configuration.excessApis.isNotEmpty) {
- print('WARNING: The following APIs do not exist:');
- configuration.excessApis.forEach((id) => print('- $id'));
+ var client = new http.Client();
+ var discovery = _discoveryClient(client);
+ return discovery.apis.list().then((DirectoryList list) {
+ var futures = <Future>[];
+ for (var item in list.items) {
+ if (ids == null || ids.contains(item.id)) {
+ futures.add(discovery.apis.getRest(item.name, item.version).then((doc) {
+ apiDescriptions.add(doc);
+ }));
+ }
}
+ return Future.wait(futures)
+ .whenComplete(() => client.close())
+ .then((_) => apiDescriptions);
+ });
+}
+
+List<RestDescription> loadDiscoveryDocuments(String directory) {
+ var apiDescriptions = new Directory(directory).listSync()
+ .where((fse) => fse is File && fse.path.endsWith('.json'))
+ .map((File file) {
+ return new RestDescription.fromJson(JSON.decode(file.readAsStringSync()));
+ }).toList();
+ return apiDescriptions;
+}
+
+Future downloadFromConfiguration(String configFile) {
+ return _listAllApis().then((List<DirectoryListItems> items) {
+ var configuration = new DiscoveryPackagesConfiguration(configFile);
// Generate the packages.
var configFileUri = new Uri.file(configFile);
- return configuration.generate(configFileUri.resolve('discovery').path,
- configFileUri.resolve('generated').path);
+ return configuration.download(
+ configFileUri.resolve('discovery').path, items).then((_) {
+ // Print warnings for APIs not mentioned.
+ if (configuration.missingApis.isNotEmpty) {
+ print('WARNING: No configuration for the following APIs:');
+ configuration.missingApis.forEach((id) => print('- $id'));
+ }
+ if (configuration.excessApis.isNotEmpty) {
+ print('WARNING: The following APIs do not exist:');
+ configuration.excessApis.forEach((id) => print('- $id'));
+ }
+ });
});
}
+void generateFromConfiguration(String configFile) {
+ var configuration =
+ new DiscoveryPackagesConfiguration(configFile);
+
+ // Generate the packages.
+ var configFileUri = new Uri.file(configFile);
+ return configuration.generate(configFileUri.resolve('discovery').path,
+ configFileUri.resolve('generated').path);
+}
+
DiscoveryApi _discoveryClient(http.Client client) => new DiscoveryApi(client);

Powered by Google App Engine
This is Rietveld 408576698