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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « bin/generate.dart ('k') | lib/src/package_configuration.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 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 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 library googleapis_generator; 5 library googleapis_generator;
6 6
7 import "dart:io"; 7 import "dart:io";
8 import "dart:async"; 8 import "dart:async";
9 import "dart:convert"; 9 import "dart:convert";
10 10
11 import 'package:discoveryapis_generator/discoveryapis_generator.dart'; 11 import 'package:discoveryapis_generator/discoveryapis_generator.dart';
12 import 'package:http/http.dart' as http; 12 import 'package:http/http.dart' as http;
13 13
14 import 'src/package_configuration.dart'; 14 import 'src/package_configuration.dart';
15 15
16 Future<List<DirectoryListItems>> _listAllApis() { 16 Future<List<DirectoryListItems>> _listAllApis() {
17 var client = new http.Client(); 17 var client = new http.Client();
18 return _discoveryClient(client).apis.list().then((DirectoryList list) { 18 return _discoveryClient(client).apis.list().then((DirectoryList list) {
19 return list.items; 19 return list.items;
20 }).whenComplete(() => client.close()); 20 }).whenComplete(() => client.close());
21 } 21 }
22 22
23 Future<List<GenerateResult>> downloadDiscoveryDocuments( 23 Future<List<RestDescription>> downloadDiscoveryDocuments(
24 String outputDir, {List<String> ids}) { 24 String outputDir, {List<String> ids}) {
25 var apiDescriptions = <RestDescription>[]; 25 return fetchDiscoveryDocuments(ids: ids).then((List<RestDescription> apis) {
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); 26 var directory = new Directory(outputDir);
41 if (directory.existsSync()) { 27 if (directory.existsSync()) {
42 print('Deleting directory $outputDir.'); 28 print('Deleting directory $outputDir.');
43 directory.deleteSync(recursive: true); 29 directory.deleteSync(recursive: true);
44 } 30 }
45 directory.createSync(recursive: true); 31 directory.createSync(recursive: true);
46 32
47 for (var description in apiDescriptions) { 33 for (var description in apis) {
48 var name = '$outputDir/${description.name}__${description.version}.json'; 34 var name = '$outputDir/${description.name}__${description.version}.json';
49 var file = new File(name); 35 var file = new File(name);
50 var encoder = new JsonEncoder.withIndent(' '); 36 var encoder = new JsonEncoder.withIndent(' ');
51 file.writeAsStringSync(encoder.convert(description.toJson())); 37 file.writeAsStringSync(encoder.convert(description.toJson()));
52 print('Written: $name'); 38 print('Written: $name');
53 } 39 }
40 return apis;
54 }); 41 });
55 } 42 }
56 43
57 Future generateFromConfiguration(String configFile) { 44 Future<List<RestDescription>> fetchDiscoveryDocuments({List<String> ids}) {
45 var apiDescriptions = <RestDescription>[];
46
47 var client = new http.Client();
48 var discovery = _discoveryClient(client);
49 return discovery.apis.list().then((DirectoryList list) {
50 var futures = <Future>[];
51 for (var item in list.items) {
52 if (ids == null || ids.contains(item.id)) {
53 futures.add(discovery.apis.getRest(item.name, item.version).then((doc) {
54 apiDescriptions.add(doc);
55 }));
56 }
57 }
58 return Future.wait(futures)
59 .whenComplete(() => client.close())
60 .then((_) => apiDescriptions);
61 });
62 }
63
64 List<RestDescription> loadDiscoveryDocuments(String directory) {
65 var apiDescriptions = new Directory(directory).listSync()
66 .where((fse) => fse is File && fse.path.endsWith('.json'))
67 .map((File file) {
68 return new RestDescription.fromJson(JSON.decode(file.readAsStringSync()));
69 }).toList();
70 return apiDescriptions;
71 }
72
73 Future downloadFromConfiguration(String configFile) {
58 return _listAllApis().then((List<DirectoryListItems> items) { 74 return _listAllApis().then((List<DirectoryListItems> items) {
59 var configuration = new DiscoveryPackagesConfiguration(configFile, items); 75 var configuration = new DiscoveryPackagesConfiguration(configFile);
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 76
71 // Generate the packages. 77 // Generate the packages.
72 var configFileUri = new Uri.file(configFile); 78 var configFileUri = new Uri.file(configFile);
73 return configuration.generate(configFileUri.resolve('discovery').path, 79 return configuration.download(
74 configFileUri.resolve('generated').path); 80 configFileUri.resolve('discovery').path, items).then((_) {
81 // Print warnings for APIs not mentioned.
82 if (configuration.missingApis.isNotEmpty) {
83 print('WARNING: No configuration for the following APIs:');
84 configuration.missingApis.forEach((id) => print('- $id'));
85 }
86 if (configuration.excessApis.isNotEmpty) {
87 print('WARNING: The following APIs do not exist:');
88 configuration.excessApis.forEach((id) => print('- $id'));
89 }
90 });
75 }); 91 });
76 } 92 }
77 93
94 void generateFromConfiguration(String configFile) {
95 var configuration =
96 new DiscoveryPackagesConfiguration(configFile);
97
98 // Generate the packages.
99 var configFileUri = new Uri.file(configFile);
100 return configuration.generate(configFileUri.resolve('discovery').path,
101 configFileUri.resolve('generated').path);
102 }
103
78 DiscoveryApi _discoveryClient(http.Client client) => new DiscoveryApi(client); 104 DiscoveryApi _discoveryClient(http.Client client) => new DiscoveryApi(client);
OLDNEW
« no previous file with comments | « bin/generate.dart ('k') | lib/src/package_configuration.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698