| // Copyright 2021 Google LLC |
| // |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file or at |
| // https://developers.google.com/open-source/licenses/bsd |
| |
| import 'dart:convert'; |
| import 'dart:io'; |
| |
| import 'src/apis_files_generator.dart'; |
| import 'src/apis_package_generator.dart'; |
| import 'src/generated_googleapis/discovery/v1.dart'; |
| import 'src/pubspec.dart'; |
| import 'src/utils.dart'; |
| |
| export 'src/generated_googleapis/discovery/v1.dart'; |
| export 'src/generated_googleapis/src/user_agent.dart'; |
| export 'src/pubspec.dart'; |
| export 'src/utils.dart' show GenerateResult; |
| |
| List<GenerateResult> generateApiPackage( |
| List<RestDescription> descriptions, |
| String outputDirectory, |
| Pubspec pubspec, { |
| bool deleteExisting = true, |
| required Set<String> skipTests, |
| Map<String, String> deprecationMap = const {}, |
| }) { |
| final apisPackageGenerator = ApisPackageGenerator( |
| descriptions, |
| pubspec, |
| outputDirectory, |
| deleteExisting: deleteExisting, |
| skipTests: skipTests, |
| deprecationMap: deprecationMap, |
| ); |
| |
| return apisPackageGenerator.generateApiPackage(); |
| } |
| |
| List<GenerateResult> generateAllLibraries( |
| String inputDirectory, |
| String outputDirectory, |
| Pubspec pubspec, { |
| bool deleteExisting = true, |
| required Set<String> skipTests, |
| Map<String, String> deprecationMap = const {}, |
| }) { |
| final apiDescriptions = Directory(inputDirectory) |
| .listSync() |
| .whereType<File>() |
| .where((fse) => fse.path.endsWith('.json')) |
| .map( |
| (entity) => RestDescription.fromJson( |
| json.decode(entity.readAsStringSync()) as Map, |
| ), |
| ) |
| .toList(); |
| return generateApiPackage( |
| apiDescriptions, |
| outputDirectory, |
| pubspec, |
| deleteExisting: deleteExisting, |
| skipTests: skipTests, |
| deprecationMap: deprecationMap, |
| ); |
| } |
| |
| List<GenerateResult> generateApiFiles( |
| String inputDirectory, |
| String outputDirectory, { |
| bool updatePubspec = false, |
| bool? useCorePrefixes = true, |
| }) { |
| final descriptions = <DescriptionImportPair>[]; |
| Directory(inputDirectory) |
| .listSync() |
| .where((fse) => fse is File && fse.path.endsWith('.json')) |
| .forEach((FileSystemEntity entity) { |
| final diPair = DescriptionImportPair( |
| (entity as File).readAsStringSync(), |
| null, |
| ); |
| descriptions.add(diPair); |
| }); |
| final clientFileGenerator = ApisFilesGenerator( |
| descriptions, |
| outputDirectory, |
| updatePubspec: updatePubspec, |
| useCorePrefixes: useCorePrefixes, |
| ); |
| return clientFileGenerator.generate(); |
| } |