createPackage method

  1. @override
Future<Package> createPackage({
  1. required String projectId,
  2. required String name,
  3. String? displayName,
  4. String? description,
  5. ReleaseChannel defaultChannel = ReleaseChannel.release,
  6. List<String> platforms = const [],
  7. Map<String, String> metadata = const {},
})
override

Creates a package named name under projectId.

Implementation

@override
Future<Package> createPackage({
  required String projectId,
  required String name,
  String? displayName,
  String? description,
  ReleaseChannel defaultChannel = ReleaseChannel.release,
  List<String> platforms = const [],
  Map<String, String> metadata = const {},
}) async {
  Names.require(name, 'package name');
  final project = await _requireProject(projectId);
  if (await repositories.packages.byName(projectId, name) != null) {
    throw ConflictException(
      "A package named '$name' already exists in this project",
      reference: name,
    );
  }
  final now = clock.now();
  final package = Package(
    id: idGenerator.next('pkg'),
    projectId: projectId,
    organizationId: project.organizationId,
    name: name,
    displayName: displayName,
    description: description,
    defaultChannel: defaultChannel,
    platforms: platforms,
    createdAt: now,
    updatedAt: now,
    metadata: metadata,
  );
  await repositories.packages.save(package);
  logger.info('Package created', context: {'name': name});
  return package;
}