Compare commits
No commits in common. "e23a7222fd322cc8cd5f051b76b482a3826073a1" and "93e82b43a754b928c484fbe4ab8d818c97250ad4" have entirely different histories.
e23a7222fd
...
93e82b43a7
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,5 +3,4 @@
|
|||||||
/cmd/alr-api-server/alr-api-server
|
/cmd/alr-api-server/alr-api-server
|
||||||
/dist/
|
/dist/
|
||||||
/internal/config/version.txt
|
/internal/config/version.txt
|
||||||
.fleet
|
.fleet
|
||||||
.idea
|
|
56
Makefile
56
Makefile
@ -1,52 +1,20 @@
|
|||||||
NAME := alr
|
PREFIX ?= /usr/local
|
||||||
GIT_VERSION = $(shell git describe --tags )
|
GIT_VERSION = $(shell git describe --tags )
|
||||||
|
|
||||||
DESTDIR ?=
|
alr:
|
||||||
PREFIX ?= /usr/local
|
CGO_ENABLED=0 go build -ldflags="-X 'gitverse.ru/Xpamych/ALR/internal/config.Version=$(GIT_VERSION)'"
|
||||||
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)
|
|
||||||
|
|
||||||
.PHONY: build install clean clear uninstall check-no-root
|
clean:
|
||||||
|
rm -f alr
|
||||||
|
|
||||||
build: check-no-root $(BIN)
|
install: alr installmisc
|
||||||
|
install -Dm755 alr $(DESTDIR)$(PREFIX)/bin/alr
|
||||||
|
|
||||||
export CGO_ENABLED := 0
|
installmisc:
|
||||||
$(BIN):
|
install -Dm755 scripts/completion/bash $(DESTDIR)$(PREFIX)/share/bash-completion/completions/alr
|
||||||
go build \
|
install -Dm755 scripts/completion/zsh $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_alr
|
||||||
-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:
|
uninstall:
|
||||||
rm -f \
|
rm -f /usr/local/bin/alr
|
||||||
$(INSTALED_BIN) \
|
|
||||||
$(INSTALLED_BASH_COMPLETION) \
|
|
||||||
$(INSTALLED_ZSH_COMPLETION)
|
|
||||||
|
|
||||||
clean clear:
|
.PHONY: install clean uninstall installmisc alr
|
||||||
rm -f $(BIN)
|
|
21
README.md
21
README.md
@ -18,14 +18,13 @@ ALR написан на чистом Go и после сборки не имее
|
|||||||
curl -fsSL plemya-x.ru/alr/install.sh | bash
|
curl -fsSL plemya-x.ru/alr/install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
**ВАЖНО**: При этом скрипт будет загружен и запущен с <https://gitverse.ru/Xpamych/ALR/install>. Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их.
|
**ВАЖНО**: При этом скрипт будет загружен и запущен с https://gitverse.ru/Xpamych/ALR/install. Пожалуйста, просматривайте любые скрипты, которые вы скачиваете из Интернета (включая этот), прежде чем запускать их.
|
||||||
|
|
||||||
### Сборка из исходного кода
|
### Сборка из исходного кода
|
||||||
|
|
||||||
Чтобы собрать ALR из исходного кода, вам понадобится версия Go 1.18 или новее. Как только Go будет установлен, клонируйте это репозиторий и запустите:
|
Чтобы собрать ALR из исходного кода, вам понадобится версия Go 1.18 или новее. Как только Go будет установлен, клонируйте это репозиторий и запустите:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
make build
|
|
||||||
sudo make install
|
sudo make install
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -45,21 +44,17 @@ ALR был создан потому, что упаковка программн
|
|||||||
|
|
||||||
## Репозитории
|
## Репозитории
|
||||||
|
|
||||||
Репозитории alr - это git-хранилища, которые содержат каталог для каждого пакета с файлом `alr.sh` внутри. Файл `alr.sh` содержит все инструкции по сборке пакета и информацию о нем. Скрипты `alr.sh` аналогичны скриптам Aur PKGBUILD.
|
Репозитории alr - это git-хранилища, которые содержат каталог для каждого пакета с файлом "alr.sh` внутри. Файл `alr.sh" содержит все инструкции по сборке пакета и информацию о нем. Скрипты "alr.sh` аналогичны скриптам Aur PKGBUILD.
|
||||||
|
|
||||||
---
|
---
|
||||||
## Соцсети
|
|
||||||
Discord - https://discord.com/channels/817759634105827358/1261631565084233749
|
|
||||||
|
|
||||||
Telegram - https://t.me/plemyakh
|
|
||||||
|
|
||||||
## Спасибы
|
## Спасибы
|
||||||
|
|
||||||
Благодарим следующие проекты за то, что они сделали все возможное:
|
Благодарим следующие проекты за то, что они сделали все возможное:
|
||||||
|
|
||||||
- <https://github.com/mvdan/sh>
|
- https://github.com/mvdan/sh
|
||||||
- <https://github.com/go-git/go-git>
|
- https://github.com/go-git/go-git
|
||||||
- <https://github.com/mholt/archiver>
|
- https://github.com/mholt/archiver
|
||||||
- <https://github.com/goreleaser/nfpm>
|
- https://github.com/goreleaser/nfpm
|
||||||
- <https://github.com/charmbracelet/bubbletea>
|
- https://github.com/charmbracelet/bubbletea
|
||||||
- <https://gitlab.com/cznic/sqlite>
|
- https://gitlab.com/cznic/sqlite
|
BIN
assets/logo.png
BIN
assets/logo.png
Binary file not shown.
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 1022 KiB |
@ -1,122 +1,22 @@
|
|||||||
info() {
|
#!/bin/bash
|
||||||
echo $'\x1b[32m[ИНФО]\x1b[0m' $@
|
|
||||||
}
|
|
||||||
|
|
||||||
warn() {
|
# ALR - Any Linux Repository
|
||||||
echo $'\x1b[31m[ВНИМАНИЕ]\x1b[0m' $@
|
# Copyright (C) 2024 Евгений Храмов
|
||||||
}
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
error() {
|
git clone https://gitverse.ru/sc/Xpamych/ALR.git /tmp/alr
|
||||||
echo $'\x1b[31;1m[ОШИБКА]\x1b[0m' $@
|
cd /tmp/alr
|
||||||
exit 1
|
sudo make install
|
||||||
}
|
rm -rf /tmp/alr
|
||||||
|
|
||||||
installPkg() {
|
|
||||||
rootCmd=""
|
|
||||||
if command -v doas &>/dev/null; then
|
|
||||||
rootCmd="doas"
|
|
||||||
elif command -v sudo &>/dev/null; then
|
|
||||||
rootCmd="sudo"
|
|
||||||
else
|
|
||||||
warn "Не обнаружена команда повышения привилегий (например, sudo, doas)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
pacman) $rootCmd pacman --noconfirm -U ${@:2} ;;
|
|
||||||
apk) $rootCmd apk add --allow-untrusted ${@:2} ;;
|
|
||||||
zypper) $rootCmd zypper --no-gpg-checks install ${@:2} ;;
|
|
||||||
*) $rootCmd $1 install -y ${@:2} ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! command -v curl &>/dev/null; then
|
|
||||||
error "Этот скрипт требует команду curl. Пожалуйста, установите её и запустите снова."
|
|
||||||
fi
|
|
||||||
|
|
||||||
pkgFormat=""
|
|
||||||
pkgMgr=""
|
|
||||||
if command -v pacman &>/dev/null; then
|
|
||||||
info "Обнаружен pacman"
|
|
||||||
pkgFormat="pkg.tar.zst"
|
|
||||||
pkgMgr="pacman"
|
|
||||||
elif command -v apt &>/dev/null; then
|
|
||||||
info "Обнаружен apt"
|
|
||||||
pkgFormat="deb"
|
|
||||||
pkgMgr="apt"
|
|
||||||
elif command -v dnf &>/dev/null; then
|
|
||||||
info "Обнаружен dnf"
|
|
||||||
pkgFormat="rpm"
|
|
||||||
pkgMgr="dnf"
|
|
||||||
elif command -v yum &>/dev/null; then
|
|
||||||
info "Обнаружен yum"
|
|
||||||
pkgFormat="rpm"
|
|
||||||
pkgMgr="yum"
|
|
||||||
elif command -v zypper &>/dev/null; then
|
|
||||||
info "Обнаружен zypper"
|
|
||||||
pkgFormat="rpm"
|
|
||||||
pkgMgr="zypper"
|
|
||||||
elif command -v apk &>/dev/null; then
|
|
||||||
info "Обнаружен apk"
|
|
||||||
pkgFormat="apk"
|
|
||||||
pkgMgr="apk"
|
|
||||||
else
|
|
||||||
warn "Не обнаружен поддерживаемый менеджер пакетов!"
|
|
||||||
noPkgMgr=true
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$noPkgMgr" ]; then
|
|
||||||
info "Получение списка файлов с https://plemya-x.ru/"
|
|
||||||
pageContent=$(curl -s https://plemya-x.ru/?dir=alr)
|
|
||||||
|
|
||||||
# Извлечение списка файлов из HTML
|
|
||||||
fileList=$(echo "$pageContent" | grep -oP '(?<=href=").*?(?=")' | grep -E 'alr-bin-.*.(pkg.tar.zst|rpm|deb)')
|
|
||||||
|
|
||||||
echo "Полученный список файлов:"
|
|
||||||
echo "$fileList"
|
|
||||||
|
|
||||||
if [ "$pkgMgr" == "pacman" ]; then
|
|
||||||
latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*.pkg.tar.zst' | sort -V | tail -n 1)
|
|
||||||
elif [ "$pkgMgr" == "apt" ]; then
|
|
||||||
latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*.amd64.deb' | sort -V | tail -n 1)
|
|
||||||
elif [[ "$pkgMgr" == "dnf" || "$pkgMgr" == "yum" || "$pkgMgr" == "zypper" ]]; then
|
|
||||||
latestFile=$(echo "$fileList" | grep -E 'alr-bin-.*.x86_64.rpm' | sort -V | tail -n 1)
|
|
||||||
else
|
|
||||||
error "Не поддерживаемый менеджер пакетов для автоматической установки"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$latestFile" ]; then
|
|
||||||
error "Не удалось найти соответствующий пакет для $pkgMgr"
|
|
||||||
fi
|
|
||||||
|
|
||||||
info "Найдена последняя версия ALR: $latestFile"
|
|
||||||
|
|
||||||
url="https://plemya-x.ru/$latestFile"
|
|
||||||
fname="$(mktemp -u -p /tmp "alr.XXXXXXXXXX").${pkgFormat}"
|
|
||||||
|
|
||||||
info "Загрузка пакета ALR"
|
|
||||||
curl -L $url -o $fname
|
|
||||||
|
|
||||||
if [ ! -f "$fname" ]; then
|
|
||||||
error "Ошибка загрузки пакета ALR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
info "Установка пакета ALR"
|
|
||||||
installPkg $pkgMgr $fname
|
|
||||||
|
|
||||||
info "Очистка"
|
|
||||||
rm $fname
|
|
||||||
|
|
||||||
info "Готово!"
|
|
||||||
else
|
|
||||||
info "Клонирование репозитория ALR"
|
|
||||||
git clone https://gitverse.ru/sc/Xpamych/ALR.git /tmp/alr
|
|
||||||
|
|
||||||
info "Установка ALR"
|
|
||||||
cd /tmp/alr
|
|
||||||
sudo make install
|
|
||||||
|
|
||||||
info "Очистка репозитория ALR"
|
|
||||||
rm -rf /tmp/alr
|
|
||||||
|
|
||||||
info "Все задачи выполнены!"
|
|
||||||
fi
|
|
Loading…
Reference in New Issue
Block a user