forked from pisilinux-rs/yali-rs
update
This commit is contained in:
@@ -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 ""
|
||||
Reference in New Issue
Block a user