deletePackage method

  1. @override
Future<void> deletePackage(
  1. String id, {
  2. bool force = false,
})
override

Deletes the package with id. force is required if it has releases.

Implementation

@override
Future<void> deletePackage(String id, {bool force = false}) async {
  final existing = await _requirePackage(id);
  final releases = await repositories.releases.listByPackage(
    id,
    query: ReleaseQuery.all,
  );
  if (releases.isNotEmpty && !force) {
    throw ConflictException(
      "Package '${existing.name}' still has ${releases.length} release(s); "
      'pass force to delete them too',
      reference: existing.name,
    );
  }
  for (final release in releases) {
    await deleteRelease(release.id);
  }
  await repositories.packages.delete(id);
  logger.info('Package deleted', context: {'name': existing.name});
}