Skip to content

Instantly share code, notes, and snippets.

@angeloevangelista
Created May 24, 2023 18:52
Show Gist options
  • Save angeloevangelista/2642fdb4d4f11d61e26f0c6e1771f75b to your computer and use it in GitHub Desktop.
Save angeloevangelista/2642fdb4d4f11d61e26f0c6e1771f75b to your computer and use it in GitHub Desktop.
It deletes a bitbucket project (and sends all the repositories within to hell)
import requests
def delete_bitbucket_project(access_token: str, account: str, project_key: str):
project_repositories = []
default_api_headers = {
'authorization': f'Bearer {access_token}'
}
current_page = 1
has_next_page = True
while has_next_page:
fetch_repositories_url = f'https://bitbucket.org/api/internal/workspaces/{account}/projects/{project_key}/repositories'
fetch_repositories_response_data = requests.get(
fetch_repositories_url,
headers=default_api_headers,
params={
'page': current_page,
'pagelen': 100,
}
).json()
current_page += 1
has_next_page = 'next' in fetch_repositories_response_data
project_repositories.extend(fetch_repositories_response_data['values'])
print(
f'info: found {len(project_repositories)} repositories in project {project_key}',
)
for repository in project_repositories:
repository_name = repository["name"]
delete_repository_url = f'https://api.bitbucket.org/2.0/repositories/{account}/{repository_name}'
delete_repository_response = requests.delete(
delete_repository_url,
headers=default_api_headers
)
if delete_repository_response.status_code != 204:
print(f'error: an error occurred while deleting repository {repository_name}')
raise Exception({
'url': delete_repository_url,
'response': delete_repository_response.text,
})
else:
print(f'info: deleted repository {repository_name}')
delete_project_url = f'https://bitbucket.org/!api/2.0/workspaces/{account}/projects/{project_key}'
delete_project_response = requests.delete(
delete_project_url,
headers=default_api_headers
)
if delete_project_response.status_code != 204:
print(f'error: an error occurred while deleting project {project_key}')
raise Exception({
'url': delete_project_url,
'response': delete_project_response.text,
})
else:
print(f'info: deleted project {project_key}')
delete_bitbucket_project(
access_token="<ACCESS_TOKEN>",
account="<ACCOUNT>",
project_key="<PROJECT_KEY>"
)
requests==2.31.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment