39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
import os
|
|
import re
|
|
|
|
# 1. Find all files, excluding .git and __pycache__
|
|
def get_all_files(base_dir):
|
|
file_list = []
|
|
for root, dirs, files in os.walk(base_dir):
|
|
# Exclude .git and __pycache__
|
|
dirs[:] = [d for d in dirs if d not in ['.git', '__pycache__']]
|
|
for file in files:
|
|
abs_path = os.path.join(root, file)
|
|
rel_path = os.path.relpath(abs_path, base_dir)
|
|
# Convert to web root-relative path
|
|
web_path = '/' + rel_path.replace('\\', '/').replace(' ', '%20')
|
|
file_list.append(web_path)
|
|
return sorted(file_list)
|
|
|
|
# 2. Update PRECACHE_URLS in sw.js
|
|
def update_precache_urls(sw_path, new_urls):
|
|
with open(sw_path, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
# Regex to find the PRECACHE_URLS array
|
|
pattern = re.compile(r'(const PRECACHE_URLS = \[)(.*?)(\];)', re.DOTALL)
|
|
# Format new URLs
|
|
url_lines = [f" '{url}'," for url in new_urls]
|
|
new_array = '\n' + '\n'.join(url_lines) + '\n'
|
|
new_content = pattern.sub(r"\\1" + new_array + r"\\3", content)
|
|
with open(sw_path, 'w', encoding='utf-8') as f:
|
|
f.write(new_content)
|
|
|
|
if __name__ == '__main__':
|
|
base_dir = os.path.dirname(os.path.abspath(__file__))
|
|
sw_path = os.path.join(base_dir, 'sw.js')
|
|
files = get_all_files(base_dir)
|
|
# Optionally filter out sw.js itself if you don't want to cache it
|
|
files = [f for f in files if not f.endswith('/sw.js')]
|
|
update_precache_urls(sw_path, files)
|
|
print(f'Updated PRECACHE_URLS in {sw_path} with {len(files)} files.')
|