blob: e86c1b96110b21d324243b3c439572f0b22d9fff [file] [edit]
// 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();
}