Skip to content

Commit 1cc3815

Browse files
marcarlclaude
andcommitted
Add script to delete web/ folder from Cloudflare R2
This script allows deleting all files under the web/ prefix in Cloudflare R2 storage using AWS CLI. Includes --force flag to skip confirmation prompt for automated usage. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 8dfc95e commit 1cc3815

1 file changed

Lines changed: 152 additions & 0 deletions

File tree

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Script för att ta bort alla filer under web/ i Cloudflare R2
4+
"""
5+
6+
import os
7+
import sys
8+
import subprocess
9+
import argparse
10+
11+
def check_required_env_vars():
12+
"""Kontrollera att alla nödvändiga miljövariabler är satta"""
13+
required_vars = [
14+
'CLOUDFLARE_R2_ACCESS_KEY_ID',
15+
'CLOUDFLARE_R2_SECRET_ACCESS_KEY',
16+
'CLOUDFLARE_R2_BUCKET_NAME',
17+
'CLOUDFLARE_R2_ACCOUNT_ID'
18+
]
19+
20+
missing_vars = []
21+
for var in required_vars:
22+
if not os.getenv(var):
23+
missing_vars.append(var)
24+
25+
if missing_vars:
26+
print("Error: Följande miljövariabler saknas:")
27+
for var in missing_vars:
28+
print(f" - {var}")
29+
print("\nExempel på hur du sätter dem:")
30+
print("export CLOUDFLARE_R2_ACCESS_KEY_ID='your_access_key'")
31+
print("export CLOUDFLARE_R2_SECRET_ACCESS_KEY='your_secret_key'")
32+
print("export CLOUDFLARE_R2_BUCKET_NAME='your_bucket_name'")
33+
print("export CLOUDFLARE_R2_ACCOUNT_ID='your_account_id'")
34+
return False
35+
36+
print("✓ Alla nödvändiga miljövariabler är konfigurerade")
37+
return True
38+
39+
def configure_aws_cli():
40+
"""Konfigurera AWS CLI för Cloudflare R2"""
41+
print("Konfigurerar AWS CLI för Cloudflare R2...")
42+
43+
commands = [
44+
['aws', 'configure', 'set', 'aws_access_key_id', os.getenv('CLOUDFLARE_R2_ACCESS_KEY_ID')],
45+
['aws', 'configure', 'set', 'aws_secret_access_key', os.getenv('CLOUDFLARE_R2_SECRET_ACCESS_KEY')],
46+
['aws', 'configure', 'set', 'region', 'us-east-1'],
47+
['aws', 'configure', 'set', 'output', 'json']
48+
]
49+
50+
for cmd in commands:
51+
try:
52+
subprocess.run(cmd, check=True, capture_output=True)
53+
except subprocess.CalledProcessError as e:
54+
print(f"Error vid konfiguration av AWS CLI: {e}")
55+
return False
56+
57+
print("✓ AWS CLI konfigurerad")
58+
return True
59+
60+
def delete_web_folder():
61+
"""Ta bort alla filer under web/ i Cloudflare R2"""
62+
bucket_name = os.getenv('CLOUDFLARE_R2_BUCKET_NAME')
63+
account_id = os.getenv('CLOUDFLARE_R2_ACCOUNT_ID')
64+
endpoint_url = f"https://{account_id}.r2.cloudflarestorage.com"
65+
66+
print(f"Tar bort alla filer under web/ i bucket {bucket_name}...")
67+
68+
cmd = [
69+
'aws', 's3', 'rm', f's3://{bucket_name}/web/',
70+
'--endpoint-url', endpoint_url,
71+
'--recursive'
72+
]
73+
74+
env = os.environ.copy()
75+
env['AWS_DEFAULT_REGION'] = 'us-east-1'
76+
77+
try:
78+
print(f"Kör kommando: {' '.join(cmd)}")
79+
result = subprocess.run(cmd, env=env, check=True, capture_output=True, text=True)
80+
print("✓ Alla filer under web/ har tagits bort")
81+
82+
# Visa AWS CLI output om det finns
83+
if result.stdout.strip():
84+
print("\nAWS CLI output:")
85+
print(result.stdout.strip())
86+
87+
if result.stderr.strip():
88+
print("\nAWS CLI stderr:")
89+
print(result.stderr.strip())
90+
91+
return True
92+
except subprocess.CalledProcessError as e:
93+
print(f"Error vid borttagning av filer: {e}")
94+
if e.stderr:
95+
print(f"Stderr: {e.stderr}")
96+
if e.stdout:
97+
print(f"Stdout: {e.stdout}")
98+
return False
99+
100+
def main():
101+
"""Huvudfunktion"""
102+
parser = argparse.ArgumentParser(
103+
description='Ta bort alla filer under web/ i Cloudflare R2'
104+
)
105+
parser.add_argument(
106+
'--force',
107+
action='store_true',
108+
help='Hoppa över bekräftelse'
109+
)
110+
args = parser.parse_args()
111+
112+
print("=== Ta bort web/ från Cloudflare R2 ===")
113+
print()
114+
115+
# Bekräfta med användaren om inte --force används
116+
if not args.force:
117+
print("VARNING: Detta kommer att ta bort alla filer under web/ i R2 bucketen.")
118+
print("Detta kan inte ångras!")
119+
response = input("Är du säker på att du vill fortsätta? (ja/nej): ")
120+
121+
if response.lower() not in ['ja', 'j', 'yes', 'y']:
122+
print("Avbruten.")
123+
sys.exit(0)
124+
125+
print()
126+
127+
# Kontrollera att AWS CLI är installerat
128+
try:
129+
subprocess.run(['aws', '--version'], check=True, capture_output=True)
130+
except (subprocess.CalledProcessError, FileNotFoundError):
131+
print("Error: AWS CLI är inte installerat eller inte tillgängligt i PATH")
132+
print("Installera med: pip install awscli")
133+
sys.exit(1)
134+
135+
# Kontrollera miljövariabler
136+
if not check_required_env_vars():
137+
sys.exit(1)
138+
139+
# Konfigurera AWS CLI
140+
if not configure_aws_cli():
141+
sys.exit(1)
142+
143+
# Ta bort filerna
144+
print()
145+
if delete_web_folder():
146+
print("\n✓ Klart!")
147+
else:
148+
print("\n✗ Något gick fel")
149+
sys.exit(1)
150+
151+
if __name__ == "__main__":
152+
main()

0 commit comments

Comments
 (0)