Files
vyta/sync/vyta-sync/upload_to_blob.py
T

166 lines
3.6 KiB
Python

import os
import shutil
import subprocess
import sys
from pathlib import Path
from dotenv import load_dotenv
# ------------------------------------------------------------
# CONFIG
# ------------------------------------------------------------
SCRIPT_DIR = Path(__file__).resolve().parent
VYTA_PROJECT = Path(
r"C:\Users\Silicon Solder\Documents\Codex\vyta"
)
DATA_FILE = (
VYTA_PROJECT
/ "private-data"
/ "vyta-data.json"
)
BLOB_PATH = "vyta/vyta-data.json"
# Läs vyta-sync\.env
load_dotenv(SCRIPT_DIR / ".env")
# ------------------------------------------------------------
# HELPERS
# ------------------------------------------------------------
def find_vercel_cli() -> str:
"""
Hitta Vercel CLI.
På Windows ligger global npm CLI normalt som vercel.cmd.
"""
candidates = [
"vercel.cmd",
"vercel",
]
for candidate in candidates:
executable = shutil.which(candidate)
if executable:
return executable
# Vanlig npm global-bin på Windows
appdata = os.environ.get("APPDATA")
if appdata:
fallback = Path(appdata) / "npm" / "vercel.cmd"
if fallback.exists():
return str(fallback)
raise FileNotFoundError(
"Kunde inte hitta Vercel CLI. "
"Kontrollera att 'vercel --version' fungerar i PowerShell."
)
def main():
print("=" * 60)
print("VYTA → VERCEL PRIVATE BLOB")
print("=" * 60)
# --------------------------------------------------------
# Kontrollera datafil
# --------------------------------------------------------
if not DATA_FILE.exists():
print()
print("ERROR: Vyta-datafilen saknas:")
print(DATA_FILE)
sys.exit(1)
print()
print(f"Datafil: {DATA_FILE}")
print(f"Storlek: {DATA_FILE.stat().st_size:,} bytes")
# --------------------------------------------------------
# Blob-token
# --------------------------------------------------------
token = os.environ.get(
"BLOB_READ_WRITE_TOKEN"
)
if not token:
print()
print(
"ERROR: BLOB_READ_WRITE_TOKEN saknas i vyta-sync\\.env"
)
sys.exit(1)
print("Blob-token: OK")
# --------------------------------------------------------
# Vercel CLI
# --------------------------------------------------------
try:
vercel_cli = find_vercel_cli()
except FileNotFoundError as exc:
print()
print(f"ERROR: {exc}")
sys.exit(1)
print(f"Vercel CLI: {vercel_cli}")
# --------------------------------------------------------
# Upload
# --------------------------------------------------------
command = [
vercel_cli,
"blob",
"put",
str(DATA_FILE),
"--pathname",
BLOB_PATH,
"--access",
"private",
"--allow-overwrite",
"--content-type",
"application/json",
"--rw-token",
token,
]
print()
print(
f"Laddar upp till Private Blob: {BLOB_PATH}"
)
print()
result = subprocess.run(
command,
cwd=str(VYTA_PROJECT),
text=True,
)
if result.returncode != 0:
print()
print(
f"ERROR: Blob-upload misslyckades "
f"(exit code {result.returncode})"
)
sys.exit(result.returncode)
print()
print("=" * 60)
print("VYTA BLOB-UPLOAD KLAR")
print("=" * 60)
if __name__ == "__main__":
main()