deletePackage method
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});
}