Files
pwap/web/public/docs/reserve_crate_names_v2.py
T
pezkuwichain 1295c36241 Rebrand: polkadot → pezkuwi build fixes
- Fixed TypeScript type assertion issues
- Updated imports from api-augment/substrate to api-augment/bizinikiwi
- Fixed imgConvert.mjs header and imports
- Added @ts-expect-error for runtime-converted types
- Fixed all @polkadot copyright headers to @pezkuwi
2026-01-07 02:32:54 +03:00

320 lines
11 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
crates.io İsim Rezervasyon Script'i (Gelişmiş Versiyon)
Özellikler:
- Kaldığı yerden devam etme (--start-from)
- Ayarlanabilir bekleme süresi (--interval)
- Workspace izolasyonu (üst dizindeki Cargo.toml ile çakışmaz)
- "Already exists" durumunu akıllıca yönetir (bekleme yapmaz)
"""
import subprocess
import os
import sys
import json
import time
from pathlib import Path
import argparse
WORKSPACE_ROOT = Path(__file__).parent.resolve()
PLACEHOLDER_DIR = WORKSPACE_ROOT / "crate_placeholders"
# Yeni isim listesi
NEW_CRATE_NAMES = [
"asset-hub-pezkuwichain-emulated-chain",
"asset-hub-pezkuwichain-integration-tests",
"asset-hub-pezkuwichain-runtime",
"asset-hub-zagros-emulated-chain",
"asset-hub-zagros-integration-tests",
"asset-hub-zagros-runtime",
"asset-test-pezutils",
"pez-binary-merkle-tree",
"pez-chain-spec-guide-runtime",
"collectives-zagros-emulated-chain",
"collectives-zagros-integration-tests",
"collectives-zagros-runtime",
"coretime-pezkuwichain-emulated-chain",
"coretime-pezkuwichain-integration-tests",
"coretime-pezkuwichain-runtime",
"coretime-zagros-emulated-chain",
"coretime-zagros-integration-tests",
"coretime-zagros-runtime",
"emulated-integration-tests-common",
"pez-equivocation-detector",
"pez-erasure-coding-fuzzer",
"pez-ethereum-standards",
"pez-finality-relay",
"pez-fork-tree",
"pezframe-election-solution-type-fuzzer",
"pezframe-omni-bencher",
"pezframe-remote-externalities",
"pezframe-storage-access-test-runtime",
"pez-generate-bags",
"glutton-zagros-runtime",
"governance-zagros-integration-tests",
"pez-kitchensink-runtime",
"pez-messages-relay",
"pez-minimal-template-node",
"pez-minimal-template-runtime",
"pez-node-bench",
"pez-node-primitives",
"pez-node-rpc",
"pez-node-runtime-pez-generate-bags",
"pez-node-template-release",
"pez-node-testing",
"pez-penpal-emulated-chain",
"pez-penpal-runtime",
"people-pezkuwichain-emulated-chain",
"people-pezkuwichain-integration-tests",
"people-pezkuwichain-runtime",
"people-zagros-emulated-chain",
"people-zagros-integration-tests",
"people-zagros-runtime",
"pezkuwi",
"pezkuwichain-emulated-chain",
"pezkuwichain-runtime",
"pezkuwichain-runtime-constants",
"pezkuwichain-system-emulated-network",
"pezkuwichain-teyrchain-runtime",
"pezkuwichain-zagros-system-emulated-network",
"relay-bizinikiwi-client",
"relay-pezutils",
"pez-remote-ext-tests-bags-list",
"pez-revive-dev-node",
"pez-revive-dev-runtime",
"pez-slot-range-helper",
"pez-solochain-template-node",
"pez-solochain-template-runtime",
"pez-pez_subkey",
"pez-template-zombienet-tests",
"peztest-runtime-constants",
"test-teyrchain-adder",
"test-teyrchain-adder-collator",
"test-teyrchain-halt",
"test-teyrchain-undying",
"test-teyrchain-undying-collator",
"testnet-teyrchains-constants",
"teyrchain-template",
"teyrchain-template-node",
"teyrchain-template-runtime",
"teyrchains-common",
"teyrchains-relay",
"teyrchains-runtimes-test-utils",
"pez-tracing-gum",
"pez-pez-tracing-gum-proc-macro",
"yet-another-teyrchain-runtime",
"zagros-emulated-chain",
"zagros-runtime",
"zagros-runtime-constants",
"zagros-system-emulated-network",
"pez-zombienet-backchannel",
"pezassets-common",
"bp-asset-hub-pezkuwichain",
"bp-asset-hub-zagros",
"bp-pezbeefy",
"bp-bridge-hub-pezcumulus",
"bp-bridge-hub-pezkuwichain",
"bp-bridge-hub-zagros",
"bp-header-pez-chain",
"bp-pez-messages",
"bp-pezkuwi-bulletin",
"bp-pezkuwi-core",
"bp-pezkuwichain",
"bp-pez-relayers",
"pezbp-runtime",
"bp-test-pezutils",
"bp-teyrchains",
"bp-xcm-pezbridge-hub",
"bp-xcm-pezbridge-hub-router",
"bp-zagros",
"pezbridge-hub-common",
"pezbridge-hub-pezkuwichain-emulated-chain",
"pezbridge-hub-pezkuwichain-integration-tests",
"pezbridge-hub-pezkuwichain-runtime",
"pezbridge-hub-test-utils",
"pezbridge-hub-zagros-emulated-chain",
"pezbridge-hub-zagros-integration-tests",
"pezbridge-hub-zagros-runtime",
"pezbridge-runtime-common",
"pezmmr-gadget",
"pezmmr-rpc",
"pezsnowbridge-beacon-primitives",
"pezsnowbridge-core",
"pezsnowbridge-ethereum",
"pezsnowbridge-inbound-queue-primitives",
"pezsnowbridge-merkle-tree",
"pezsnowbridge-outbound-queue-primitives",
"pezsnowbridge-outbound-queue-runtime-api",
"pezsnowbridge-outbound-queue-v2-runtime-api",
"pezsnowbridge-pezpallet-ethereum-client",
"pezsnowbridge-pezpallet-ethereum-client-fixtures",
"pezsnowbridge-pezpallet-inbound-queue",
"pezsnowbridge-pezpallet-inbound-queue-fixtures",
"pezsnowbridge-pezpallet-inbound-queue-v2",
"pezsnowbridge-pezpallet-inbound-queue-v2-fixtures",
"pezsnowbridge-pezpallet-outbound-queue",
"pezsnowbridge-pezpallet-outbound-queue-v2",
"pezsnowbridge-pezpallet-system",
"pezsnowbridge-pezpallet-system-frontend",
"pezsnowbridge-pezpallet-system-v2",
"pezsnowpezbridge-runtime-common",
"pezsnowbridge-runtime-test-common",
"pezsnowbridge-system-runtime-api",
"pezsnowbridge-system-v2-runtime-api",
"pezsnowbridge-test-utils",
"pezsnowbridge-verification-primitives",
"xcm-pez-docs",
"xcm-pez-emulator",
"xcm-pez-executor-integration-tests",
"xcm-pez-procedural",
"xcm-runtime-pezapis",
"xcm-pez-simulator",
"xcm-pez-simulator-example",
"xcm-pez-simulator-fuzzer",
]
def check_crate_available(name: str) -> bool:
"""crates.io'da isim müsait mi kontrol et"""
result = subprocess.run(
["cargo", "search", name, "--limit", "1"],
capture_output=True, text=True
)
return f'{name} = "' not in result.stdout
def create_placeholder(name: str) -> Path:
"""Placeholder crate oluştur"""
crate_dir = PLACEHOLDER_DIR / name
crate_dir.mkdir(parents=True, exist_ok=True)
# [workspace] ekleyerek parent workspace ile ilişkisini kesiyoruz
cargo_toml = f'''[package]
name = "{name}"
version = "0.1.0"
edition = "2021"
description = "PezkuwiChain SDK component - placeholder for name reservation"
license = "Apache-2.0"
repository = "https://github.com/pezkuwichain/pezkuwi-sdk"
homepage = "https://pezkuwichain.io"
documentation = "https://docs.pezkuwichain.io/sdk/"
authors = ["Kurdistan Tech Institute <info@pezkuwichain.io>"]
keywords = ["pezkuwichain", "blockchain", "sdk"]
categories = ["cryptography::cryptocurrencies"]
[workspace]
[dependencies]
'''
(crate_dir / "Cargo.toml").write_text(cargo_toml)
src_dir = crate_dir / "src"
src_dir.mkdir(exist_ok=True)
lib_rs = f'''//! {name}
//! This crate is part of the PezkuwiChain SDK.
//! Full implementation coming soon.
#![doc = include_str!("../README.md")]
'''
(src_dir / "lib.rs").write_text(lib_rs)
readme = f'''# {name}
Part of [PezkuwiChain SDK](https://github.com/pezkuwichain/pezkuwi-sdk).
## About
This crate is a component of the PezkuwiChain blockchain SDK.
'''
(crate_dir / "README.md").write_text(readme)
return crate_dir
def publish_placeholder(crate_dir: Path, dry_run: bool = True):
"""Placeholder'ı crates.io'ya publish et.
Dönüş: (başarılı_mı, bekleme_gerekli_mi)
"""
args = ["cargo", "publish"]
if dry_run:
args.append("--dry-run")
args.extend(["--manifest-path", str(crate_dir / "Cargo.toml")])
result = subprocess.run(args, capture_output=True, text=True, cwd=crate_dir)
if result.returncode == 0:
return True, True # Başarılı, bekleme yap
# "already exists" hatasını kontrol et
if "already exists" in result.stderr:
return True, False # Zaten var, bekleme yapma
print(f"\n[HATA] {crate_dir.name} publish edilemedi:\n{result.stderr}")
return False, False
def main():
parser = argparse.ArgumentParser(description="crates.io isim rezervasyonu")
parser.add_argument("--list", action="store_true", help="İsimleri listele")
parser.add_argument("--check", action="store_true", help="crates.io'da müsaitlik kontrol et")
parser.add_argument("--create", action="store_true", help="Placeholder crate'leri oluştur")
parser.add_argument("--publish", action="store_true", help="crates.io'ya publish et")
parser.add_argument("--dry-run", action="store_true", help="Publish dry-run")
parser.add_argument("--start-from", type=str, help="İşleme bu crate isminden başla (öncekileri atlar)")
parser.add_argument("--interval", type=int, default=360, help="Publish arası bekleme süresi (saniye). Varsayılan: 360")
args = parser.parse_args()
if args.list:
for name in sorted(NEW_CRATE_NAMES):
print(f" {name}")
return
# Create/Publish işlemleri
if args.create or args.publish:
# Placeholder klasörünü oluştur
PLACEHOLDER_DIR.mkdir(exist_ok=True)
start_processing = False
if not args.start_from:
start_processing = True
print(f"Toplam Crate Sayısı: {len(NEW_CRATE_NAMES)}")
print(f"Bekleme Süresi: {args.interval} saniye")
if args.start_from:
print(f"Başlangıç: {args.start_from} (Öncekiler atlanacak)")
success = 0
failed = 0
skipped = 0
for i, name in enumerate(NEW_CRATE_NAMES, 1):
# Resume mantığı
if not start_processing:
if name == args.start_from:
start_processing = True
else:
skipped += 1
continue
print(f"[{i}/{len(NEW_CRATE_NAMES)}] {name}...", end=" ", flush=True)
# 1. Create
crate_dir = create_placeholder(name)
# 2. Publish (Eğer istenmişse)
if args.publish:
success_status, needs_wait = publish_placeholder(crate_dir, args.dry_run)
if success_status:
if needs_wait:
print("✓ PUBLISHED")
success += 1
if not args.dry_run:
print(f" -> Bekleniyor {args.interval}sn...")
time.sleep(args.interval)
else:
print("✓ ZATEN VAR (Atlandı)")
success += 1
else:
print("✗ FAILED")
failed += 1
else:
print("✓ CREATED")
print(f"\nSonuç: {success} başarılı, {failed} başarısız, {skipped} atlandı.")
if __name__ == "__main__":
main()