diff --git a/Makefile b/Makefile index ff9d46e..0b41c1c 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,52 @@ -PREFIX ?= /usr/local +NAME := alr GIT_VERSION = $(shell git describe --tags ) -alr: - CGO_ENABLED=0 go build -ldflags="-X 'gitverse.ru/Xpamych/ALR/internal/config.Version=$(GIT_VERSION)'" +DESTDIR ?= +PREFIX ?= /usr/local +BIN := ./$(NAME) +INSTALED_BIN := $(DESTDIR)/$(PREFIX)/bin/$(NAME) +COMPLETIONS_DIR := ./scripts/completion +BASH_COMPLETION := $(COMPLETIONS_DIR)/bash +ZSH_COMPLETION := $(COMPLETIONS_DIR)/zsh +INSTALLED_BASH_COMPLETION := $(DESTDIR)$(PREFIX)/share/bash-completion/completions/$(NAME) +INSTALLED_ZSH_COMPLETION := $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_$(NAME) -clean: - rm -f alr +.PHONY: build install clean clear uninstall check-no-root -install: alr installmisc - install -Dm755 alr $(DESTDIR)$(PREFIX)/bin/alr +build: check-no-root $(BIN) -installmisc: - install -Dm755 scripts/completion/bash $(DESTDIR)$(PREFIX)/share/bash-completion/completions/alr - install -Dm755 scripts/completion/zsh $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_alr +export CGO_ENABLED := 0 +$(BIN): + go build \ + -ldflags="-X 'gitverse.ru/Xpamych/ALR/internal/config.Version=$(GIT_VERSION)'" \ + -o $@ + +check-no-root: + @if [[ "$$(whoami)" == 'root' ]]; then \ + echo "This target shouldn't run as root" 1>&2; \ + exit 1; \ + fi + +install: \ + $(INSTALED_BIN) \ + $(INSTALLED_BASH_COMPLETION) \ + $(INSTALLED_ZSH_COMPLETION) + @echo "Installation done!" + +$(INSTALED_BIN): $(BIN) + install -Dm755 $< $@ + +$(INSTALLED_BASH_COMPLETION): $(BASH_COMPLETION) + install -Dm755 $< $@ + +$(INSTALLED_ZSH_COMPLETION): $(ZSH_COMPLETION) + install -Dm755 $< $@ uninstall: - rm -f /usr/local/bin/alr + rm -f \ + $(INSTALED_BIN) \ + $(INSTALLED_BASH_COMPLETION) \ + $(INSTALLED_ZSH_COMPLETION) -.PHONY: install clean uninstall installmisc alr \ No newline at end of file +clean clear: + rm -f $(BIN) diff --git a/README.md b/README.md index 9bec0cd..338db8e 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,14 @@ ALR написан на чистом Go и после сборки не имее curl -fsSL plemya-x.ru/alr/install.sh | bash ``` -**ВАЖНО**: При этом скрипт будет загружен и запущен с https://gitverse.ru/Xpamych/ALR/install. Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их. +**ВАЖНО**: При этом скрипт будет загружен и запущен с . Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их. ### Сборка из исходного кода Чтобы собрать ALR из исходного кода, вам понадобится версия Go 1.18 или новее. Как только Go будет установлен, клонируйте это репозиторий и запустите: ```shell +make build sudo make install ``` @@ -44,7 +45,7 @@ ALR был создан потому, что упаковка программн ## Репозитории -Репозитории alr - это git-хранилища, которые содержат каталог для каждого пакета с файлом "alr.sh` внутри. Файл `alr.sh" содержит все инструкции по сборке пакета и информацию о нем. Скрипты "alr.sh` аналогичны скриптам Aur PKGBUILD. +Репозитории alr - это git-хранилища, которые содержат каталог для каждого пакета с файлом `alr.sh` внутри. Файл `alr.sh` содержит все инструкции по сборке пакета и информацию о нем. Скрипты `alr.sh` аналогичны скриптам Aur PKGBUILD. --- @@ -52,9 +53,9 @@ ALR был создан потому, что упаковка программн Благодарим следующие проекты за то, что они сделали все возможное: -- https://github.com/mvdan/sh -- https://github.com/go-git/go-git -- https://github.com/mholt/archiver -- https://github.com/goreleaser/nfpm -- https://github.com/charmbracelet/bubbletea -- https://gitlab.com/cznic/sqlite \ No newline at end of file +- +- +- +- +- +-