I didn't follow my own advice on https://justyn.io/til/mirror-starred-repositories-from-github-to-gitea-forgejo/ and quickly used up all of the disk space on my small forgejo vm.
I decided this was a problem for another day and wanted to delete everything in my mirrors
organization, which is where I mirrored all of the starred repos to. Unfortunately trying to delete an organization from the UI just returns an error due to it still owning repositories.
Instead, I wrote another script to loop through all repos belonging to an organization and delete them.
WARNING: There is no confirmation, this will delete all repos it finds.
#!/bin/bash
# See https://justyn.io/til/delete-all-repos-from-an-organization-in-forgejo-gitea/ for more informataion
# Change these
FORGEJO_URL=https://git.domain.tld:3000
FORGEJO_USER=justyns
FORGEJO_TOKEN=xxxx
ORG_NAME=mirrors
# List all repositories in the organization
repos=$(curl -s -u $FORGEJO_USER:$FORGEJO_TOKEN "$FORGEJO_URL/api/v1/orgs/$ORG_NAME/repos?limit=100" | jq -r '.[].name')
# Loop through each repository and delete it
for repo in $repos; do
echo "Deleting repository: $repo"
echo "^^^ I didn't really delete anything yet. Remove this line and the next if you are really sure you want to delete _ALL_ repos in $ORG_NAME"
exit 1
curl -s -u $FORGEJO_USER:$FORGEJO_TOKEN -X DELETE "$FORGEJO_URL/api/v1/repos/$ORG_NAME/$repo"
done
echo "All repositories have been deleted."