.PHONY: publish pack pack-and-publish sync-version check-version

sync-version:
	@python -c "import json, tomllib; \
	v = tomllib.load(open('pyproject.toml','rb'))['project']['version']; \
	m = json.load(open('manifest.json')); m['version'] = v; \
	json.dump(m, open('manifest.json','w'), indent=2); \
	s = json.load(open('server.json')); s['version'] = v; \
	[p.__setitem__('version', v) for p in s.get('packages', [])]; \
	json.dump(s, open('server.json','w'), indent=2); \
	print(f'Synced manifest.json and server.json to v{v}')"

check-version:
	@python -c "import json, tomllib, urllib.request; \
	pv = tomllib.load(open('pyproject.toml','rb'))['project']['version']; \
	mv = json.load(open('manifest.json'))['version']; \
	sv = json.load(open('server.json'))['version']; \
	assert pv == mv == sv, f'Version mismatch: pyproject.toml={pv}, manifest.json={mv}, server.json={sv}. Run make sync-version'; \
	print(f'Local versions match: v{pv}'); \
	r = urllib.request.Request('https://mcp.obris.ai/.well-known/mcp/server-card.json', headers={'User-Agent': 'obris-mcp/check-version'}); \
	card = json.loads(urllib.request.urlopen(r, timeout=5).read()); \
	lv = card['serverInfo']['version']; \
	ok = lv == pv; \
	print(f'Live server-card.json: v{lv}' + ('' if ok else f' ⚠ MISMATCH — expected v{pv}. Deploy obris-v2 to update.')); \
	exit(0 if ok else 1)"

publish:
	rm -rf dist/
	uv build
	@UV_PUBLISH_PASSWORD=$(OBRIS_MCP_PYPI_TOKEN) uv publish

pack: check-version
	mcpb pack .

pack-and-publish: pack publish
	mcp-publisher publish
	smithery mcp publish "https://mcp.obris.ai/" -n @obris/obris-mcp --config-schema '{"type":"object","properties":{}}'
