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

Side by Side Diff: lib/googleapis_generator.dart

Issue 998343002: Add a generate script to generate the googleapis libraries. (Closed) Base URL: https://github.com/dart-lang/googleapis.git@master
Patch Set: Created 5 years, 9 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
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.
4
5 library googleapis_generator;
6
7 import "dart:io";
8 import "dart:async";
9 import "dart:convert";
10
11 import 'package:discoveryapis_generator/discoveryapis_generator.dart';
12 import 'package:http/http.dart' as http;
13
14 import 'src/package_configuration.dart';
15
16 Future<List<DirectoryListItems>> _listAllApis() {
17 var client = new http.Client();
18 return _discoveryClient(client).apis.list().then((DirectoryList list) {
19 return list.items;
20 }).whenComplete(() => client.close());
21 }
22
23 Future<List<GenerateResult>> downloadDiscoveryDocuments(
24 String outputDir, {List<String> ids}) {
25 var apiDescriptions = <RestDescription>[];
26
27 var client = new http.Client();
28 var discovery = _discoveryClient(client);
29 return discovery.apis.list().then((DirectoryList list) {
30 var futures = <Future>[];
31 for (var item in list.items) {
32 if (ids == null || ids.contains(item.id)) {
33 futures.add(discovery.apis.getRest(item.name, item.version).then((doc) {
34 apiDescriptions.add(doc);
35 }));
36 }
37 }
38 return Future.wait(futures).whenComplete(() => client.close());
39 }).then((_) {
40 var directory = new Directory(outputDir);
41 if (directory.existsSync()) {
42 print('Deleting directory $outputDir.');
43 directory.deleteSync(recursive: true);
44 }
45 directory.createSync(recursive: true);
46
47 for (var description in apiDescriptions) {
48 var name = '$outputDir/${description.name}__${description.version}.json';
49 var file = new File(name);
50 var encoder = new JsonEncoder.withIndent(' ');
51 file.writeAsStringSync(encoder.convert(description.toJson()));
52 print('Written: $name');
53 }
54 });
55 }
56
57 Future generateFromConfiguration(String configFile) {
58 return _listAllApis().then((List<DirectoryListItems> items) {
59 var configuration = new DiscoveryPackagesConfiguration(configFile, items);
60
61 // Print warnings for APIs not mentioned.
62 if (configuration.missingApis.isNotEmpty) {
63 print('WARNING: No configuration for the following APIs:');
64 configuration.missingApis.forEach((id) => print('- $id'));
65 }
66 if (configuration.excessApis.isNotEmpty) {
67 print('WARNING: The following APIs do not exist:');
68 configuration.excessApis.forEach((id) => print('- $id'));
69 }
70
71 // Generate the packages.
72 var configFileUri = new Uri.file(configFile);
73 return configuration.generate(configFileUri.resolve('discovery').path,
74 configFileUri.resolve('generated').path);
75 });
76 }
77
78 DiscoveryApi _discoveryClient(http.Client client) => new DiscoveryApi(client);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698