diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1c0bf77 --- /dev/null +++ b/Makefile @@ -0,0 +1,115 @@ +.PHONY: all clean download extract deb help + +# Variables +GITHUB_REPO = zed-industries/zed +ARCH = x86_64 +ARCHIVE_NAME = zed-linux-$(ARCH).tar.gz +BUILD_DIR = build +EXTRACT_DIR = $(BUILD_DIR)/extracted +DEB_DIR = $(BUILD_DIR)/deb +CONTROL_DIR = $(DEB_DIR)/DEBIAN + +# Déterminer la dernière version stable +VERSION := $(shell curl -s https://api.github.com/repos/$(GITHUB_REPO)/releases/latest | jq -r '.tag_name' | sed 's/^v//') +DOWNLOAD_URL := $(shell curl -s https://api.github.com/repos/$(GITHUB_REPO)/releases/latest | jq -r '.assets[] | select(.name == "$(ARCHIVE_NAME)") | .browser_download_url') + +# Nom du paquet +PACKAGE_NAME = zed-editor +DEB_FILE = $(BUILD_DIR)/$(PACKAGE_NAME)_$(VERSION)_amd64.deb + +all: deb + +help: + @echo "Makefile pour créer un paquet .deb de Zed Editor" + @echo "" + @echo "Cibles disponibles:" + @echo " all - Construire le paquet .deb (cible par défaut)" + @echo " download - Télécharger l'archive depuis GitHub" + @echo " extract - Extraire l'archive" + @echo " deb - Créer le paquet .deb" + @echo " clean - Nettoyer les fichiers temporaires" + @echo " help - Afficher cette aide" + @echo "" + @echo "Version détectée: $(VERSION)" + +# Télécharger l'archive si elle n'existe pas +download: $(BUILD_DIR)/$(ARCHIVE_NAME) + +$(BUILD_DIR)/$(ARCHIVE_NAME): + @echo "Téléchargement de Zed v$(VERSION)..." + @mkdir -p $(BUILD_DIR) + @if [ -z "$(DOWNLOAD_URL)" ]; then \ + echo "Erreur: impossible de trouver l'URL de téléchargement"; \ + exit 1; \ + fi + @wget -q --show-progress -O $@ "$(DOWNLOAD_URL)" + @echo "Téléchargement terminé: $@" + +# Extraire l'archive +extract: $(EXTRACT_DIR)/.extracted + +$(EXTRACT_DIR)/.extracted: $(BUILD_DIR)/$(ARCHIVE_NAME) + @echo "Extraction de l'archive..." + @mkdir -p $(EXTRACT_DIR) + @tar -xzf $(BUILD_DIR)/$(ARCHIVE_NAME) -C $(EXTRACT_DIR) + @touch $@ + @echo "Extraction terminée" + +# Créer le paquet .deb +deb: $(DEB_FILE) + +$(DEB_FILE): $(EXTRACT_DIR)/.extracted + @echo "Construction du paquet .deb..." + @mkdir -p $(CONTROL_DIR) + @mkdir -p $(DEB_DIR)/opt/zed + @mkdir -p $(DEB_DIR)/usr/bin + @mkdir -p $(DEB_DIR)/usr/share/applications + @mkdir -p $(DEB_DIR)/usr/share/icons/hicolor/512x512/apps + @mkdir -p $(DEB_DIR)/usr/share/icons/hicolor/1024x1024/apps + + # Copier les fichiers de l'application + @echo "Copie des fichiers..." + @cp -r $(EXTRACT_DIR)/zed.app/* $(DEB_DIR)/opt/zed/ + + # Créer le lien symbolique pour le binaire + @ln -sf /opt/zed/bin/zed $(DEB_DIR)/usr/bin/zed + + # Copier les fichiers desktop et icônes + @cp $(EXTRACT_DIR)/zed.app/share/applications/zed.desktop $(DEB_DIR)/usr/share/applications/ + @cp $(EXTRACT_DIR)/zed.app/share/icons/hicolor/512x512/apps/zed.png $(DEB_DIR)/usr/share/icons/hicolor/512x512/apps/ + @cp $(EXTRACT_DIR)/zed.app/share/icons/hicolor/1024x1024/apps/zed.png $(DEB_DIR)/usr/share/icons/hicolor/1024x1024/apps/ + + # Mettre à jour le fichier .desktop pour pointer vers /opt/zed + @sed -i 's|Exec=.*|Exec=/opt/zed/bin/zed %U|g' $(DEB_DIR)/usr/share/applications/zed.desktop + @sed -i 's|Icon=.*|Icon=zed|g' $(DEB_DIR)/usr/share/applications/zed.desktop + + # Créer le fichier de contrôle + @echo "Package: $(PACKAGE_NAME)" > $(CONTROL_DIR)/control + @echo "Version: $(VERSION)" >> $(CONTROL_DIR)/control + @echo "Section: editors" >> $(CONTROL_DIR)/control + @echo "Priority: optional" >> $(CONTROL_DIR)/control + @echo "Architecture: amd64" >> $(CONTROL_DIR)/control + @echo "Maintainer: Zed Packager " >> $(CONTROL_DIR)/control + @echo "Description: Zed - A high-performance, multiplayer code editor" >> $(CONTROL_DIR)/control + @echo " Zed is a next-generation code editor designed for" >> $(CONTROL_DIR)/control + @echo " high-performance collaboration with humans and AI." >> $(CONTROL_DIR)/control + @echo "Homepage: https://zed.dev" >> $(CONTROL_DIR)/control + + # Définir les permissions + @chmod 755 $(DEB_DIR)/opt/zed/bin/zed + @chmod 755 $(DEB_DIR)/opt/zed/libexec/zed-editor + @find $(DEB_DIR)/opt/zed/lib -type f -name "*.so*" -exec chmod 644 {} \; + + # Construire le paquet .deb + @echo "Création du paquet .deb..." + @dpkg-deb --build $(DEB_DIR) $(DEB_FILE) + @echo "" + @echo "✓ Paquet créé avec succès: $(DEB_FILE)" + @echo "" + @echo "Pour installer: sudo dpkg -i $(DEB_FILE)" + +# Nettoyer +clean: + @echo "Nettoyage..." + @rm -rf $(BUILD_DIR) + @echo "Nettoyage terminé"