diff --git a/Cargo.lock b/Cargo.lock index dc7340e..224f194 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,6 +33,7 @@ dependencies = [ "tower", "tower-http", "urlencoding", + "winres", ] [[package]] @@ -1768,6 +1769,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "tower" version = "0.5.3" @@ -2167,6 +2177,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winres" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" +dependencies = [ + "toml", +] + [[package]] name = "wit-bindgen" version = "0.51.0" diff --git a/Cargo.toml b/Cargo.toml index f8e323a..1c9a28e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,3 +48,9 @@ opt-level = "z" lto = true codegen-units = 1 strip = true + +[target.'cfg(windows)'.dependencies] +winres = "0.1" + +[build-dependencies] +winres = "0.1" \ No newline at end of file diff --git a/assets/logo.ico b/assets/logo.ico new file mode 100644 index 0000000..9ab867c Binary files /dev/null and b/assets/logo.ico differ diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..a306598 --- /dev/null +++ b/build.rs @@ -0,0 +1,9 @@ +// build.rs +fn main() { + #[cfg(windows)] + { + let mut res = winres::WindowsResource::new(); + res.set_icon("assets/logo.ico"); + res.compile().unwrap(); + } +} \ No newline at end of file diff --git a/makefile b/makefile index 31c00b7..b63079b 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,4 @@ -.PHONY: all clean build-mac build-windows build-linux build-linux-musl package help quick package-single +.PHONY: all clean build-mac build-windows build-linux build-linux-musl package help quick package-single icons favicon # Название проекта PROJECT_NAME := ae_anons @@ -18,11 +18,14 @@ BLUE := \033[0;34m CYAN := \033[0;36m MAGENTA := \033[0;35m BOLD := \033[1m -NC := \033[0m # No Color +NC := \033[0m # Файл для хранения времени сборки TIMING_FILE := .build_timing +# Определение команды ImageMagick (v6 = convert, v7 = magick) +IMAGEMAGICK := $(shell command -v magick 2>/dev/null || command -v convert 2>/dev/null || echo "false") + help: @echo "$(BOLD)$(CYAN)AE Anons - Makefile команды$(NC)" @echo "" @@ -41,6 +44,10 @@ help: @echo " make package - Создать пакеты для всех платформ" @echo " make package-single - Создать пакет для текущей платформы" @echo "" + @echo "$(GREEN)Иконки:$(NC)" + @echo " make icons - Создать все иконки (logo.ico, logo.icns, favicon.ico)" + @echo " make favicon - Создать только favicon.ico" + @echo "" @echo "$(GREEN)Очистка:$(NC)" @echo " make clean - Очистить все сборки" @echo " make clean-timing - Очистить файл с временами сборки" @@ -49,14 +56,12 @@ help: # ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ # ============================================ -# Копирование общих файлов в пакет define copy_common_files @cp .env.example $(1)/ 2>/dev/null || true @cp README.md $(1)/ 2>/dev/null || true @if [ -f LICENSE ]; then cp LICENSE $(1)/; else echo "$(YELLOW)⚠️ LICENSE не найден, пропускаем$(NC)"; fi endef -# Функция для замера времени define measure_time @start=$$(date +%s); \ $(2); \ @@ -66,7 +71,6 @@ define measure_time echo "$(GREEN)✓ $(1) завершён за $$duration сек$(NC)" endef -# Функция для вывода итоговой таблицы define print_timing_summary @echo "" @echo "$(BOLD)$(CYAN)═══════════════════════════════════════════════════════════════$(NC)" @@ -88,6 +92,43 @@ define print_timing_summary @rm -f $(TIMING_FILE) endef +# ============================================ +# ИКОНКИ +# ============================================ + +icons: favicon + @echo "$(GREEN)Создание иконок для Windows и macOS...$(NC)" + @if [ "$(IMAGEMAGICK)" = "false" ]; then \ + echo "$(RED)❌ ImageMagick не установлен. Установите: brew install imagemagick$(NC)"; \ + exit 1; \ + fi + # Windows .ico + @$(IMAGEMAGICK) assets/logo.png -define icon:auto-resize=256,128,64,48,32,16 assets/logo.ico + @echo "$(GREEN) ✓ assets/logo.ico$(NC)" + # macOS .icns + @mkdir -p assets/icon.iconset + @sips -z 16 16 assets/logo.png --out assets/icon.iconset/icon_16x16.png 2>/dev/null + @sips -z 32 32 assets/logo.png --out assets/icon.iconset/icon_16x16@2x.png 2>/dev/null + @sips -z 32 32 assets/logo.png --out assets/icon.iconset/icon_32x32.png 2>/dev/null + @sips -z 64 64 assets/logo.png --out assets/icon.iconset/icon_32x32@2x.png 2>/dev/null + @sips -z 128 128 assets/logo.png --out assets/icon.iconset/icon_128x128.png 2>/dev/null + @sips -z 256 256 assets/logo.png --out assets/icon.iconset/icon_128x128@2x.png 2>/dev/null + @sips -z 256 256 assets/logo.png --out assets/icon.iconset/icon_256x256.png 2>/dev/null + @sips -z 512 512 assets/logo.png --out assets/icon.iconset/icon_256x256@2x.png 2>/dev/null + @sips -z 512 512 assets/logo.png --out assets/icon.iconset/icon_512x512.png 2>/dev/null + @iconutil -c icns assets/icon.iconset -o assets/logo.icns 2>/dev/null + @rm -rf assets/icon.iconset + @echo "$(GREEN) ✓ assets/logo.icns$(NC)" + +favicon: + @echo "$(GREEN)Создание favicon.ico...$(NC)" + @if [ "$(IMAGEMAGICK)" = "false" ]; then \ + echo "$(RED)❌ ImageMagick не установлен. Установите: brew install imagemagick$(NC)"; \ + exit 1; \ + fi + @$(IMAGEMAGICK) assets/logo.png -define icon:auto-resize=48,32,16 src/static/favicon.ico + @echo "$(GREEN) ✓ src/static/favicon.ico$(NC)" + # ============================================ # ОПРЕДЕЛЕНИЕ ПЛАТФОРМЫ # ============================================ @@ -113,7 +154,6 @@ endif quick: detect-platform -# Быстрая сборка без упаковки (только бинарник) quick-release: ifeq ($(UNAME_S),Darwin) @echo "$(GREEN)🍎 Сборка для macOS...$(NC)" diff --git a/src/static/favicon.ico b/src/static/favicon.ico new file mode 100644 index 0000000..9f1f3ef Binary files /dev/null and b/src/static/favicon.ico differ diff --git a/src/static/index.html b/src/static/index.html index 12e3036..bde6f70 100644 --- a/src/static/index.html +++ b/src/static/index.html @@ -4,12 +4,13 @@ - AE Anons - Nexrender Job Manager + AE Anons - - - + + + + @@ -26,7 +27,7 @@ -

AE Anons - Nexrender Job Manager

+

AE Anons