"""Prepare the nkbmusic.com website in site/ for upload. Writes site/config.js (backend URL and public key, from env.json) and site/sitemap.xml (home and legal pages). python tools/build_site.py [--play-url URL] [--app-store-url URL] """ import argparse import datetime import json import pathlib ROOT = pathlib.Path(__file__).resolve().parent.parent SITE = ROOT / 'site' BASE = 'https://nkbmusic.com' def main(): ap = argparse.ArgumentParser() ap.add_argument('--play-url', default='', help='Google Play link, once the app is live') ap.add_argument('--app-store-url', default='', help='App Store link, once the app is live') args = ap.parse_args() env = json.loads((ROOT / 'env.json').read_text(encoding='utf-8')) config = { 'supabaseUrl': env['SUPABASE_URL'], # The publishable (anon) key is public by design; row-level security protects the data. 'supabaseKey': env['SUPABASE_PUBLISHABLE_KEY'], 'mediaBaseUrl': env['MEDIA_BASE_URL'], 'playUrl': args.play_url, 'appStoreUrl': args.app_store_url, } (SITE / 'config.js').write_text(f'window.NK_CONFIG = {json.dumps(config, indent=2)};\n', encoding='utf-8') today = datetime.date.today().isoformat() urls = [(f'{BASE}/', '1.0'), (f'{BASE}/privacy', '0.3'), (f'{BASE}/terms', '0.3'), (f'{BASE}/delete-account', '0.3')] body = '\n'.join(f' {u}{today}{p}' for u, p in urls) (SITE / 'sitemap.xml').write_text( '\n' f'\n{body}\n\n', encoding='utf-8') (SITE / 'robots.txt').write_text(f'User-agent: *\nAllow: /\n\nSitemap: {BASE}/sitemap.xml\n', encoding='utf-8') print(f'config.js, sitemap.xml ({len(urls)} URLs) and robots.txt written to {SITE}') if __name__ == '__main__': main()