This commit is contained in:
2026-05-22 23:35:27 +03:00
parent 70c0304fea
commit a1ae4efede
45 changed files with 6769 additions and 93 deletions
+217
View File
@@ -0,0 +1,217 @@
# ───────────────────────────────────────────────────────────────────────────
# Yali-RS — PisiLinux Kurulum Aracı
# Makefile (GNU Make 4.x)
# ───────────────────────────────────────────────────────────────────────────
BINARY := yali-rs
VERSION := 0.2.0
# Kurulum yolları (DESTDIR ile paket yöneticisi uyumlu)
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
DATADIR ?= $(PREFIX)/share/$(BINARY)
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)/
# Dil dosyaları
install -dm755 $(DESTDIR)$(LOCALEDIR)
install -m644 locales/*.toml $(DESTDIR)$(LOCALEDIR)/
# .desktop girdisi
install -dm755 $(DESTDIR)$(DESKTOPDIR)
@printf '[Desktop Entry]\nName=YALI Installer\nComment=PisiLinux Kurulum Aracı\nExec=$(BINDIR)/$(BINARY)\nIcon=yali-installer\nType=Application\nCategories=System;\nTerminal=false\n' \
> $(DESTDIR)$(DESKTOPDIR)/$(BINARY).desktop
chmod 644 $(DESTDIR)$(DESKTOPDIR)/$(BINARY).desktop
# Logo (pixmap)
install -dm755 $(DESTDIR)$(PIXMAPDIR)
install -m644 assets/pisi-logo-light.png $(DESTDIR)$(PIXMAPDIR)/yali-installer.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)/$(BINARY).desktop
rm -f $(DESTDIR)$(PIXMAPDIR)/yali-installer.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 ""