# ─────────────────────────────────────────────────────────────────────────── # Yali-RS — PisiLinux Kurulum Aracı # Makefile (GNU Make 4.x) # ─────────────────────────────────────────────────────────────────────────── BINARY := yali-rs VERSION := 4.0.1 # Kurulum yolları (DESTDIR ile paket yöneticisi uyumlu) PREFIX ?= /usr BINDIR ?= $(PREFIX)/bin DATADIR ?= $(PREFIX)/share/yali LOCALEDIR ?= $(DATADIR)/locales ASSETSDIR ?= $(DATADIR)/assets DESKTOPDIR ?= $(PREFIX)/share/applications PIXMAPDIR ?= $(PREFIX)/share/pixmaps # Cargo hedefleri RELEASE_BIN := target/release/$(BINARY) DEBUG_BIN := target/debug/$(BINARY) # Renk çıktısı (terminal destekliyorsa) BOLD := $(shell tput bold 2>/dev/null) GREEN := $(shell tput setaf 2 2>/dev/null) YELLOW := $(shell tput setaf 3 2>/dev/null) RESET := $(shell tput sgr0 2>/dev/null) .PHONY: all build release debug run demo auto check fmt lint test \ install uninstall clean distclean help # ── Varsayılan hedef ──────────────────────────────────────────────────────── all: release # ── Derleme ───────────────────────────────────────────────────────────────── ## Üretim ikili dosyasını derle (release modu, LTO etkin) release: @echo "$(BOLD)$(GREEN)▶ Derleniyor: release$(RESET)" cargo build --release ## Geliştirme ikili dosyasını derle (debug modu, hızlı derleme) debug: @echo "$(BOLD)$(YELLOW)▶ Derleniyor: debug$(RESET)" cargo build ## 'build' takma adı → debug derleme build: debug # ── Çalıştırma ─────────────────────────────────────────────────────────────── ## Grafik arayüzü başlat (release) run: release @echo "$(BOLD)$(GREEN)▶ Başlatılıyor: GUI modu$(RESET)" ./$(RELEASE_BIN) ## Grafik arayüzü debug modda başlat run-debug: debug ./$(DEBUG_BIN) ## Demo modu: gerçek komutlar çalıştırılmaz; UI akışını test etmek için kullanılır. ## Kurulum ekranında slaytlar arasında 5 sn beklenir. demo: release @echo "$(BOLD)$(GREEN)▶ Başlatılıyor: Demo modu (--demo)$(RESET)" ./$(RELEASE_BIN) --demo ## Demo modu (debug derlemesiyle — daha hızlı başlar, geliştirme için) demo-debug: debug ./$(DEBUG_BIN) --demo ## Otomatik kurulum modu: answer-example.toml kullanılır (DİKKAT: gerçek disk!) auto: release @echo "$(BOLD)$(YELLOW)▶ Başlatılıyor: Otomatik kurulum modu$(RESET)" @echo "$(YELLOW)UYARI: answer-example.toml içindeki diski kontrol edin!$(RESET)" ./$(RELEASE_BIN) --auto-install answer-example.toml ## Otomatik kurulum — yalnızca demo; gerçek komutlar çalışmaz auto-demo: release ./$(RELEASE_BIN) --auto-install answer-example.toml --demo # ── Kalite Kontrol ─────────────────────────────────────────────────────────── ## Kod derleme kontrolü (ikili üretmez) check: @echo "$(BOLD)▶ Kontrol ediliyor$(RESET)" cargo check ## Kod formatlama (yerinde düzenler) fmt: @echo "$(BOLD)▶ Formatlanıyor$(RESET)" cargo fmt --all ## Formatlama kontrolü (CI için; değişiklik yapılmaz) fmt-check: cargo fmt --all -- --check ## Clippy lint (uyarıları hata say) lint: @echo "$(BOLD)▶ Lint: clippy$(RESET)" cargo clippy -- -D warnings ## Birim testler test: @echo "$(BOLD)▶ Testler çalıştırılıyor$(RESET)" cargo test ## Tam CI kontrolü: fmt-check + clippy + test ci: fmt-check lint test @echo "$(BOLD)$(GREEN)✓ CI geçti$(RESET)" # ── Kurulum ────────────────────────────────────────────────────────────────── ## Sisteme kur (sudo gerekebilir; DESTDIR ile paket kurulumu desteklenir) install: release @echo "$(BOLD)$(GREEN)▶ Kuruluyor: $(DESTDIR)$(BINDIR)/$(BINARY)$(RESET)" # İkili dosya install -Dm755 $(RELEASE_BIN) $(DESTDIR)$(BINDIR)/$(BINARY) # Varlıklar (görüntüler, SVG'ler) install -dm755 $(DESTDIR)$(ASSETSDIR) cp -r assets/* $(DESTDIR)$(ASSETSDIR)/ # Görsel özelleştirme (branding) dosyaları install -dm755 $(DESTDIR)$(DATADIR) install -m644 branding*.toml $(DESTDIR)$(DATADIR)/ # Dil dosyaları install -dm755 $(DESTDIR)$(LOCALEDIR) install -m644 locales/*.toml $(DESTDIR)$(LOCALEDIR)/ # .desktop girdisi install -Dm644 assets/yali.desktop $(DESTDIR)$(DESKTOPDIR)/yali.desktop # Logo (pixmap) install -Dm644 assets/yali.png $(DESTDIR)$(PIXMAPDIR)/yali.png @echo "$(BOLD)$(GREEN)✓ Kurulum tamamlandı$(RESET)" ## Sistemden kaldır uninstall: @echo "$(BOLD)$(YELLOW)▶ Kaldırılıyor$(RESET)" rm -f $(DESTDIR)$(BINDIR)/$(BINARY) rm -rf $(DESTDIR)$(DATADIR) rm -f $(DESTDIR)$(DESKTOPDIR)/yali.desktop rm -f $(DESTDIR)$(PIXMAPDIR)/yali.png @echo "$(BOLD)$(GREEN)✓ Kaldırıldı$(RESET)" # ── Temizlik ───────────────────────────────────────────────────────────────── ## Derleme çıktılarını temizle (Cargo önbelleği korunur) clean: cargo clean ## Derin temizlik: derleme çıktıları + Cargo registry önbelleği distclean: clean rm -rf ~/.cargo/registry/cache # ── Paketleme ──────────────────────────────────────────────────────────────── ## Kaynak arşivi oluştur (git archive veya tar) dist: @echo "$(BOLD)▶ Arşiv oluşturuluyor: $(BINARY)-$(VERSION).tar.gz$(RESET)" @if git rev-parse --git-dir > /dev/null 2>&1; then \ git archive --format=tar.gz --prefix=$(BINARY)-$(VERSION)/ HEAD \ -o $(BINARY)-$(VERSION).tar.gz; \ else \ tar -czf $(BINARY)-$(VERSION).tar.gz \ --transform 's|^|$(BINARY)-$(VERSION)/|' \ --exclude='.git' --exclude='target' \ .; \ fi @echo "✓ $(BINARY)-$(VERSION).tar.gz" ## Sürüm bilgisini yazdır version: @echo "$(BINARY) $(VERSION)" @cargo --version @rustc --version # ── Yardım ─────────────────────────────────────────────────────────────────── ## Bu yardım metnini göster help: @echo "" @echo "$(BOLD)Yali-RS $(VERSION) — PisiLinux Kurulum Aracı$(RESET)" @echo "" @echo "$(BOLD)Derleme:$(RESET)" @echo " make release Üretim ikili dosyasını derle (varsayılan)" @echo " make debug Debug modda derle" @echo " make check Derleme kontrolü (ikili üretmez)" @echo "" @echo "$(BOLD)Çalıştırma:$(RESET)" @echo " make run GUI başlat (release)" @echo " make demo Demo modu — gerçek komutlar çalışmaz" @echo " make demo-debug Demo modu — debug derlemesiyle" @echo " make auto Otomatik kurulum (answer-example.toml)" @echo " make auto-demo Otomatik kurulum demo modu" @echo "" @echo "$(BOLD)Kalite Kontrol:$(RESET)" @echo " make fmt Kodu formatla" @echo " make fmt-check Formatlama kontrolü (CI)" @echo " make lint Clippy lint" @echo " make test Testleri çalıştır" @echo " make ci Tam CI: fmt-check + lint + test" @echo "" @echo "$(BOLD)Kurulum:$(RESET)" @echo " make install Sisteme kur (DESTDIR destekler)" @echo " make uninstall Sistemden kaldır" @echo "" @echo "$(BOLD)Paketleme:$(RESET)" @echo " make dist Kaynak arşivi oluştur" @echo " make version Sürüm bilgisini göster" @echo "" @echo "$(BOLD)Örnekler:$(RESET)" @echo " make install DESTDIR=/tmp/pkg PREFIX=/usr" @echo " make auto # answer-example.toml diskini kontrol edin!" @echo ""