import pathlib,subprocess,sys,json
root=pathlib.Path(__file__).parent
checkout=sys.argv[1];side=sys.argv[2]
home=root/side
cases=[('HTTPS space','https://git.example/team/my%20repo.git','my repo.git'),('SCP percent','git@git.example:team/100%.git','100%.git'),('SCP hash','git@git.example:team/a#b.git','a#b.git'),('Malformed escape','https://git.example/team/bad%zz.git','bad%zz.git')]
for title,url,name in cases:
 workspace=root/side/'projects'/title
 workspace.mkdir(parents=True,exist_ok=True)
 def git(*args):return subprocess.run(['git',*args],cwd=workspace,check=True,capture_output=True)
 if not (workspace/'.git').exists():
  git('init','-b','main');(workspace/'README.md').write_text('Synthetic repository: '+name+'\n');git('add','.');git('-c','user.name=Scenario','-c','user.email=scenario@example.invalid','commit','-m','Synthetic repository')
  git('remote','add','origin',url)
 result=subprocess.run(['node','apps/server/src/bin.ts','project','add',str(workspace),'--title',title,'--base-dir',str(home)],cwd=checkout,capture_output=True,text=True)
 if result.returncode and 'ProjectAlreadyExistsError' not in result.stdout+result.stderr:raise RuntimeError(result.stdout+result.stderr)
 bare=root/'git-host'/'team'/name
 bare.parent.mkdir(parents=True,exist_ok=True)
 if not bare.exists():subprocess.run(['git','clone','--bare',str(workspace),str(bare)],check=True,capture_output=True)
print('Seeded four synthetic repositories')
