mirror of
https://gitlab.com/erkanisik/yali-rs.git
synced 2026-07-31 03:09:00 +00:00
218 lines
8.5 KiB
Makefile
218 lines
8.5 KiB
Makefile
# ───────────────────────────────────────────────────────────────────────────
|
||
# 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 ""
|