forked from Plemya-x/ALR
Compare commits
36 Commits
3483cf57f8
...
v0.0.14
Author | SHA1 | Date | |
---|---|---|---|
c88478a450 | |||
3e61fec67c | |||
6f484a1169 | |||
dddcb9b7b0 | |||
b03d94e48b | |||
f92bd7089a | |||
eb2356458c | |||
131f455eff | |||
1e52d30f4c | |||
40ec0ac6e1 | |||
443e481561 | |||
c892310f69 | |||
750513b119 | |||
ce1836b646 | |||
56b9f3211c | |||
fae63e28f9 | |||
c632ddb354 | |||
76234bf00d | |||
f8c510ab9f | |||
849a08a791 | |||
952dd26f5f | |||
080c9f42ff | |||
3c3ee286ce | |||
d0d8930491 | |||
93508647e0 | |||
6135e55f92 | |||
2b7c2bbbb3 | |||
afe35f407e | |||
c51d1d9202 | |||
b46dd41ada | |||
f623cba5c0 | |||
e552663442 | |||
7bbceb76c9 | |||
bd6e3bbe27 | |||
0d917190ab | |||
83b8f3b047 |
57
.gitea/workflows/e2e-tests.yaml
Normal file
57
.gitea/workflows/e2e-tests.yaml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
# ALR - Any Linux Repository
|
||||||
|
# Copyright (C) 2025 The ALR Authors
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
|
||||||
|
name: E2E
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: altlinux.space/maks1ms/actions-container-runner:latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: https://github.com/actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: https://github.com/actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: '1.24'
|
||||||
|
|
||||||
|
- name: Cache Podman images
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.local/share/containers/storage
|
||||||
|
/var/lib/containers/storage
|
||||||
|
key: ${{ runner.os }}-primes
|
||||||
|
|
||||||
|
- name: Run E2E tests
|
||||||
|
env:
|
||||||
|
DOCKER_HOST: unix:///tmp/podman.sock
|
||||||
|
IGNORE_ROOT_CHECK: 1
|
||||||
|
run: |
|
||||||
|
podman system service -t 0 unix:///tmp/podman.sock &
|
||||||
|
make e2e-test
|
49
.gitea/workflows/pre-commit.yaml
Normal file
49
.gitea/workflows/pre-commit.yaml
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# ALR - Any Linux Repository
|
||||||
|
# Copyright (C) 2025 The ALR Authors
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
|
||||||
|
|
||||||
|
name: Pre-commit
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
pre-commit:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: https://github.com/actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: https://github.com/actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: '1.24'
|
||||||
|
|
||||||
|
- name: Set up Python for pre-commit
|
||||||
|
uses: https://github.com/actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: '3.12'
|
||||||
|
|
||||||
|
- name: Install deps
|
||||||
|
run: apt-get update && apt-get install -y gettext bc
|
||||||
|
|
||||||
|
- run: pip install pre-commit
|
||||||
|
- run: pre-commit install
|
||||||
|
- run: pre-commit run --all-files
|
67
.gitea/workflows/release.yaml
Normal file
67
.gitea/workflows/release.yaml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
# ALR - Any Linux Repository
|
||||||
|
# Copyright (C) 2025 The ALR Authors
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
|
||||||
|
name: Create Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
changelog:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout this repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: '1.24'
|
||||||
|
|
||||||
|
- name: Get Changes between Tags
|
||||||
|
id: changes
|
||||||
|
uses: simbo/changes-between-tags-action@v1
|
||||||
|
|
||||||
|
- name: Set version
|
||||||
|
run: |
|
||||||
|
version=$(echo "${GITHUB_REF##*/}" | sed 's/^v//')
|
||||||
|
echo "Version - $version"
|
||||||
|
echo "VERSION=$version" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Build alr binary
|
||||||
|
run: |
|
||||||
|
CGO_ENABLED=0 go build -ldflags "-X gitea.plemya-x.ru/Plemya-x/ALR/internal/config.Version=${{ env.VERSION }}" -o alr
|
||||||
|
|
||||||
|
- name: Create tar.gz
|
||||||
|
run: |
|
||||||
|
mkdir -p ./out/completion
|
||||||
|
cp alr ./out
|
||||||
|
cp scripts/completion/bash ./out/completion/alr
|
||||||
|
cp scripts/completion/zsh ./out/completion/_alr
|
||||||
|
|
||||||
|
( cd out && tar -czvf ../alr-${{ env.VERSION }}-linux-x86_64.tar.gz * )
|
||||||
|
|
||||||
|
- name: Release
|
||||||
|
uses: akkuman/gitea-release-action@v1
|
||||||
|
with:
|
||||||
|
body: ${{ steps.changes.outputs.changes }}
|
||||||
|
files: |-
|
||||||
|
alr-${{ env.VERSION }}-linux-x86_64.tar.gz
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -9,4 +9,5 @@
|
|||||||
|
|
||||||
*.out
|
*.out
|
||||||
|
|
||||||
e2e-tests/alr
|
e2e-tests/alr
|
||||||
|
commit_msg.txt
|
@ -1,5 +1,5 @@
|
|||||||
# ALR - Any Linux Repository
|
# ALR - Any Linux Repository
|
||||||
# Copyright (C) 2025 Евгений Храмов
|
# Copyright (C) 2025 The ALR Authors
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
118
.goreleaser.yaml
118
.goreleaser.yaml
@ -1,118 +0,0 @@
|
|||||||
# This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
|
||||||
# It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
|
||||||
#
|
|
||||||
# ALR - Any Linux Repository
|
|
||||||
# Copyright (C) 2025 Евгений Храмов
|
|
||||||
#
|
|
||||||
# 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/>.
|
|
||||||
|
|
||||||
before:
|
|
||||||
hooks:
|
|
||||||
- go mod tidy
|
|
||||||
builds:
|
|
||||||
- id: alr
|
|
||||||
env:
|
|
||||||
- CGO_ENABLED=0
|
|
||||||
binary: alr
|
|
||||||
ldflags:
|
|
||||||
- -X gitea.plemya-x.ru/xpamych/ALR/src/branch/master/internal/config.Version={{.Version}}
|
|
||||||
goos:
|
|
||||||
- linux
|
|
||||||
goarch:
|
|
||||||
- amd64
|
|
||||||
- 386
|
|
||||||
- arm64
|
|
||||||
- arm
|
|
||||||
- riscv64
|
|
||||||
archives:
|
|
||||||
- name_template: >-
|
|
||||||
{{- .ProjectName}}-
|
|
||||||
{{- .Version}}-
|
|
||||||
{{- .Os}}-
|
|
||||||
{{- if .Arch | eq "amd64"}}x86_64
|
|
||||||
{{- else if .Arch | eq "386"}}i386
|
|
||||||
{{- else if .Arch | eq "arm64"}}aarch64
|
|
||||||
{{- else }}{{ .Arch }}{{ end -}}
|
|
||||||
files:
|
|
||||||
- scripts/completion/*
|
|
||||||
nfpms:
|
|
||||||
- id: alr
|
|
||||||
package_name: linux-user-repository
|
|
||||||
file_name_template: >-
|
|
||||||
{{- .PackageName}}-
|
|
||||||
{{- .Version}}-
|
|
||||||
{{- .Os}}-
|
|
||||||
{{- if .Arch | eq "amd64"}}x86_64
|
|
||||||
{{- else if .Arch | eq "386"}}i386
|
|
||||||
{{- else if .Arch | eq "arm64"}}aarch64
|
|
||||||
{{- else }}{{ .Arch }}{{ end -}}
|
|
||||||
description: "Any Linux Repository"
|
|
||||||
homepage: 'https://gitea.plemya-x.ru/xpamych/ALR'
|
|
||||||
maintainer: 'Евгений Храмов <xpamych@yandex.ru>'
|
|
||||||
license: GPLv3
|
|
||||||
formats:
|
|
||||||
- apk
|
|
||||||
- deb
|
|
||||||
- rpm
|
|
||||||
- archlinux
|
|
||||||
provides:
|
|
||||||
- linux-user-repository
|
|
||||||
conflicts:
|
|
||||||
- linux-user-repository
|
|
||||||
recommends:
|
|
||||||
- aria2
|
|
||||||
contents:
|
|
||||||
- src: scripts/completion/bash
|
|
||||||
dst: /usr/share/bash-completion/completions/alr
|
|
||||||
- src: scripts/completion/zsh
|
|
||||||
dst: /usr/share/zsh/site-functions/_alr
|
|
||||||
aurs:
|
|
||||||
- name: linux-user-repository-bin
|
|
||||||
homepage: 'https://gitea.plemya-x.ru/xpamych/ALR'
|
|
||||||
description: "Any Linux Repository"
|
|
||||||
maintainers:
|
|
||||||
- 'Евгений Храмов <xpamych@yandex.ru>'
|
|
||||||
license: GPLv3
|
|
||||||
private_key: '{{ .Env.AUR_KEY }}'
|
|
||||||
git_url: 'ssh://aur@aur.archlinux.org/linux-user-repository-bin.git'
|
|
||||||
provides:
|
|
||||||
- alr
|
|
||||||
conflicts:
|
|
||||||
- alr
|
|
||||||
depends:
|
|
||||||
- sudo
|
|
||||||
- pacman
|
|
||||||
optdepends:
|
|
||||||
- 'aria2: for downloading torrent sources'
|
|
||||||
package: |-
|
|
||||||
# binaries
|
|
||||||
install -Dm755 ./alr "${pkgdir}/usr/bin/alr"
|
|
||||||
|
|
||||||
# completions
|
|
||||||
install -Dm755 ./scripts/completion/bash ${pkgdir}/usr/share/bash-completion/completions/alr
|
|
||||||
install -Dm755 ./scripts/completion/zsh ${pkgdir}/usr/share/zsh/site-functions/_alr
|
|
||||||
release:
|
|
||||||
gitea:
|
|
||||||
owner: alr
|
|
||||||
name: alr
|
|
||||||
gitea_urls:
|
|
||||||
api: 'https://gitea.elara.ws/api/v1/'
|
|
||||||
download: 'https://gitea.elara.ws'
|
|
||||||
skip_tls_verify: false
|
|
||||||
checksum:
|
|
||||||
name_template: 'checksums.txt'
|
|
||||||
snapshot:
|
|
||||||
name_template: "{{ incpatch .Version }}-next"
|
|
||||||
changelog:
|
|
||||||
sort: asc
|
|
@ -1,5 +1,5 @@
|
|||||||
# ALR - Any Linux Repository
|
# ALR - Any Linux Repository
|
||||||
# Copyright (C) 2025 Евгений Храмов
|
# Copyright (C) 2025 The ALR Authors
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
# This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
|
||||||
# It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
|
||||||
#
|
|
||||||
# ALR - Any Linux Repository
|
|
||||||
# Copyright (C) 2025 Евгений Храмов
|
|
||||||
#
|
|
||||||
# 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/>.
|
|
||||||
|
|
||||||
platform: linux/amd64
|
|
||||||
pipeline:
|
|
||||||
release:
|
|
||||||
image: goreleaser/goreleaser
|
|
||||||
commands:
|
|
||||||
- goreleaser release
|
|
||||||
secrets: [ gitea_token, aur_key ]
|
|
||||||
when:
|
|
||||||
event: tag
|
|
14
Makefile
14
Makefile
@ -1,6 +1,6 @@
|
|||||||
NAME := alr
|
NAME := alr
|
||||||
GIT_VERSION = $(shell git describe --tags )
|
GIT_VERSION = $(shell git describe --tags )
|
||||||
|
IGNORE_ROOT_CHECK ?= 0
|
||||||
DESTDIR ?=
|
DESTDIR ?=
|
||||||
PREFIX ?= /usr/local
|
PREFIX ?= /usr/local
|
||||||
BIN := ./$(NAME)
|
BIN := ./$(NAME)
|
||||||
@ -24,8 +24,9 @@ $(BIN):
|
|||||||
go build -ldflags="-X 'gitea.plemya-x.ru/Plemya-x/ALR/internal/config.Version=$(GIT_VERSION)'" -o $@
|
go build -ldflags="-X 'gitea.plemya-x.ru/Plemya-x/ALR/internal/config.Version=$(GIT_VERSION)'" -o $@
|
||||||
|
|
||||||
check-no-root:
|
check-no-root:
|
||||||
@if [[ "$$(whoami)" == 'root' ]]; then \
|
@if [[ "$(IGNORE_ROOT_CHECK)" != "1" ]] && [[ "$$(whoami)" == 'root' ]]; then \
|
||||||
echo "This target shouldn't run as root" 1>&2; \
|
echo "This target shouldn't run as root" 1>&2; \
|
||||||
|
echo "Set IGNORE_ROOT_CHECK=1 to override" 1>&2; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -54,7 +55,7 @@ uninstall:
|
|||||||
clean clear:
|
clean clear:
|
||||||
rm -f $(BIN)
|
rm -f $(BIN)
|
||||||
|
|
||||||
OLD_FILES=$$(< old-files)
|
OLD_FILES=$(shell cat old-files)
|
||||||
IGNORE_OLD_FILES := $(foreach file,$(shell cat old-files),-ignore $(file))
|
IGNORE_OLD_FILES := $(foreach file,$(shell cat old-files),-ignore $(file))
|
||||||
update-license:
|
update-license:
|
||||||
$(ADD_LICENSE_BIN) -v -f license-header-old-files.tmpl $(OLD_FILES)
|
$(ADD_LICENSE_BIN) -v -f license-header-old-files.tmpl $(OLD_FILES)
|
||||||
@ -73,7 +74,12 @@ test-coverage:
|
|||||||
go test ./... -v -coverpkg=./... -coverprofile=coverage.out
|
go test ./... -v -coverpkg=./... -coverprofile=coverage.out
|
||||||
bash scripts/coverage-badge.sh
|
bash scripts/coverage-badge.sh
|
||||||
|
|
||||||
e2e-test: clean build
|
update-deps-cve:
|
||||||
|
bash scripts/update-deps-cve.sh
|
||||||
|
|
||||||
|
prepare-for-e2e-test: clean build
|
||||||
rm -f ./e2e-tests/alr
|
rm -f ./e2e-tests/alr
|
||||||
cp alr e2e-tests
|
cp alr e2e-tests
|
||||||
|
|
||||||
|
e2e-test: prepare-for-e2e-test
|
||||||
go test -tags=e2e ./...
|
go test -tags=e2e ./...
|
@ -11,7 +11,7 @@
|
|||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text>
|
<text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text>
|
||||||
<text x="33.5" y="14">coverage</text>
|
<text x="33.5" y="14">coverage</text>
|
||||||
<text x="86" y="15" fill="#010101" fill-opacity=".3">16.3%</text>
|
<text x="86" y="15" fill="#010101" fill-opacity=".3">16.9%</text>
|
||||||
<text x="86" y="14">16.3%</text>
|
<text x="86" y="14">16.9%</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 926 B |
@ -12,7 +12,7 @@
|
|||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="37" y="15" fill="#010101" fill-opacity=".3">ru translate</text>
|
<text x="37" y="15" fill="#010101" fill-opacity=".3">ru translate</text>
|
||||||
<text x="37" y="14">ru translate</text>
|
<text x="37" y="14">ru translate</text>
|
||||||
<text x="100" y="15" fill="#010101" fill-opacity=".3">97.00%</text>
|
<text x="100" y="15" fill="#010101" fill-opacity=".3">100.00%</text>
|
||||||
<text x="100" y="14">97.00%</text>
|
<text x="100" y="14">100.00%</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 940 B After Width: | Height: | Size: 942 B |
10
build.go
10
build.go
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -118,7 +118,11 @@ func BuildCmd() *cli.Command {
|
|||||||
return cliutils.FormatCliExit(gotext.Get("Cannot get absolute script path"), err)
|
return cliutils.FormatCliExit(gotext.Get("Cannot get absolute script path"), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
packages = append(packages, c.String("script-package"))
|
subpackage := c.String("subpackage")
|
||||||
|
|
||||||
|
if subpackage != "" {
|
||||||
|
packages = append(packages, subpackage)
|
||||||
|
}
|
||||||
|
|
||||||
scriptArgs = &build.BuildPackageFromScriptArgs{
|
scriptArgs = &build.BuildPackageFromScriptArgs{
|
||||||
Script: script,
|
Script: script,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -21,7 +21,6 @@ package e2etests_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/alecthomas/assert/v2"
|
|
||||||
"github.com/efficientgo/e2e"
|
"github.com/efficientgo/e2e"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,10 +30,7 @@ func TestE2EBashCompletion(t *testing.T) {
|
|||||||
"bash-completion",
|
"bash-completion",
|
||||||
COMMON_SYSTEMS,
|
COMMON_SYSTEMS,
|
||||||
func(t *testing.T, r e2e.Runnable) {
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
err := r.Exec(e2e.NewCommand(
|
execShouldNoError(t, r, "alr", "install", "--generate-bash-completion")
|
||||||
"alr", "install", "--generate-bash-completion",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -25,7 +25,6 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -113,33 +112,14 @@ var AUTOREQ_AUTOPROV_SYSTEMS []string = []string{
|
|||||||
"fedora-41",
|
"fedora-41",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var RPM_SYSTEMS []string = []string{
|
||||||
|
"fedora-41",
|
||||||
|
}
|
||||||
|
|
||||||
var COMMON_SYSTEMS []string = []string{
|
var COMMON_SYSTEMS []string = []string{
|
||||||
"ubuntu-24.04",
|
"ubuntu-24.04",
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
|
||||||
for _, id := range ALL_SYSTEMS {
|
|
||||||
buildAlrTestImage(id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func buildAlrTestImage(id string) {
|
|
||||||
cmd := exec.Command(
|
|
||||||
"docker",
|
|
||||||
"build",
|
|
||||||
"-t", fmt.Sprintf("alr-testimage-%s", id),
|
|
||||||
"-f", fmt.Sprintf("images/Dockerfile.%s", id),
|
|
||||||
".",
|
|
||||||
)
|
|
||||||
cmd.Stdout = os.Stdout
|
|
||||||
cmd.Stderr = os.Stderr
|
|
||||||
err := cmd.Run()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Error:", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func dockerMultipleRun(t *testing.T, name string, ids []string, f func(t *testing.T, runnable e2e.Runnable)) {
|
func dockerMultipleRun(t *testing.T, name string, ids []string, f func(t *testing.T, runnable e2e.Runnable)) {
|
||||||
t.Run(name, func(t *testing.T) {
|
t.Run(name, func(t *testing.T) {
|
||||||
for _, id := range ids {
|
for _, id := range ids {
|
||||||
@ -154,23 +134,39 @@ func dockerMultipleRun(t *testing.T, name string, ids []string, f func(t *testin
|
|||||||
e, err := e2e.New(e2e.WithVerbose(), e2e.WithName(fmt.Sprintf("alr-%s", truncatedHash)))
|
e, err := e2e.New(e2e.WithVerbose(), e2e.WithName(fmt.Sprintf("alr-%s", truncatedHash)))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
t.Cleanup(e.Close)
|
t.Cleanup(e.Close)
|
||||||
imageId := fmt.Sprintf("alr-testimage-%s", id)
|
imageId := fmt.Sprintf("ghcr.io/maks1ms/alr-e2e-test-image-%s", id)
|
||||||
runnable := e.Runnable(dockerName).Init(
|
runnable := e.Runnable(dockerName).Init(
|
||||||
e2e.StartOptions{
|
e2e.StartOptions{
|
||||||
Image: imageId,
|
Image: imageId,
|
||||||
Volumes: []string{
|
Volumes: []string{
|
||||||
// "./alr:/usr/bin/alr",
|
"./alr:/tmp/alr",
|
||||||
},
|
},
|
||||||
Privileged: true,
|
Privileged: true,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert.NoError(t, e2e.StartAndWaitReady(runnable))
|
assert.NoError(t, e2e.StartAndWaitReady(runnable))
|
||||||
|
err = runnable.Exec(e2e.NewCommand("/bin/alr-test-setup", "alr-install"))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
err = runnable.Exec(e2e.NewCommand("/bin/alr-test-setup", "passwordless-sudo-setup"))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
f(t, runnable)
|
f(t, runnable)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func execShouldNoError(t *testing.T, r e2e.Runnable, cmd string, args ...string) {
|
||||||
|
assert.NoError(t, r.Exec(e2e.NewCommand(cmd, args...)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func execShouldError(t *testing.T, r e2e.Runnable, cmd string, args ...string) {
|
||||||
|
assert.Error(t, r.Exec(e2e.NewCommand(cmd, args...)))
|
||||||
|
}
|
||||||
|
|
||||||
func runTestCommands(t *testing.T, r e2e.Runnable, timeout time.Duration, expects []expect.Batcher) {
|
func runTestCommands(t *testing.T, r e2e.Runnable, timeout time.Duration, expects []expect.Batcher) {
|
||||||
exp, _, err, _ := e2eSpawn(
|
exp, _, err, _ := e2eSpawn(
|
||||||
r,
|
r,
|
||||||
@ -184,3 +180,23 @@ func runTestCommands(t *testing.T, r e2e.Runnable, timeout time.Duration, expect
|
|||||||
)
|
)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const REPO_NAME_FOR_E2E_TESTS = "alr-repo"
|
||||||
|
const REPO_URL_FOR_E2E_TESTS = "https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git"
|
||||||
|
|
||||||
|
func defaultPrepare(t *testing.T, r e2e.Runnable) {
|
||||||
|
execShouldNoError(t, r,
|
||||||
|
"sudo",
|
||||||
|
"alr",
|
||||||
|
"repo",
|
||||||
|
"add",
|
||||||
|
REPO_NAME_FOR_E2E_TESTS,
|
||||||
|
REPO_URL_FOR_E2E_TESTS,
|
||||||
|
)
|
||||||
|
|
||||||
|
execShouldNoError(t, r,
|
||||||
|
"sudo",
|
||||||
|
"alr",
|
||||||
|
"ref",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
38
e2e-tests/group_and_summary_field_test.go
Normal file
38
e2e-tests/group_and_summary_field_test.go
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// ALR - Any Linux Repository
|
||||||
|
// Copyright (C) 2025 The ALR Authors
|
||||||
|
//
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
|
//go:build e2e
|
||||||
|
|
||||||
|
package e2etests_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/efficientgo/e2e"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestE2EGroupAndSummaryField(t *testing.T) {
|
||||||
|
dockerMultipleRun(
|
||||||
|
t,
|
||||||
|
"group-and-summary-field",
|
||||||
|
RPM_SYSTEMS,
|
||||||
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
|
defaultPrepare(t, r)
|
||||||
|
execShouldNoError(t, r, "sh", "-c", "alr search --name test-group-and-summary --format \"{{.Group}}\" | grep ^System/Base$")
|
||||||
|
execShouldNoError(t, r, "sh", "-c", "alr search --name test-group-and-summary --format \"{{.Summary}}\" | grep \"^Custom summary$\"")
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
@ -1,4 +0,0 @@
|
|||||||
FROM alpine:latest
|
|
||||||
RUN adduser -s /bin/bash alr-user
|
|
||||||
USER alr-user
|
|
||||||
ENTRYPOINT ["tail", "-f", "/dev/null"]
|
|
@ -1,6 +0,0 @@
|
|||||||
FROM registry.altlinux.org/sisyphus/alt:latest
|
|
||||||
RUN apt-get update && apt-get install -y ca-certificates rpm-build
|
|
||||||
RUN useradd -m -s /bin/bash alr-user
|
|
||||||
USER alr-user
|
|
||||||
WORKDIR /home/alr-user
|
|
||||||
ENTRYPOINT ["tail", "-f", "/dev/null"]
|
|
@ -1,4 +0,0 @@
|
|||||||
FROM archlinux:latest
|
|
||||||
RUN useradd -m -s /bin/bash alr-user
|
|
||||||
USER alr-user
|
|
||||||
ENTRYPOINT ["tail", "-f", "/dev/null"]
|
|
@ -1,18 +0,0 @@
|
|||||||
FROM fedora:41
|
|
||||||
RUN dnf install -y ca-certificates sudo rpm-build bindfs
|
|
||||||
RUN <<EOF
|
|
||||||
useradd -m -s /bin/bash -G wheel user
|
|
||||||
echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/user
|
|
||||||
chmod 0440 /etc/sudoers.d/user
|
|
||||||
|
|
||||||
useradd -m -s /bin/bash alr
|
|
||||||
mkdir -p /var/cache/alr /etc/alr
|
|
||||||
chown alr:alr /var/cache/alr /etc/alr
|
|
||||||
EOF
|
|
||||||
COPY ./alr /usr/bin
|
|
||||||
RUN <<EOF
|
|
||||||
setcap cap_setuid,cap_setgid+ep /usr/bin/alr
|
|
||||||
EOF
|
|
||||||
USER user
|
|
||||||
WORKDIR /home/user
|
|
||||||
ENTRYPOINT ["tail", "-f", "/dev/null"]
|
|
@ -1,4 +0,0 @@
|
|||||||
FROM opensuse/leap:latest
|
|
||||||
RUN useradd -m -s /bin/bash alr-user
|
|
||||||
USER alr-user
|
|
||||||
ENTRYPOINT ["tail", "-f", "/dev/null"]
|
|
@ -1,4 +0,0 @@
|
|||||||
FROM registry.red-soft.ru/ubi8/ubi:latest
|
|
||||||
RUN useradd -m -s /bin/bash alr-user
|
|
||||||
USER alr-user
|
|
||||||
ENTRYPOINT ["tail", "-f", "/dev/null"]
|
|
@ -1,17 +0,0 @@
|
|||||||
FROM ubuntu:24.10
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates sudo libcap2-bin
|
|
||||||
RUN <<EOF
|
|
||||||
useradd -m -s /bin/bash user
|
|
||||||
echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/user
|
|
||||||
chmod 0440 /etc/sudoers.d/user
|
|
||||||
|
|
||||||
useradd -m -s /bin/bash alr
|
|
||||||
mkdir -p /var/cache/alr /etc/alr
|
|
||||||
chown alr:alr /var/cache/alr /etc/alr
|
|
||||||
EOF
|
|
||||||
COPY ./alr /usr/bin
|
|
||||||
RUN <<EOF
|
|
||||||
setcap cap_setuid,cap_setgid+ep /usr/bin/alr
|
|
||||||
EOF
|
|
||||||
USER user
|
|
||||||
ENTRYPOINT ["tail", "-f", "/dev/null"]
|
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -21,7 +21,6 @@ package e2etests_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/alecthomas/assert/v2"
|
|
||||||
"github.com/efficientgo/e2e"
|
"github.com/efficientgo/e2e"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,10 +30,11 @@ func TestE2EIssue32Interactive(t *testing.T) {
|
|||||||
"issue-32-interactive",
|
"issue-32-interactive",
|
||||||
COMMON_SYSTEMS,
|
COMMON_SYSTEMS,
|
||||||
func(t *testing.T, r e2e.Runnable) {
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
err := r.Exec(e2e.NewCommand(
|
execShouldNoError(t, r, "alr", "--interactive=false", "remove", "ca-certificates")
|
||||||
"sudo", "alr", "--interactive=false", "remove", "ca-certificates",
|
execShouldNoError(t, r, "sudo", "alr", "--interactive=false", "remove", "openssl")
|
||||||
))
|
execShouldNoError(t, r, "alr", "fix")
|
||||||
assert.NoError(t, err)
|
execShouldNoError(t, r, "sudo", "apt-get", "update")
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "--interactive=false", "install", "ca-certificates")
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -21,7 +21,6 @@ package e2etests_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/alecthomas/assert/v2"
|
|
||||||
"github.com/efficientgo/e2e"
|
"github.com/efficientgo/e2e"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,51 +30,11 @@ func TestE2EIssue41AutoreqSkiplist(t *testing.T) {
|
|||||||
"issue-41-autoreq-skiplist",
|
"issue-41-autoreq-skiplist",
|
||||||
AUTOREQ_AUTOPROV_SYSTEMS,
|
AUTOREQ_AUTOPROV_SYSTEMS,
|
||||||
func(t *testing.T, r e2e.Runnable) {
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
err := r.Exec(e2e.NewCommand(
|
defaultPrepare(t, r)
|
||||||
"sudo",
|
execShouldNoError(t, r, "alr", "build", "-p", "alr-repo/test-autoreq-autoprov")
|
||||||
"alr",
|
execShouldNoError(t, r, "sh", "-c", "rpm -qp --requires *.rpm | grep \"^/bin/sh$\"")
|
||||||
"addrepo",
|
execShouldError(t, r, "sh", "-c", "rpm -qp --requires *.rpm | grep \"^/bin/bash$\"")
|
||||||
"--name",
|
execShouldError(t, r, "sh", "-c", "rpm -qp --requires *.rpm | grep \"^/bin/zsh$\"")
|
||||||
"alr-repo",
|
|
||||||
"--url",
|
|
||||||
"https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand(
|
|
||||||
"alr",
|
|
||||||
"ref",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand(
|
|
||||||
"alr",
|
|
||||||
"build",
|
|
||||||
"-p",
|
|
||||||
"alr-repo/test-autoreq-autoprov",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand(
|
|
||||||
"sh",
|
|
||||||
"-c",
|
|
||||||
"rpm -qp --requires *.rpm | grep \"^/bin/sh$\"",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand(
|
|
||||||
"sh",
|
|
||||||
"-c",
|
|
||||||
"rpm -qp --requires *.rpm | grep \"^/bin/bash$\"",
|
|
||||||
))
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand(
|
|
||||||
"sh",
|
|
||||||
"-c",
|
|
||||||
"rpm -qp --requires *.rpm | grep \"^/bin/zsh$\"",
|
|
||||||
))
|
|
||||||
assert.Error(t, err)
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -21,7 +21,6 @@ package e2etests_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/alecthomas/assert/v2"
|
|
||||||
"github.com/efficientgo/e2e"
|
"github.com/efficientgo/e2e"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,26 +30,10 @@ func TestE2EIssue50InstallMultiple(t *testing.T) {
|
|||||||
"issue-50-install-multiple",
|
"issue-50-install-multiple",
|
||||||
COMMON_SYSTEMS,
|
COMMON_SYSTEMS,
|
||||||
func(t *testing.T, r e2e.Runnable) {
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
err := r.Exec(e2e.NewCommand(
|
defaultPrepare(t, r)
|
||||||
"sudo",
|
execShouldNoError(t, r, "sudo", "alr", "in", "foo-pkg", "bar-pkg")
|
||||||
"alr",
|
execShouldNoError(t, r, "cat", "/opt/foo")
|
||||||
"addrepo",
|
execShouldNoError(t, r, "cat", "/opt/bar")
|
||||||
"--name",
|
|
||||||
"alr-repo",
|
|
||||||
"--url",
|
|
||||||
"https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand(
|
|
||||||
"alr", "in", "foo-pkg", "bar-pkg",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand("cat", "/opt/foo"))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
err = r.Exec(e2e.NewCommand("cat", "/opt/bar"))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -21,7 +21,6 @@ package e2etests_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/alecthomas/assert/v2"
|
|
||||||
"github.com/efficientgo/e2e"
|
"github.com/efficientgo/e2e"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,23 +30,8 @@ func TestE2EIssue53LcAllCInfo(t *testing.T) {
|
|||||||
"issue-53-lc-all-c-info",
|
"issue-53-lc-all-c-info",
|
||||||
COMMON_SYSTEMS,
|
COMMON_SYSTEMS,
|
||||||
func(t *testing.T, r e2e.Runnable) {
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
err := r.Exec(e2e.NewCommand(
|
defaultPrepare(t, r)
|
||||||
"sudo",
|
execShouldNoError(t, r, "bash", "-c", "LANG=C alr info foo-pkg")
|
||||||
"alr",
|
|
||||||
"addrepo",
|
|
||||||
"--name",
|
|
||||||
"alr-repo",
|
|
||||||
"--url",
|
|
||||||
"https://gitea.plemya-x.ru/Plemya-x/alr-repo.git",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand(
|
|
||||||
"bash",
|
|
||||||
"-c",
|
|
||||||
"LANG=C alr info alr-bin",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -21,7 +21,6 @@ package e2etests_test
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/alecthomas/assert/v2"
|
|
||||||
"github.com/efficientgo/e2e"
|
"github.com/efficientgo/e2e"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,28 +30,11 @@ func TestE2EIssue59RmCompletion(t *testing.T) {
|
|||||||
"issue-59-rm-completion",
|
"issue-59-rm-completion",
|
||||||
COMMON_SYSTEMS,
|
COMMON_SYSTEMS,
|
||||||
func(t *testing.T, r e2e.Runnable) {
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
err := r.Exec(e2e.NewCommand(
|
defaultPrepare(t, r)
|
||||||
"sudo",
|
execShouldNoError(t, r, "sudo", "alr", "in", "foo-pkg", "bar-pkg")
|
||||||
"alr",
|
execShouldNoError(t, r, "sh", "-c", "alr rm --generate-bash-completion | grep ^foo-pkg$")
|
||||||
"addrepo",
|
execShouldNoError(t, r, "sh", "-c", "alr rm --generate-bash-completion | grep ^bar-pkg$")
|
||||||
"--name",
|
execShouldError(t, r, "sh", "-c", "alr rm --generate-bash-completion | grep ^test-autoreq-autoprov$")
|
||||||
"alr-repo",
|
|
||||||
"--url",
|
|
||||||
"https://gitea.plemya-x.ru/Maks1mS/repo-for-tests.git",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand(
|
|
||||||
"alr", "in", "foo-pkg", "bar-pkg",
|
|
||||||
))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
err = r.Exec(e2e.NewCommand("sh", "-c", "alr rm --generate-bash-completion | grep ^foo-pkg$"))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
err = r.Exec(e2e.NewCommand("sh", "-c", "alr rm --generate-bash-completion | grep ^bar-pkg$"))
|
|
||||||
assert.NoError(t, err)
|
|
||||||
err = r.Exec(e2e.NewCommand("sh", "-c", "alr rm --generate-bash-completion | grep ^test-autoreq-autoprov$"))
|
|
||||||
assert.Error(t, err)
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
37
e2e-tests/issue_72_install_with_deps_test.go
Normal file
37
e2e-tests/issue_72_install_with_deps_test.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// ALR - Any Linux Repository
|
||||||
|
// Copyright (C) 2025 The ALR Authors
|
||||||
|
//
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
|
//go:build e2e
|
||||||
|
|
||||||
|
package e2etests_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/efficientgo/e2e"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestE2EIssue72InstallWithDeps(t *testing.T) {
|
||||||
|
dockerMultipleRun(
|
||||||
|
t,
|
||||||
|
"issue-72-install-with-deps",
|
||||||
|
COMMON_SYSTEMS,
|
||||||
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
|
defaultPrepare(t, r)
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "in", "test-app-with-lib")
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
43
e2e-tests/issue_74_upgradable_test.go
Normal file
43
e2e-tests/issue_74_upgradable_test.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
// ALR - Any Linux Repository
|
||||||
|
// Copyright (C) 2025 The ALR Authors
|
||||||
|
//
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
|
//go:build e2e
|
||||||
|
|
||||||
|
package e2etests_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/efficientgo/e2e"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestE2EIssue74Upgradable(t *testing.T) {
|
||||||
|
dockerMultipleRun(
|
||||||
|
t,
|
||||||
|
"issue-74-upgradable",
|
||||||
|
COMMON_SYSTEMS,
|
||||||
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
|
defaultPrepare(t, r)
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo", "bd26236cd7")
|
||||||
|
execShouldNoError(t, r, "alr", "ref")
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "in", "bar-pkg")
|
||||||
|
execShouldNoError(t, r, "sh", "-c", "test $(alr list -U | wc -l) -eq 0 || exit 1")
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo", "d9a3541561")
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "ref")
|
||||||
|
execShouldNoError(t, r, "sh", "-c", "test $(alr list -U | wc -l) -eq 1 || exit 1")
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
38
e2e-tests/issue_75_ref_specify_test.go
Normal file
38
e2e-tests/issue_75_ref_specify_test.go
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// ALR - Any Linux Repository
|
||||||
|
// Copyright (C) 2025 The ALR Authors
|
||||||
|
//
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
|
//go:build e2e
|
||||||
|
|
||||||
|
package e2etests_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/efficientgo/e2e"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestE2EIssue75InstallWithDeps(t *testing.T) {
|
||||||
|
dockerMultipleRun(
|
||||||
|
t,
|
||||||
|
"issue-75-ref-specify",
|
||||||
|
COMMON_SYSTEMS,
|
||||||
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
|
defaultPrepare(t, r)
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo", "bd26236cd7")
|
||||||
|
execShouldNoError(t, r, "sh", "-c", "test $(alr list | wc -l) -eq 2 || exit 1")
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
38
e2e-tests/issue_81_multiple_packages_test.go
Normal file
38
e2e-tests/issue_81_multiple_packages_test.go
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// ALR - Any Linux Repository
|
||||||
|
// Copyright (C) 2025 The ALR Authors
|
||||||
|
//
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
|
//go:build e2e
|
||||||
|
|
||||||
|
package e2etests_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/efficientgo/e2e"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestE2EIssue81MultiplePackages(t *testing.T) {
|
||||||
|
dockerMultipleRun(
|
||||||
|
t,
|
||||||
|
"issue-81-multiple-packages",
|
||||||
|
COMMON_SYSTEMS,
|
||||||
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
|
defaultPrepare(t, r)
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "in", "first-package-with-dashes")
|
||||||
|
execShouldNoError(t, r, "cat", "/opt/first-package")
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
40
e2e-tests/issue_91_set_repo_ref_test.go
Normal file
40
e2e-tests/issue_91_set_repo_ref_test.go
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
// ALR - Any Linux Repository
|
||||||
|
// Copyright (C) 2025 The ALR Authors
|
||||||
|
//
|
||||||
|
// 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/>.
|
||||||
|
|
||||||
|
//go:build e2e
|
||||||
|
|
||||||
|
package e2etests_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/efficientgo/e2e"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestE2EIssue91MultiplePackages(t *testing.T) {
|
||||||
|
dockerMultipleRun(
|
||||||
|
t,
|
||||||
|
"issue-91-set-repo-ref",
|
||||||
|
COMMON_SYSTEMS,
|
||||||
|
func(t *testing.T, r e2e.Runnable) {
|
||||||
|
defaultPrepare(t, r)
|
||||||
|
execShouldError(t, r, "sudo", "alr", "repo", "set-ref")
|
||||||
|
execShouldError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo")
|
||||||
|
execShouldNoError(t, r, "sudo", "alr", "repo", "set-ref", "alr-repo", "bd26236cd7")
|
||||||
|
execShouldNoError(t, r, "sh", "-c", "test $(alr list | wc -l) -eq 2 || exit 1")
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
4
fix.go
4
fix.go
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
4
gen.go
4
gen.go
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
33
go.mod
33
go.mod
@ -1,10 +1,11 @@
|
|||||||
module gitea.plemya-x.ru/Plemya-x/ALR
|
module gitea.plemya-x.ru/Plemya-x/ALR
|
||||||
|
|
||||||
go 1.22
|
go 1.23.0
|
||||||
|
|
||||||
toolchain go1.23.5
|
toolchain go1.24.2
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
gitea.plemya-x.ru/Plemya-x/fakeroot v0.0.2-0.20250408104831-427aaa7713c3
|
||||||
github.com/AlecAivazis/survey/v2 v2.3.7
|
github.com/AlecAivazis/survey/v2 v2.3.7
|
||||||
github.com/PuerkitoBio/purell v1.2.0
|
github.com/PuerkitoBio/purell v1.2.0
|
||||||
github.com/alecthomas/assert/v2 v2.2.1
|
github.com/alecthomas/assert/v2 v2.2.1
|
||||||
@ -15,8 +16,8 @@ require (
|
|||||||
github.com/charmbracelet/lipgloss v1.0.0
|
github.com/charmbracelet/lipgloss v1.0.0
|
||||||
github.com/charmbracelet/log v0.4.0
|
github.com/charmbracelet/log v0.4.0
|
||||||
github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0
|
github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0
|
||||||
github.com/go-git/go-billy/v5 v5.5.0
|
github.com/go-git/go-billy/v5 v5.6.0
|
||||||
github.com/go-git/go-git/v5 v5.12.0
|
github.com/go-git/go-git/v5 v5.13.0
|
||||||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
|
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
|
||||||
github.com/goreleaser/nfpm/v2 v2.41.0
|
github.com/goreleaser/nfpm/v2 v2.41.0
|
||||||
github.com/hashicorp/go-hclog v0.14.1
|
github.com/hashicorp/go-hclog v0.14.1
|
||||||
@ -34,10 +35,10 @@ require (
|
|||||||
github.com/urfave/cli/v2 v2.25.7
|
github.com/urfave/cli/v2 v2.25.7
|
||||||
github.com/vmihailenco/msgpack/v5 v5.3.5
|
github.com/vmihailenco/msgpack/v5 v5.3.5
|
||||||
go.elara.ws/vercmp v0.0.0-20230622214216-0b2b067575c4
|
go.elara.ws/vercmp v0.0.0-20230622214216-0b2b067575c4
|
||||||
golang.org/x/crypto v0.32.0
|
golang.org/x/crypto v0.36.0
|
||||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
|
||||||
golang.org/x/sys v0.29.0
|
golang.org/x/sys v0.31.0
|
||||||
golang.org/x/text v0.21.0
|
golang.org/x/text v0.23.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
modernc.org/sqlite v1.25.0
|
modernc.org/sqlite v1.25.0
|
||||||
mvdan.cc/sh/v3 v3.10.0
|
mvdan.cc/sh/v3 v3.10.0
|
||||||
@ -50,7 +51,7 @@ require (
|
|||||||
github.com/Masterminds/semver/v3 v3.3.0 // indirect
|
github.com/Masterminds/semver/v3 v3.3.0 // indirect
|
||||||
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
|
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
|
||||||
github.com/Microsoft/go-winio v0.6.1 // indirect
|
github.com/Microsoft/go-winio v0.6.1 // indirect
|
||||||
github.com/ProtonMail/go-crypto v1.0.0 // indirect
|
github.com/ProtonMail/go-crypto v1.1.3 // indirect
|
||||||
github.com/alecthomas/repr v0.2.0 // indirect
|
github.com/alecthomas/repr v0.2.0 // indirect
|
||||||
github.com/andybalholm/brotli v1.0.4 // indirect
|
github.com/andybalholm/brotli v1.0.4 // indirect
|
||||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||||
@ -66,7 +67,7 @@ require (
|
|||||||
github.com/connesc/cipherio v0.2.1 // indirect
|
github.com/connesc/cipherio v0.2.1 // indirect
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
|
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
|
||||||
github.com/creack/pty v1.1.24 // indirect
|
github.com/creack/pty v1.1.24 // indirect
|
||||||
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
|
github.com/cyphar/filepath-securejoin v0.2.5 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/dlclark/regexp2 v1.10.0 // indirect
|
github.com/dlclark/regexp2 v1.10.0 // indirect
|
||||||
github.com/dsnet/compress v0.0.1 // indirect
|
github.com/dsnet/compress v0.0.1 // indirect
|
||||||
@ -117,7 +118,7 @@ require (
|
|||||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
||||||
github.com/shopspring/decimal v1.2.0 // indirect
|
github.com/shopspring/decimal v1.2.0 // indirect
|
||||||
github.com/skeema/knownhosts v1.2.2 // indirect
|
github.com/skeema/knownhosts v1.3.0 // indirect
|
||||||
github.com/spf13/cast v1.6.0 // indirect
|
github.com/spf13/cast v1.6.0 // indirect
|
||||||
github.com/therootcompany/xz v1.0.1 // indirect
|
github.com/therootcompany/xz v1.0.1 // indirect
|
||||||
github.com/ulikunitz/xz v0.5.12 // indirect
|
github.com/ulikunitz/xz v0.5.12 // indirect
|
||||||
@ -126,11 +127,11 @@ require (
|
|||||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
|
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
|
||||||
gitlab.com/digitalxero/go-conventional-commit v1.0.7 // indirect
|
gitlab.com/digitalxero/go-conventional-commit v1.0.7 // indirect
|
||||||
go4.org v0.0.0-20200411211856-f5505b9728dd // indirect
|
go4.org v0.0.0-20200411211856-f5505b9728dd // indirect
|
||||||
golang.org/x/mod v0.18.0 // indirect
|
golang.org/x/mod v0.19.0 // indirect
|
||||||
golang.org/x/net v0.34.0 // indirect
|
golang.org/x/net v0.38.0 // indirect
|
||||||
golang.org/x/sync v0.10.0 // indirect
|
golang.org/x/sync v0.12.0 // indirect
|
||||||
golang.org/x/term v0.28.0 // indirect
|
golang.org/x/term v0.30.0 // indirect
|
||||||
golang.org/x/tools v0.22.0 // indirect
|
golang.org/x/tools v0.23.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect
|
||||||
google.golang.org/grpc v1.58.3 // indirect
|
google.golang.org/grpc v1.58.3 // indirect
|
||||||
google.golang.org/protobuf v1.36.1 // indirect
|
google.golang.org/protobuf v1.36.1 // indirect
|
||||||
|
85
go.sum
85
go.sum
@ -17,6 +17,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
|
|||||||
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
|
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
|
||||||
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
|
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
|
gitea.plemya-x.ru/Plemya-x/fakeroot v0.0.2-0.20250408104831-427aaa7713c3 h1:56BjRJJ2Sv50DfSvNUydUMJwwFuiBMWC1uYtH2GYjk8=
|
||||||
|
gitea.plemya-x.ru/Plemya-x/fakeroot v0.0.2-0.20250408104831-427aaa7713c3/go.mod h1:iKQM6uttMJgE5CFrPw6SQqAV7TKtlJNICRAie/dTciw=
|
||||||
github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ=
|
github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ=
|
||||||
github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo=
|
github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo=
|
||||||
github.com/AlekSi/pointer v1.2.0 h1:glcy/gc4h8HnG2Z3ZECSzZ1IX1x2JxRVuDzaJwQE0+w=
|
github.com/AlekSi/pointer v1.2.0 h1:glcy/gc4h8HnG2Z3ZECSzZ1IX1x2JxRVuDzaJwQE0+w=
|
||||||
@ -37,8 +39,8 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc
|
|||||||
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
|
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
|
||||||
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s=
|
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s=
|
||||||
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
|
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
|
||||||
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
|
github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
|
||||||
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
|
github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
|
||||||
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k=
|
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k=
|
||||||
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw=
|
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw=
|
||||||
github.com/ProtonMail/gopenpgp/v2 v2.7.1 h1:Awsg7MPc2gD3I7IFac2qE3Gdls0lZW8SzrFZ3k1oz0s=
|
github.com/ProtonMail/gopenpgp/v2 v2.7.1 h1:Awsg7MPc2gD3I7IFac2qE3Gdls0lZW8SzrFZ3k1oz0s=
|
||||||
@ -71,7 +73,6 @@ github.com/bodgit/windows v1.0.0 h1:rLQ/XjsleZvx4fR1tB/UxQrK+SJ2OFHzfPjLWWOhDIA=
|
|||||||
github.com/bodgit/windows v1.0.0/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
|
github.com/bodgit/windows v1.0.0/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
|
||||||
github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
|
github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
|
||||||
github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
|
github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
|
||||||
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
|
|
||||||
github.com/caarlos0/env v3.5.0+incompatible h1:Yy0UN8o9Wtr/jGHZDpCBLpNrzcFLLM2yixi/rBrKyJs=
|
github.com/caarlos0/env v3.5.0+incompatible h1:Yy0UN8o9Wtr/jGHZDpCBLpNrzcFLLM2yixi/rBrKyJs=
|
||||||
github.com/caarlos0/env v3.5.0+incompatible/go.mod h1:tdCsowwCzMLdkqRYDlHpZCp2UooDD3MspDBjZ2AD02Y=
|
github.com/caarlos0/env v3.5.0+incompatible/go.mod h1:tdCsowwCzMLdkqRYDlHpZCp2UooDD3MspDBjZ2AD02Y=
|
||||||
github.com/caarlos0/testfs v0.4.4 h1:3PHvzHi5Lt+g332CiShwS8ogTgS3HjrmzZxCm6JCDr8=
|
github.com/caarlos0/testfs v0.4.4 h1:3PHvzHi5Lt+g332CiShwS8ogTgS3HjrmzZxCm6JCDr8=
|
||||||
@ -99,7 +100,6 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR
|
|||||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
|
|
||||||
github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI=
|
github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI=
|
||||||
github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
|
github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
|
||||||
github.com/connesc/cipherio v0.2.1 h1:FGtpTPMbKNNWByNrr9aEBtaJtXjqOzkIXNYJp6OEycw=
|
github.com/connesc/cipherio v0.2.1 h1:FGtpTPMbKNNWByNrr9aEBtaJtXjqOzkIXNYJp6OEycw=
|
||||||
@ -109,8 +109,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t
|
|||||||
github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
|
github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
|
||||||
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
|
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
|
||||||
github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
|
github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
|
||||||
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
|
github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo=
|
||||||
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
|
github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@ -125,8 +125,8 @@ github.com/efficientgo/core v1.0.0-rc.0 h1:jJoA0N+C4/knWYVZ6GrdHOtDyrg8Y/TR4vFpT
|
|||||||
github.com/efficientgo/core v1.0.0-rc.0/go.mod h1:kQa0V74HNYMfuJH6jiPiwNdpWXl4xd/K4tzlrcvYDQI=
|
github.com/efficientgo/core v1.0.0-rc.0/go.mod h1:kQa0V74HNYMfuJH6jiPiwNdpWXl4xd/K4tzlrcvYDQI=
|
||||||
github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0 h1:C/FNIs+MtAJgQYLJ9FX/ACFYyDRuLYoXTmueErrOJyA=
|
github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0 h1:C/FNIs+MtAJgQYLJ9FX/ACFYyDRuLYoXTmueErrOJyA=
|
||||||
github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0/go.mod h1:plsKU0YHE9uX+7utvr7SiDtVBSHJyEfHRO4UnUgDmts=
|
github.com/efficientgo/e2e v0.14.1-0.20240418111536-97db25a0c6c0/go.mod h1:plsKU0YHE9uX+7utvr7SiDtVBSHJyEfHRO4UnUgDmts=
|
||||||
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
|
github.com/elazarl/goproxy v1.2.1 h1:njjgvO6cRG9rIqN2ebkqy6cQz2Njkx7Fsfv/zIZqgug=
|
||||||
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
|
github.com/elazarl/goproxy v1.2.1/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64=
|
||||||
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
||||||
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
|
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
@ -137,16 +137,16 @@ github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
|
|||||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||||
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||||
github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE=
|
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
|
||||||
github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8=
|
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
|
||||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
||||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
||||||
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
|
github.com/go-git/go-billy/v5 v5.6.0 h1:w2hPNtoehvJIxR00Vb4xX94qHQi/ApZfX+nBE2Cjio8=
|
||||||
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
|
github.com/go-git/go-billy/v5 v5.6.0/go.mod h1:sFDq7xD3fn3E0GOwUSZqHo9lrkmx8xJhA0ZrfvjBRGM=
|
||||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
||||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
||||||
github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys=
|
github.com/go-git/go-git/v5 v5.13.0 h1:vLn5wlGIh/X78El6r3Jr+30W16Blk0CTcxTYcYPWi5E=
|
||||||
github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY=
|
github.com/go-git/go-git/v5 v5.13.0/go.mod h1:Wjo7/JyVKtQgUNdXYXIepzWfJQkUEIGvkvVkiXRR/zw=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
|
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
|
||||||
@ -320,8 +320,8 @@ github.com/nwaples/rardecode/v2 v2.0.0-beta.2 h1:e3mzJFJs4k83GXBEiTaQ5HgSc/kOK8q
|
|||||||
github.com/nwaples/rardecode/v2 v2.0.0-beta.2/go.mod h1:yntwv/HfMc/Hbvtq9I19D1n58te3h6KsqCf3GxyfBGY=
|
github.com/nwaples/rardecode/v2 v2.0.0-beta.2/go.mod h1:yntwv/HfMc/Hbvtq9I19D1n58te3h6KsqCf3GxyfBGY=
|
||||||
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
|
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
|
||||||
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
|
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
|
||||||
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
|
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
|
||||||
github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
|
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
|
||||||
github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
|
github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
|
||||||
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
|
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
|
||||||
github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
|
github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
|
||||||
@ -361,8 +361,8 @@ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG
|
|||||||
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
|
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
|
||||||
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A=
|
github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
|
||||||
github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
|
github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
|
||||||
github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY=
|
github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY=
|
||||||
github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec=
|
github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec=
|
||||||
github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY=
|
github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY=
|
||||||
@ -419,10 +419,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
|
|||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||||
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
|
||||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
||||||
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
|
|
||||||
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
|
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
@ -431,8 +429,8 @@ golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE
|
|||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8=
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
|
||||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
@ -451,9 +449,8 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
|||||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
|
||||||
golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
|
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@ -472,10 +469,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
|
|||||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
|
||||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
||||||
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
|
|
||||||
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
@ -490,9 +485,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ
|
|||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
|
||||||
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
|
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
@ -519,18 +513,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
|
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
||||||
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
|
||||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
|
||||||
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
|
|
||||||
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
|
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
@ -539,10 +529,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
|
||||||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
||||||
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
|
||||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
@ -570,9 +558,8 @@ golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapK
|
|||||||
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
|
||||||
golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
|
golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
|
||||||
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
|
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
4
info.go
4
info.go
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
22
install.go
22
install.go
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -46,11 +46,7 @@ func InstallCmd() *cli.Command {
|
|||||||
Usage: gotext.Get("Build package from scratch even if there's an already built package available"),
|
Usage: gotext.Get("Build package from scratch even if there's an already built package available"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(c *cli.Context) error {
|
Action: utils.RootNeededAction(func(c *cli.Context) error {
|
||||||
if err := utils.ExitIfNotRoot(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
args := c.Args()
|
args := c.Args()
|
||||||
if args.Len() < 1 {
|
if args.Len() < 1 {
|
||||||
return cliutils.FormatCliExit(gotext.Get("Command install expected at least 1 argument, got %d", args.Len()), nil)
|
return cliutils.FormatCliExit(gotext.Get("Command install expected at least 1 argument, got %d", args.Len()), nil)
|
||||||
@ -115,11 +111,11 @@ func InstallCmd() *cli.Command {
|
|||||||
args.Slice(),
|
args.Slice(),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cliutils.FormatCliExit(gotext.Get("Error parsing os release"), err)
|
return cliutils.FormatCliExit(gotext.Get("Error when installing the package"), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
}),
|
||||||
BashComplete: cliutils.BashCompleteWithError(func(c *cli.Context) error {
|
BashComplete: cliutils.BashCompleteWithError(func(c *cli.Context) error {
|
||||||
if err := utils.ExitIfCantDropCapsToAlrUser(); err != nil {
|
if err := utils.ExitIfCantDropCapsToAlrUser(); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -213,11 +209,7 @@ func RemoveCmd() *cli.Command {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}),
|
}),
|
||||||
Action: func(c *cli.Context) error {
|
Action: utils.RootNeededAction(func(c *cli.Context) error {
|
||||||
if err := utils.ExitIfNotRoot(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
args := c.Args()
|
args := c.Args()
|
||||||
if args.Len() < 1 {
|
if args.Len() < 1 {
|
||||||
return cliutils.FormatCliExit(gotext.Get("Command remove expected at least 1 argument, got %d", args.Len()), nil)
|
return cliutils.FormatCliExit(gotext.Get("Command remove expected at least 1 argument, got %d", args.Len()), nil)
|
||||||
@ -239,6 +231,6 @@ func RemoveCmd() *cli.Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -21,6 +21,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
|
||||||
|
"github.com/leonelquinteros/gotext"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -46,6 +47,9 @@ func HandleExitCoder(err error) {
|
|||||||
cli.OsExiter(exitErr.ExitCode())
|
cli.OsExiter(exitErr.ExitCode())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
slog.Error(err.Error())
|
||||||
|
cli.OsExiter(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FormatCliExit(msg string, err error) cli.ExitCoder {
|
func FormatCliExit(msg string, err error) cli.ExitCoder {
|
||||||
@ -58,3 +62,11 @@ func FormatCliExitWithCode(msg string, err error, exitCode int) cli.ExitCoder {
|
|||||||
}
|
}
|
||||||
return cli.Exit(fmt.Errorf("%s: %w", msg, err), exitCode)
|
return cli.Exit(fmt.Errorf("%s: %w", msg, err), exitCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WarnLegacyCommand(newSyntax string) {
|
||||||
|
slog.Warn(
|
||||||
|
gotext.Get(
|
||||||
|
"This command is deprecated and would be removed in the future, use \"%s\" instead!", newSyntax,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -39,6 +39,7 @@ type ALRConfig struct {
|
|||||||
|
|
||||||
var defaultConfig = &types.Config{
|
var defaultConfig = &types.Config{
|
||||||
RootCmd: "sudo",
|
RootCmd: "sudo",
|
||||||
|
UseRootCmd: true,
|
||||||
PagerStyle: "native",
|
PagerStyle: "native",
|
||||||
IgnorePkgUpdates: []string{},
|
IgnorePkgUpdates: []string{},
|
||||||
AutoPull: true,
|
AutoPull: true,
|
||||||
@ -142,6 +143,10 @@ func (c *ALRConfig) LogLevel() string {
|
|||||||
return c.cfg.LogLevel
|
return c.cfg.LogLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ALRConfig) UseRootCmd() bool {
|
||||||
|
return c.cfg.UseRootCmd
|
||||||
|
}
|
||||||
|
|
||||||
func (c *ALRConfig) GetPaths() *Paths {
|
func (c *ALRConfig) GetPaths() *Paths {
|
||||||
return c.paths
|
return c.paths
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -31,7 +31,7 @@ import (
|
|||||||
|
|
||||||
// CurrentVersion is the current version of the database.
|
// CurrentVersion is the current version of the database.
|
||||||
// The database is reset if its version doesn't match this.
|
// The database is reset if its version doesn't match this.
|
||||||
const CurrentVersion = 3
|
const CurrentVersion = 4
|
||||||
|
|
||||||
// Package is a ALR package's database representation
|
// Package is a ALR package's database representation
|
||||||
type Package struct {
|
type Package struct {
|
||||||
@ -40,7 +40,9 @@ type Package struct {
|
|||||||
Version string `sh:"version,required" db:"version"`
|
Version string `sh:"version,required" db:"version"`
|
||||||
Release int `sh:"release,required" db:"release"`
|
Release int `sh:"release,required" db:"release"`
|
||||||
Epoch uint `sh:"epoch" db:"epoch"`
|
Epoch uint `sh:"epoch" db:"epoch"`
|
||||||
|
Summary JSON[map[string]string] `db:"summary"`
|
||||||
Description JSON[map[string]string] `db:"description"`
|
Description JSON[map[string]string] `db:"description"`
|
||||||
|
Group JSON[map[string]string] `db:"group_name"`
|
||||||
Homepage JSON[map[string]string] `db:"homepage"`
|
Homepage JSON[map[string]string] `db:"homepage"`
|
||||||
Maintainer JSON[map[string]string] `db:"maintainer"`
|
Maintainer JSON[map[string]string] `db:"maintainer"`
|
||||||
Architectures JSON[[]string] `sh:"architectures" db:"architectures"`
|
Architectures JSON[[]string] `sh:"architectures" db:"architectures"`
|
||||||
@ -106,7 +108,9 @@ func (d *Database) initDB(ctx context.Context) error {
|
|||||||
version TEXT NOT NULL,
|
version TEXT NOT NULL,
|
||||||
release INT NOT NULL,
|
release INT NOT NULL,
|
||||||
epoch INT,
|
epoch INT,
|
||||||
|
summary TEXT CHECK(summary = 'null' OR (JSON_VALID(summary) AND JSON_TYPE(summary) = 'object')),
|
||||||
description TEXT CHECK(description = 'null' OR (JSON_VALID(description) AND JSON_TYPE(description) = 'object')),
|
description TEXT CHECK(description = 'null' OR (JSON_VALID(description) AND JSON_TYPE(description) = 'object')),
|
||||||
|
group_name TEXT CHECK(group_name = 'null' OR (JSON_VALID(group_name) AND JSON_TYPE(group_name) = 'object')),
|
||||||
homepage TEXT CHECK(homepage = 'null' OR (JSON_VALID(homepage) AND JSON_TYPE(homepage) = 'object')),
|
homepage TEXT CHECK(homepage = 'null' OR (JSON_VALID(homepage) AND JSON_TYPE(homepage) = 'object')),
|
||||||
maintainer TEXT CHECK(maintainer = 'null' OR (JSON_VALID(maintainer) AND JSON_TYPE(maintainer) = 'object')),
|
maintainer TEXT CHECK(maintainer = 'null' OR (JSON_VALID(maintainer) AND JSON_TYPE(maintainer) = 'object')),
|
||||||
architectures TEXT CHECK(architectures = 'null' OR (JSON_VALID(architectures) AND JSON_TYPE(architectures) = 'array')),
|
architectures TEXT CHECK(architectures = 'null' OR (JSON_VALID(architectures) AND JSON_TYPE(architectures) = 'array')),
|
||||||
@ -204,7 +208,9 @@ func (d *Database) InsertPackage(ctx context.Context, pkg Package) error {
|
|||||||
version,
|
version,
|
||||||
release,
|
release,
|
||||||
epoch,
|
epoch,
|
||||||
|
summary,
|
||||||
description,
|
description,
|
||||||
|
group_name,
|
||||||
homepage,
|
homepage,
|
||||||
maintainer,
|
maintainer,
|
||||||
architectures,
|
architectures,
|
||||||
@ -222,7 +228,9 @@ func (d *Database) InsertPackage(ctx context.Context, pkg Package) error {
|
|||||||
:version,
|
:version,
|
||||||
:release,
|
:release,
|
||||||
:epoch,
|
:epoch,
|
||||||
|
:summary,
|
||||||
:description,
|
:description,
|
||||||
|
:group_name,
|
||||||
:homepage,
|
:homepage,
|
||||||
:maintainer,
|
:maintainer,
|
||||||
:architectures,
|
:architectures,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -104,7 +104,7 @@ func Resolve(info *distro.OSRelease, opts *Opts) ([]string, error) {
|
|||||||
out = append(out, opts.Name)
|
out = append(out, opts.Name)
|
||||||
|
|
||||||
for index, item := range out {
|
for index, item := range out {
|
||||||
out[index] = strings.TrimPrefix(strings.ReplaceAll(item, "-", "_"), "_")
|
out[index] = strings.TrimPrefix(item, "_")
|
||||||
}
|
}
|
||||||
|
|
||||||
return out, nil
|
return out, nil
|
||||||
@ -157,6 +157,8 @@ type ResolvedPackage struct {
|
|||||||
Version string `sh:"version"`
|
Version string `sh:"version"`
|
||||||
Release int `sh:"release"`
|
Release int `sh:"release"`
|
||||||
Epoch uint `sh:"epoch"`
|
Epoch uint `sh:"epoch"`
|
||||||
|
Group string `db:"group_name"`
|
||||||
|
Summary string `db:"summary"`
|
||||||
Description string `db:"description"`
|
Description string `db:"description"`
|
||||||
Homepage string `db:"homepage"`
|
Homepage string `db:"homepage"`
|
||||||
Maintainer string `db:"maintainer"`
|
Maintainer string `db:"maintainer"`
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -25,11 +25,11 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"runtime"
|
"runtime"
|
||||||
"slices"
|
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"gitea.plemya-x.ru/Plemya-x/fakeroot"
|
||||||
"mvdan.cc/sh/v3/expand"
|
"mvdan.cc/sh/v3/expand"
|
||||||
"mvdan.cc/sh/v3/interp"
|
"mvdan.cc/sh/v3/interp"
|
||||||
)
|
)
|
||||||
@ -54,7 +54,7 @@ func FakerootExecHandler(killTimeout time.Duration) interp.ExecHandlerFunc {
|
|||||||
Stderr: hc.Stderr,
|
Stderr: hc.Stderr,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = Apply(cmd)
|
err = fakeroot.Apply(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -108,52 +108,6 @@ func FakerootExecHandler(killTimeout time.Duration) interp.ExecHandlerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func rootMap(m syscall.SysProcIDMap) bool {
|
|
||||||
return m.ContainerID == 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func Apply(cmd *exec.Cmd) error {
|
|
||||||
uid := os.Getuid()
|
|
||||||
gid := os.Getgid()
|
|
||||||
|
|
||||||
// If the user is already root, there's no need for fakeroot
|
|
||||||
if uid == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure SysProcAttr isn't nil
|
|
||||||
if cmd.SysProcAttr == nil {
|
|
||||||
cmd.SysProcAttr = &syscall.SysProcAttr{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new user namespace
|
|
||||||
cmd.SysProcAttr.Cloneflags |= syscall.CLONE_NEWUSER
|
|
||||||
|
|
||||||
// If the command already contains a mapping for the root user, return an error
|
|
||||||
if slices.ContainsFunc(cmd.SysProcAttr.UidMappings, rootMap) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the command already contains a mapping for the root group, return an error
|
|
||||||
if slices.ContainsFunc(cmd.SysProcAttr.GidMappings, rootMap) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd.SysProcAttr.UidMappings = append(cmd.SysProcAttr.UidMappings, syscall.SysProcIDMap{
|
|
||||||
ContainerID: 0,
|
|
||||||
HostID: uid,
|
|
||||||
Size: 1,
|
|
||||||
})
|
|
||||||
|
|
||||||
cmd.SysProcAttr.GidMappings = append(cmd.SysProcAttr.GidMappings, syscall.SysProcIDMap{
|
|
||||||
ContainerID: 0,
|
|
||||||
HostID: gid,
|
|
||||||
Size: 1,
|
|
||||||
})
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// execEnv was extracted from github.com/mvdan/sh/interp/vars.go
|
// execEnv was extracted from github.com/mvdan/sh/interp/vars.go
|
||||||
func execEnv(env expand.Environ) []string {
|
func execEnv(env expand.Environ) []string {
|
||||||
list := make([]string, 0, 64)
|
list := make([]string, 0, 64)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -38,23 +38,23 @@ msgstr ""
|
|||||||
msgid "Cannot get absolute script path"
|
msgid "Cannot get absolute script path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:148
|
#: build.go:152
|
||||||
msgid "Package not found"
|
msgid "Package not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:161
|
#: build.go:165
|
||||||
msgid "Nothing to build"
|
msgid "Nothing to build"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:218
|
#: build.go:222
|
||||||
msgid "Error building package"
|
msgid "Error building package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:225
|
#: build.go:229
|
||||||
msgid "Error moving the package"
|
msgid "Error moving the package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: build.go:229
|
#: build.go:233
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -154,27 +154,27 @@ msgstr ""
|
|||||||
msgid "Install a new package"
|
msgid "Install a new package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:56
|
#: install.go:52
|
||||||
msgid "Command install expected at least 1 argument, got %d"
|
msgid "Command install expected at least 1 argument, got %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:118
|
#: install.go:114
|
||||||
msgid "Error parsing os release"
|
msgid "Error when installing the package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:163
|
#: install.go:159
|
||||||
msgid "Remove an installed package"
|
msgid "Remove an installed package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:182
|
#: install.go:178
|
||||||
msgid "Error listing installed packages"
|
msgid "Error listing installed packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:223
|
#: install.go:215
|
||||||
msgid "Command remove expected at least 1 argument, got %d"
|
msgid "Command remove expected at least 1 argument, got %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:238
|
#: install.go:230
|
||||||
msgid "Error removing packages"
|
msgid "Error removing packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -190,6 +190,10 @@ msgstr ""
|
|||||||
msgid "Error pulling repositories"
|
msgid "Error pulling repositories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: internal/cliutils/app_builder/builder.go:152
|
||||||
|
msgid "Error parsing os release"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: internal/cliutils/app_builder/builder.go:165
|
#: internal/cliutils/app_builder/builder.go:165
|
||||||
msgid "Unable to detect a supported package manager on the system"
|
msgid "Unable to detect a supported package manager on the system"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -274,11 +278,17 @@ msgstr ""
|
|||||||
msgid "OPTIONS"
|
msgid "OPTIONS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/db/db.go:133
|
#: internal/cliutils/utils.go:69
|
||||||
|
msgid ""
|
||||||
|
"This command is deprecated and would be removed in the future, use \"%s\" "
|
||||||
|
"instead!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: internal/db/db.go:137
|
||||||
msgid "Database version mismatch; resetting"
|
msgid "Database version mismatch; resetting"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/db/db.go:140
|
#: internal/db/db.go:144
|
||||||
msgid ""
|
msgid ""
|
||||||
"Database version does not exist. Run alr fix if something isn't working."
|
"Database version does not exist. Run alr fix if something isn't working."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -311,22 +321,42 @@ msgstr ""
|
|||||||
msgid "ERROR"
|
msgid "ERROR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/utils/cmd.go:95
|
#: internal/utils/cmd.go:97
|
||||||
msgid "Error dropping capabilities"
|
msgid "Error on dropping capabilities"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/utils/cmd.go:123
|
#: internal/utils/cmd.go:164
|
||||||
msgid "You need to be root to perform this action"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: internal/utils/cmd.go:165
|
|
||||||
msgid "You need to be a %s member to perform this action"
|
msgid "You need to be a %s member to perform this action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: list.go:41
|
#: internal/utils/cmd.go:200
|
||||||
|
msgid "You need to be root to perform this action"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: list.go:43
|
||||||
msgid "List ALR repo packages"
|
msgid "List ALR repo packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: list.go:57
|
||||||
|
msgid "Format output using a Go template"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: list.go:89
|
||||||
|
msgid "Error getting packages for upgrade"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: list.go:92
|
||||||
|
msgid "No packages for upgrade"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: list.go:102 list.go:187
|
||||||
|
msgid "Error parsing format template"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: list.go:108 list.go:191
|
||||||
|
msgid "Error executing template"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.go:45
|
#: main.go:45
|
||||||
msgid "Print the current ALR version and exit"
|
msgid "Print the current ALR version and exit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -339,27 +369,27 @@ msgstr ""
|
|||||||
msgid "Enable interactive questions and prompts"
|
msgid "Enable interactive questions and prompts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.go:145
|
#: main.go:146
|
||||||
msgid "Show help"
|
msgid "Show help"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: main.go:149
|
#: main.go:150
|
||||||
msgid "Error while running app"
|
msgid "Error while running app"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/build/build.go:394
|
#: pkg/build/build.go:395
|
||||||
msgid "Building package"
|
msgid "Building package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/build/build.go:423
|
#: pkg/build/build.go:424
|
||||||
msgid "The checksums array must be the same length as sources"
|
msgid "The checksums array must be the same length as sources"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/build/build.go:454
|
#: pkg/build/build.go:455
|
||||||
msgid "Downloading sources"
|
msgid "Downloading sources"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/build/build.go:543
|
#: pkg/build/build.go:549
|
||||||
msgid "Installing dependencies"
|
msgid "Installing dependencies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -393,128 +423,136 @@ msgstr ""
|
|||||||
msgid "AutoReq is not implemented for this package format, so it's skipped"
|
msgid "AutoReq is not implemented for this package format, so it's skipped"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/build/script_executor.go:237
|
#: pkg/build/script_executor.go:241
|
||||||
msgid "Building package metadata"
|
msgid "Building package metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/build/script_executor.go:356
|
#: pkg/build/script_executor.go:372
|
||||||
msgid "Executing prepare()"
|
msgid "Executing prepare()"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/build/script_executor.go:365
|
#: pkg/build/script_executor.go:381
|
||||||
msgid "Executing build()"
|
msgid "Executing build()"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/build/script_executor.go:394 pkg/build/script_executor.go:414
|
#: pkg/build/script_executor.go:410 pkg/build/script_executor.go:430
|
||||||
msgid "Executing %s()"
|
msgid "Executing %s()"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/repos/pull.go:79
|
#: pkg/repos/pull.go:77
|
||||||
msgid "Pulling repository"
|
msgid "Pulling repository"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/repos/pull.go:103
|
#: pkg/repos/pull.go:113
|
||||||
msgid "Repository up to date"
|
msgid "Repository up to date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/repos/pull.go:160
|
#: pkg/repos/pull.go:204
|
||||||
msgid "Git repository does not appear to be a valid ALR repo"
|
msgid "Git repository does not appear to be a valid ALR repo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: pkg/repos/pull.go:176
|
#: pkg/repos/pull.go:220
|
||||||
msgid ""
|
msgid ""
|
||||||
"ALR repo's minimum ALR version is greater than the current version. Try "
|
"ALR repo's minimum ALR version is greater than the current version. Try "
|
||||||
"updating ALR if something doesn't work."
|
"updating ALR if something doesn't work."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: repo.go:39
|
#: refresh.go:30
|
||||||
msgid "Add a new repository"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:46
|
|
||||||
msgid "Name of the new repo"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:52
|
|
||||||
msgid "URL of the new repo"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:79
|
|
||||||
msgid "Repo %s already exists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:90 repo.go:167
|
|
||||||
msgid "Error saving config"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:116
|
|
||||||
msgid "Remove an existing repository"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:123
|
|
||||||
msgid "Name of the repo to be deleted"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:156
|
|
||||||
msgid "Repo \"%s\" does not exist"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:163
|
|
||||||
msgid "Error removing repo directory"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:186
|
|
||||||
msgid "Error removing packages from database"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: repo.go:197
|
|
||||||
msgid "Pull all repositories that have changed"
|
msgid "Pull all repositories that have changed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: search.go:36
|
#: repo.go:39
|
||||||
|
msgid "Manage repos"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:51 repo.go:269
|
||||||
|
msgid "Remove an existing repository"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:53
|
||||||
|
msgid "<name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:83
|
||||||
|
msgid "Repo \"%s\" does not exist"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:90
|
||||||
|
msgid "Error removing repo directory"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:94 repo.go:161 repo.go:219
|
||||||
|
msgid "Error saving config"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:113
|
||||||
|
msgid "Error removing packages from database"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:124 repo.go:239
|
||||||
|
msgid "Add a new repository"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:125
|
||||||
|
msgid "<name> <url>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:150
|
||||||
|
msgid "Repo \"%s\" already exists"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:187
|
||||||
|
msgid "Set the reference of the repository"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:188
|
||||||
|
msgid "<name> <ref>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:246
|
||||||
|
msgid "Name of the new repo"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:252
|
||||||
|
msgid "URL of the new repo"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: repo.go:276
|
||||||
|
msgid "Name of the repo to be deleted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: search.go:40
|
||||||
msgid "Search packages"
|
msgid "Search packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: search.go:42
|
#: search.go:51
|
||||||
msgid "Search by name"
|
msgid "Search by name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: search.go:47
|
#: search.go:56
|
||||||
msgid "Search by description"
|
msgid "Search by description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: search.go:52
|
#: search.go:61
|
||||||
msgid "Search by repository"
|
msgid "Search by repository"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: search.go:57
|
#: search.go:66
|
||||||
msgid "Search by provides"
|
msgid "Search by provides"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: search.go:62
|
#: search.go:130
|
||||||
msgid "Format output using a Go template"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: search.go:96
|
|
||||||
msgid "Error while executing search"
|
msgid "Error while executing search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: search.go:104
|
|
||||||
msgid "Error parsing format template"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: search.go:112
|
|
||||||
msgid "Error executing template"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: upgrade.go:47
|
#: upgrade.go:47
|
||||||
msgid "Upgrade all installed packages"
|
msgid "Upgrade all installed packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: upgrade.go:109 upgrade.go:126
|
#: upgrade.go:105 upgrade.go:122
|
||||||
msgid "Error checking for updates"
|
msgid "Error checking for updates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: upgrade.go:129
|
#: upgrade.go:125
|
||||||
msgid "There is nothing to do."
|
msgid "There is nothing to do."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -5,16 +5,16 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: unnamed project\n"
|
"Project-Id-Version: unnamed project\n"
|
||||||
"PO-Revision-Date: 2025-03-09 17:31+0300\n"
|
"PO-Revision-Date: 2025-05-16 20:47+0300\n"
|
||||||
"Last-Translator: Maxim Slipenko <maks1ms@alt-gnome.ru>\n"
|
"Last-Translator: Maxim Slipenko <maks1ms@alt-gnome.ru>\n"
|
||||||
"Language-Team: Russian\n"
|
"Language-Team: Russian\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
"X-Generator: Gtranslator 47.1\n"
|
"X-Generator: Gtranslator 48.0\n"
|
||||||
|
|
||||||
#: build.go:42
|
#: build.go:42
|
||||||
msgid "Build a local package"
|
msgid "Build a local package"
|
||||||
@ -43,26 +43,25 @@ msgstr "Ошибка при получении рабочего каталога
|
|||||||
|
|
||||||
#: build.go:118
|
#: build.go:118
|
||||||
msgid "Cannot get absolute script path"
|
msgid "Cannot get absolute script path"
|
||||||
msgstr ""
|
msgstr "Невозможно получить абсолютный путь к скрипту"
|
||||||
|
|
||||||
#: build.go:148
|
#: build.go:152
|
||||||
msgid "Package not found"
|
msgid "Package not found"
|
||||||
msgstr "Пакет не найден"
|
msgstr "Пакет не найден"
|
||||||
|
|
||||||
#: build.go:161
|
#: build.go:165
|
||||||
#, fuzzy
|
|
||||||
msgid "Nothing to build"
|
msgid "Nothing to build"
|
||||||
msgstr "Исполнение build()"
|
msgstr "Нечего собирать"
|
||||||
|
|
||||||
#: build.go:218
|
#: build.go:222
|
||||||
msgid "Error building package"
|
msgid "Error building package"
|
||||||
msgstr "Ошибка при сборке пакета"
|
msgstr "Ошибка при сборке пакета"
|
||||||
|
|
||||||
#: build.go:225
|
#: build.go:229
|
||||||
msgid "Error moving the package"
|
msgid "Error moving the package"
|
||||||
msgstr "Ошибка при перемещении пакета"
|
msgstr "Ошибка при перемещении пакета"
|
||||||
|
|
||||||
#: build.go:229
|
#: build.go:233
|
||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Сделано"
|
msgstr "Сделано"
|
||||||
|
|
||||||
@ -71,24 +70,20 @@ msgid "Attempt to fix problems with ALR"
|
|||||||
msgstr "Попытка устранить проблемы с ALR"
|
msgstr "Попытка устранить проблемы с ALR"
|
||||||
|
|
||||||
#: fix.go:59
|
#: fix.go:59
|
||||||
#, fuzzy
|
|
||||||
msgid "Clearing cache directory"
|
msgid "Clearing cache directory"
|
||||||
msgstr "Удаление каталога кэша"
|
msgstr "Очистка каталога кэша"
|
||||||
|
|
||||||
#: fix.go:64
|
#: fix.go:64
|
||||||
#, fuzzy
|
|
||||||
msgid "Unable to open cache directory"
|
msgid "Unable to open cache directory"
|
||||||
msgstr "Не удалось удалить каталог кэша"
|
msgstr "Невозможно открыть каталог кэша"
|
||||||
|
|
||||||
#: fix.go:70
|
#: fix.go:70
|
||||||
#, fuzzy
|
|
||||||
msgid "Unable to read cache directory contents"
|
msgid "Unable to read cache directory contents"
|
||||||
msgstr "Не удалось удалить каталог кэша"
|
msgstr "Невозможно прочитать содержимое каталога кэша"
|
||||||
|
|
||||||
#: fix.go:76
|
#: fix.go:76
|
||||||
#, fuzzy
|
|
||||||
msgid "Unable to remove cache item (%s)"
|
msgid "Unable to remove cache item (%s)"
|
||||||
msgstr "Не удалось удалить каталог кэша"
|
msgstr "Невозможно удалить элемент кэша (%s)"
|
||||||
|
|
||||||
#: fix.go:80
|
#: fix.go:80
|
||||||
msgid "Rebuilding cache"
|
msgid "Rebuilding cache"
|
||||||
@ -151,9 +146,8 @@ msgid "Error finding packages"
|
|||||||
msgstr "Ошибка при поиске пакетов"
|
msgstr "Ошибка при поиске пакетов"
|
||||||
|
|
||||||
#: info.go:124
|
#: info.go:124
|
||||||
#, fuzzy
|
|
||||||
msgid "Can't detect system language"
|
msgid "Can't detect system language"
|
||||||
msgstr "Ошибка при парсинге языка системы"
|
msgstr "Ошибка при определении языка системы"
|
||||||
|
|
||||||
#: info.go:141
|
#: info.go:141
|
||||||
msgid "Error resolving overrides"
|
msgid "Error resolving overrides"
|
||||||
@ -167,34 +161,33 @@ msgstr "Ошибка кодирования переменных скрита"
|
|||||||
msgid "Install a new package"
|
msgid "Install a new package"
|
||||||
msgstr "Установить новый пакет"
|
msgstr "Установить новый пакет"
|
||||||
|
|
||||||
#: install.go:56
|
#: install.go:52
|
||||||
msgid "Command install expected at least 1 argument, got %d"
|
msgid "Command install expected at least 1 argument, got %d"
|
||||||
msgstr "Для команды install ожидался хотя бы 1 аргумент, получено %d"
|
msgstr "Для команды install ожидался хотя бы 1 аргумент, получено %d"
|
||||||
|
|
||||||
#: install.go:118
|
#: install.go:114
|
||||||
msgid "Error parsing os release"
|
msgid "Error when installing the package"
|
||||||
msgstr "Ошибка при разборе файла выпуска операционной системы"
|
msgstr "Ошибка при установке пакета"
|
||||||
|
|
||||||
#: install.go:163
|
#: install.go:159
|
||||||
msgid "Remove an installed package"
|
msgid "Remove an installed package"
|
||||||
msgstr "Удалить установленный пакет"
|
msgstr "Удалить установленный пакет"
|
||||||
|
|
||||||
#: install.go:182
|
#: install.go:178
|
||||||
msgid "Error listing installed packages"
|
msgid "Error listing installed packages"
|
||||||
msgstr "Ошибка при составлении списка установленных пакетов"
|
msgstr "Ошибка при составлении списка установленных пакетов"
|
||||||
|
|
||||||
#: install.go:223
|
#: install.go:215
|
||||||
msgid "Command remove expected at least 1 argument, got %d"
|
msgid "Command remove expected at least 1 argument, got %d"
|
||||||
msgstr "Для команды remove ожидался хотя бы 1 аргумент, получено %d"
|
msgstr "Для команды remove ожидался хотя бы 1 аргумент, получено %d"
|
||||||
|
|
||||||
#: install.go:238
|
#: install.go:230
|
||||||
msgid "Error removing packages"
|
msgid "Error removing packages"
|
||||||
msgstr "Ошибка при удалении пакетов"
|
msgstr "Ошибка при удалении пакетов"
|
||||||
|
|
||||||
#: internal/cliutils/app_builder/builder.go:75
|
#: internal/cliutils/app_builder/builder.go:75
|
||||||
#, fuzzy
|
|
||||||
msgid "Error loading config"
|
msgid "Error loading config"
|
||||||
msgstr "Ошибка при кодировании конфигурации"
|
msgstr "Ошибка при загрузке"
|
||||||
|
|
||||||
#: internal/cliutils/app_builder/builder.go:96
|
#: internal/cliutils/app_builder/builder.go:96
|
||||||
msgid "Error initialization database"
|
msgid "Error initialization database"
|
||||||
@ -204,6 +197,10 @@ msgstr "Ошибка инициализации базы данных"
|
|||||||
msgid "Error pulling repositories"
|
msgid "Error pulling repositories"
|
||||||
msgstr "Ошибка при извлечении репозиториев"
|
msgstr "Ошибка при извлечении репозиториев"
|
||||||
|
|
||||||
|
#: internal/cliutils/app_builder/builder.go:152
|
||||||
|
msgid "Error parsing os release"
|
||||||
|
msgstr "Ошибка при разборе файла выпуска операционной системы"
|
||||||
|
|
||||||
#: internal/cliutils/app_builder/builder.go:165
|
#: internal/cliutils/app_builder/builder.go:165
|
||||||
msgid "Unable to detect a supported package manager on the system"
|
msgid "Unable to detect a supported package manager on the system"
|
||||||
msgstr "Не удалось обнаружить поддерживаемый менеджер пакетов в системе"
|
msgstr "Не удалось обнаружить поддерживаемый менеджер пакетов в системе"
|
||||||
@ -288,11 +285,19 @@ msgstr "КАТЕГОРИЯ"
|
|||||||
msgid "OPTIONS"
|
msgid "OPTIONS"
|
||||||
msgstr "ПАРАМЕТРЫ"
|
msgstr "ПАРАМЕТРЫ"
|
||||||
|
|
||||||
#: internal/db/db.go:133
|
#: internal/cliutils/utils.go:69
|
||||||
|
msgid ""
|
||||||
|
"This command is deprecated and would be removed in the future, use \"%s\" "
|
||||||
|
"instead!"
|
||||||
|
msgstr ""
|
||||||
|
"Эта команда устарела и будет удалена в будущем, используйте вместо нее "
|
||||||
|
"\"%s\"!"
|
||||||
|
|
||||||
|
#: internal/db/db.go:137
|
||||||
msgid "Database version mismatch; resetting"
|
msgid "Database version mismatch; resetting"
|
||||||
msgstr "Несоответствие версий базы данных; сброс настроек"
|
msgstr "Несоответствие версий базы данных; сброс настроек"
|
||||||
|
|
||||||
#: internal/db/db.go:140
|
#: internal/db/db.go:144
|
||||||
msgid ""
|
msgid ""
|
||||||
"Database version does not exist. Run alr fix if something isn't working."
|
"Database version does not exist. Run alr fix if something isn't working."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -326,23 +331,42 @@ msgstr "%s %s загружается — %s/с\n"
|
|||||||
msgid "ERROR"
|
msgid "ERROR"
|
||||||
msgstr "ОШИБКА"
|
msgstr "ОШИБКА"
|
||||||
|
|
||||||
#: internal/utils/cmd.go:95
|
#: internal/utils/cmd.go:97
|
||||||
#, fuzzy
|
msgid "Error on dropping capabilities"
|
||||||
msgid "Error dropping capabilities"
|
msgstr "Ошибка при понижении привилегий"
|
||||||
msgstr "Ошибка при открытии базы данных"
|
|
||||||
|
|
||||||
#: internal/utils/cmd.go:123
|
#: internal/utils/cmd.go:164
|
||||||
msgid "You need to be root to perform this action"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: internal/utils/cmd.go:165
|
|
||||||
msgid "You need to be a %s member to perform this action"
|
msgid "You need to be a %s member to perform this action"
|
||||||
msgstr ""
|
msgstr "Вы должны быть членом %s чтобы выполнить это"
|
||||||
|
|
||||||
#: list.go:41
|
#: internal/utils/cmd.go:200
|
||||||
|
msgid "You need to be root to perform this action"
|
||||||
|
msgstr "Вы должны быть root чтобы выполнить это"
|
||||||
|
|
||||||
|
#: list.go:43
|
||||||
msgid "List ALR repo packages"
|
msgid "List ALR repo packages"
|
||||||
msgstr "Список пакетов репозитория ALR"
|
msgstr "Список пакетов репозитория ALR"
|
||||||
|
|
||||||
|
#: list.go:57
|
||||||
|
msgid "Format output using a Go template"
|
||||||
|
msgstr "Формат выходных данных с использованием шаблона Go"
|
||||||
|
|
||||||
|
#: list.go:89
|
||||||
|
msgid "Error getting packages for upgrade"
|
||||||
|
msgstr "Ошибка при получении пакетов для обновления"
|
||||||
|
|
||||||
|
#: list.go:92
|
||||||
|
msgid "No packages for upgrade"
|
||||||
|
msgstr "Нет пакетов к обновлению"
|
||||||
|
|
||||||
|
#: list.go:102 list.go:187
|
||||||
|
msgid "Error parsing format template"
|
||||||
|
msgstr "Ошибка при разборе шаблона"
|
||||||
|
|
||||||
|
#: list.go:108 list.go:191
|
||||||
|
msgid "Error executing template"
|
||||||
|
msgstr "Ошибка при выполнении шаблона"
|
||||||
|
|
||||||
#: main.go:45
|
#: main.go:45
|
||||||
msgid "Print the current ALR version and exit"
|
msgid "Print the current ALR version and exit"
|
||||||
msgstr "Показать текущую версию ALR и выйти"
|
msgstr "Показать текущую версию ALR и выйти"
|
||||||
@ -355,27 +379,27 @@ msgstr "Аргументы, которые будут переданы мене
|
|||||||
msgid "Enable interactive questions and prompts"
|
msgid "Enable interactive questions and prompts"
|
||||||
msgstr "Включение интерактивных вопросов и запросов"
|
msgstr "Включение интерактивных вопросов и запросов"
|
||||||
|
|
||||||
#: main.go:145
|
#: main.go:146
|
||||||
msgid "Show help"
|
msgid "Show help"
|
||||||
msgstr "Показать справку"
|
msgstr "Показать справку"
|
||||||
|
|
||||||
#: main.go:149
|
#: main.go:150
|
||||||
msgid "Error while running app"
|
msgid "Error while running app"
|
||||||
msgstr "Ошибка при запуске приложения"
|
msgstr "Ошибка при запуске приложения"
|
||||||
|
|
||||||
#: pkg/build/build.go:394
|
#: pkg/build/build.go:395
|
||||||
msgid "Building package"
|
msgid "Building package"
|
||||||
msgstr "Сборка пакета"
|
msgstr "Сборка пакета"
|
||||||
|
|
||||||
#: pkg/build/build.go:423
|
#: pkg/build/build.go:424
|
||||||
msgid "The checksums array must be the same length as sources"
|
msgid "The checksums array must be the same length as sources"
|
||||||
msgstr "Массив контрольных сумм должен быть той же длины, что и источники"
|
msgstr "Массив контрольных сумм должен быть той же длины, что и источники"
|
||||||
|
|
||||||
#: pkg/build/build.go:454
|
#: pkg/build/build.go:455
|
||||||
msgid "Downloading sources"
|
msgid "Downloading sources"
|
||||||
msgstr "Скачивание источников"
|
msgstr "Скачивание источников"
|
||||||
|
|
||||||
#: pkg/build/build.go:543
|
#: pkg/build/build.go:549
|
||||||
msgid "Installing dependencies"
|
msgid "Installing dependencies"
|
||||||
msgstr "Установка зависимостей"
|
msgstr "Установка зависимостей"
|
||||||
|
|
||||||
@ -413,35 +437,35 @@ msgid "AutoReq is not implemented for this package format, so it's skipped"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"AutoReq не реализовано для этого формата пакета, поэтому будет пропущено"
|
"AutoReq не реализовано для этого формата пакета, поэтому будет пропущено"
|
||||||
|
|
||||||
#: pkg/build/script_executor.go:237
|
#: pkg/build/script_executor.go:241
|
||||||
msgid "Building package metadata"
|
msgid "Building package metadata"
|
||||||
msgstr "Сборка метаданных пакета"
|
msgstr "Сборка метаданных пакета"
|
||||||
|
|
||||||
#: pkg/build/script_executor.go:356
|
#: pkg/build/script_executor.go:372
|
||||||
msgid "Executing prepare()"
|
msgid "Executing prepare()"
|
||||||
msgstr "Исполнение prepare()"
|
msgstr "Выполнение prepare()"
|
||||||
|
|
||||||
#: pkg/build/script_executor.go:365
|
#: pkg/build/script_executor.go:381
|
||||||
msgid "Executing build()"
|
msgid "Executing build()"
|
||||||
msgstr "Исполнение build()"
|
msgstr "Выполнение build()"
|
||||||
|
|
||||||
#: pkg/build/script_executor.go:394 pkg/build/script_executor.go:414
|
#: pkg/build/script_executor.go:410 pkg/build/script_executor.go:430
|
||||||
msgid "Executing %s()"
|
msgid "Executing %s()"
|
||||||
msgstr "Исполнение %s()"
|
msgstr "Выполнение %s()"
|
||||||
|
|
||||||
#: pkg/repos/pull.go:79
|
#: pkg/repos/pull.go:77
|
||||||
msgid "Pulling repository"
|
msgid "Pulling repository"
|
||||||
msgstr "Скачивание репозитория"
|
msgstr "Скачивание репозитория"
|
||||||
|
|
||||||
#: pkg/repos/pull.go:103
|
#: pkg/repos/pull.go:113
|
||||||
msgid "Repository up to date"
|
msgid "Repository up to date"
|
||||||
msgstr "Репозиторий уже обновлён"
|
msgstr "Репозиторий уже обновлён"
|
||||||
|
|
||||||
#: pkg/repos/pull.go:160
|
#: pkg/repos/pull.go:204
|
||||||
msgid "Git repository does not appear to be a valid ALR repo"
|
msgid "Git repository does not appear to be a valid ALR repo"
|
||||||
msgstr "Репозиторий Git не поддерживается репозиторием ALR"
|
msgstr "Репозиторий Git не поддерживается репозиторием ALR"
|
||||||
|
|
||||||
#: pkg/repos/pull.go:176
|
#: pkg/repos/pull.go:220
|
||||||
msgid ""
|
msgid ""
|
||||||
"ALR repo's minimum ALR version is greater than the current version. Try "
|
"ALR repo's minimum ALR version is greater than the current version. Try "
|
||||||
"updating ALR if something doesn't work."
|
"updating ALR if something doesn't work."
|
||||||
@ -449,99 +473,103 @@ msgstr ""
|
|||||||
"Минимальная версия ALR для ALR-репозитория выше текущей версии. Попробуйте "
|
"Минимальная версия ALR для ALR-репозитория выше текущей версии. Попробуйте "
|
||||||
"обновить ALR, если что-то не работает."
|
"обновить ALR, если что-то не работает."
|
||||||
|
|
||||||
#: repo.go:39
|
#: refresh.go:30
|
||||||
msgid "Add a new repository"
|
|
||||||
msgstr "Добавить новый репозиторий"
|
|
||||||
|
|
||||||
#: repo.go:46
|
|
||||||
msgid "Name of the new repo"
|
|
||||||
msgstr "Название нового репозитория"
|
|
||||||
|
|
||||||
#: repo.go:52
|
|
||||||
msgid "URL of the new repo"
|
|
||||||
msgstr "URL-адрес нового репозитория"
|
|
||||||
|
|
||||||
#: repo.go:79
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Repo %s already exists"
|
|
||||||
msgstr "Репозитория не существует"
|
|
||||||
|
|
||||||
#: repo.go:90 repo.go:167
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Error saving config"
|
|
||||||
msgstr "Ошибка при кодировании конфигурации"
|
|
||||||
|
|
||||||
#: repo.go:116
|
|
||||||
msgid "Remove an existing repository"
|
|
||||||
msgstr "Удалить существующий репозиторий"
|
|
||||||
|
|
||||||
#: repo.go:123
|
|
||||||
msgid "Name of the repo to be deleted"
|
|
||||||
msgstr "Название репозитория удалён"
|
|
||||||
|
|
||||||
#: repo.go:156
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Repo \"%s\" does not exist"
|
|
||||||
msgstr "Репозитория не существует"
|
|
||||||
|
|
||||||
#: repo.go:163
|
|
||||||
msgid "Error removing repo directory"
|
|
||||||
msgstr "Ошибка при удалении каталога репозитория"
|
|
||||||
|
|
||||||
#: repo.go:186
|
|
||||||
msgid "Error removing packages from database"
|
|
||||||
msgstr "Ошибка при удалении пакетов из базы данных"
|
|
||||||
|
|
||||||
#: repo.go:197
|
|
||||||
msgid "Pull all repositories that have changed"
|
msgid "Pull all repositories that have changed"
|
||||||
msgstr "Скачать все изменённые репозитории"
|
msgstr "Скачать все изменённые репозитории"
|
||||||
|
|
||||||
#: search.go:36
|
#: repo.go:39
|
||||||
|
msgid "Manage repos"
|
||||||
|
msgstr "Управление репозиториями"
|
||||||
|
|
||||||
|
#: repo.go:51 repo.go:269
|
||||||
|
msgid "Remove an existing repository"
|
||||||
|
msgstr "Удалить существующий репозиторий"
|
||||||
|
|
||||||
|
#: repo.go:53
|
||||||
|
msgid "<name>"
|
||||||
|
msgstr "<имя>"
|
||||||
|
|
||||||
|
#: repo.go:83
|
||||||
|
msgid "Repo \"%s\" does not exist"
|
||||||
|
msgstr "Репозитория \"%s\" не существует"
|
||||||
|
|
||||||
|
#: repo.go:90
|
||||||
|
msgid "Error removing repo directory"
|
||||||
|
msgstr "Ошибка при удалении каталога репозитория"
|
||||||
|
|
||||||
|
#: repo.go:94 repo.go:161 repo.go:219
|
||||||
|
msgid "Error saving config"
|
||||||
|
msgstr "Ошибка при сохранении конфигурации"
|
||||||
|
|
||||||
|
#: repo.go:113
|
||||||
|
msgid "Error removing packages from database"
|
||||||
|
msgstr "Ошибка при удалении пакетов из базы данных"
|
||||||
|
|
||||||
|
#: repo.go:124 repo.go:239
|
||||||
|
msgid "Add a new repository"
|
||||||
|
msgstr "Добавить новый репозиторий"
|
||||||
|
|
||||||
|
#: repo.go:125
|
||||||
|
msgid "<name> <url>"
|
||||||
|
msgstr "<имя> <url>"
|
||||||
|
|
||||||
|
#: repo.go:150
|
||||||
|
msgid "Repo \"%s\" already exists"
|
||||||
|
msgstr "Репозиторий \"%s\" уже существует"
|
||||||
|
|
||||||
|
#: repo.go:187
|
||||||
|
msgid "Set the reference of the repository"
|
||||||
|
msgstr "Установить ссылку на версию репозитория"
|
||||||
|
|
||||||
|
#: repo.go:188
|
||||||
|
msgid "<name> <ref>"
|
||||||
|
msgstr "<имя> <ссылка_на_версию>"
|
||||||
|
|
||||||
|
#: repo.go:246
|
||||||
|
msgid "Name of the new repo"
|
||||||
|
msgstr "Название нового репозитория"
|
||||||
|
|
||||||
|
#: repo.go:252
|
||||||
|
msgid "URL of the new repo"
|
||||||
|
msgstr "URL-адрес нового репозитория"
|
||||||
|
|
||||||
|
#: repo.go:276
|
||||||
|
msgid "Name of the repo to be deleted"
|
||||||
|
msgstr "Название репозитория удалён"
|
||||||
|
|
||||||
|
#: search.go:40
|
||||||
msgid "Search packages"
|
msgid "Search packages"
|
||||||
msgstr "Поиск пакетов"
|
msgstr "Поиск пакетов"
|
||||||
|
|
||||||
#: search.go:42
|
#: search.go:51
|
||||||
msgid "Search by name"
|
msgid "Search by name"
|
||||||
msgstr "Искать по имени"
|
msgstr "Искать по имени"
|
||||||
|
|
||||||
#: search.go:47
|
#: search.go:56
|
||||||
msgid "Search by description"
|
msgid "Search by description"
|
||||||
msgstr "Искать по описанию"
|
msgstr "Искать по описанию"
|
||||||
|
|
||||||
#: search.go:52
|
#: search.go:61
|
||||||
msgid "Search by repository"
|
msgid "Search by repository"
|
||||||
msgstr "Искать по репозиторию"
|
msgstr "Искать по репозиторию"
|
||||||
|
|
||||||
#: search.go:57
|
#: search.go:66
|
||||||
msgid "Search by provides"
|
msgid "Search by provides"
|
||||||
msgstr "Иcкать по provides"
|
msgstr "Иcкать по provides"
|
||||||
|
|
||||||
#: search.go:62
|
#: search.go:130
|
||||||
msgid "Format output using a Go template"
|
|
||||||
msgstr "Формат выходных данных с использованием шаблона Go"
|
|
||||||
|
|
||||||
#: search.go:96
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Error while executing search"
|
msgid "Error while executing search"
|
||||||
msgstr "Ошибка при запуске приложения"
|
msgstr "Ошибка при выполнении поиска"
|
||||||
|
|
||||||
#: search.go:104
|
|
||||||
msgid "Error parsing format template"
|
|
||||||
msgstr "Ошибка при разборе шаблона"
|
|
||||||
|
|
||||||
#: search.go:112
|
|
||||||
msgid "Error executing template"
|
|
||||||
msgstr "Ошибка при выполнении шаблона"
|
|
||||||
|
|
||||||
#: upgrade.go:47
|
#: upgrade.go:47
|
||||||
msgid "Upgrade all installed packages"
|
msgid "Upgrade all installed packages"
|
||||||
msgstr "Обновить все установленные пакеты"
|
msgstr "Обновить все установленные пакеты"
|
||||||
|
|
||||||
#: upgrade.go:109 upgrade.go:126
|
#: upgrade.go:105 upgrade.go:122
|
||||||
msgid "Error checking for updates"
|
msgid "Error checking for updates"
|
||||||
msgstr "Ошибка при проверке обновлений"
|
msgstr "Ошибка при проверке обновлений"
|
||||||
|
|
||||||
#: upgrade.go:129
|
#: upgrade.go:125
|
||||||
msgid "There is nothing to do."
|
msgid "There is nothing to do."
|
||||||
msgstr "Здесь нечего делать."
|
msgstr "Здесь нечего делать."
|
||||||
|
|
||||||
@ -588,9 +616,6 @@ msgstr "Здесь нечего делать."
|
|||||||
#~ msgid "Error installing native packages"
|
#~ msgid "Error installing native packages"
|
||||||
#~ msgstr "Ошибка при установке нативных пакетов"
|
#~ msgstr "Ошибка при установке нативных пакетов"
|
||||||
|
|
||||||
#~ msgid "Error installing package"
|
|
||||||
#~ msgstr "Ошибка при установке пакета"
|
|
||||||
|
|
||||||
#~ msgid "Error opening config file, using defaults"
|
#~ msgid "Error opening config file, using defaults"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Ошибка при открытии конфигурационного файла, используются значения по "
|
#~ "Ошибка при открытии конфигурационного файла, используются значения по "
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -20,10 +20,6 @@
|
|||||||
package types
|
package types
|
||||||
|
|
||||||
type BuildOpts struct {
|
type BuildOpts struct {
|
||||||
// Script string
|
|
||||||
// Repository string
|
|
||||||
// Packages []string
|
|
||||||
// Manager manager.Manager
|
|
||||||
Clean bool
|
Clean bool
|
||||||
Interactive bool
|
Interactive bool
|
||||||
}
|
}
|
||||||
@ -32,7 +28,9 @@ type BuildVarsPre struct {
|
|||||||
Version string `sh:"version,required"`
|
Version string `sh:"version,required"`
|
||||||
Release int `sh:"release,required"`
|
Release int `sh:"release,required"`
|
||||||
Epoch uint `sh:"epoch"`
|
Epoch uint `sh:"epoch"`
|
||||||
|
Summary string `sh:"summary"`
|
||||||
Description string `sh:"desc"`
|
Description string `sh:"desc"`
|
||||||
|
Group string `sh:"group"`
|
||||||
Homepage string `sh:"homepage"`
|
Homepage string `sh:"homepage"`
|
||||||
Maintainer string `sh:"maintainer"`
|
Maintainer string `sh:"maintainer"`
|
||||||
Architectures []string `sh:"architectures"`
|
Architectures []string `sh:"architectures"`
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -22,6 +22,7 @@ package types
|
|||||||
// Config represents the ALR configuration file
|
// Config represents the ALR configuration file
|
||||||
type Config struct {
|
type Config struct {
|
||||||
RootCmd string `toml:"rootCmd" env:"ALR_ROOT_CMD"`
|
RootCmd string `toml:"rootCmd" env:"ALR_ROOT_CMD"`
|
||||||
|
UseRootCmd bool `toml:"useRootCmd"`
|
||||||
PagerStyle string `toml:"pagerStyle" env:"ALR_PAGER_STYLE"`
|
PagerStyle string `toml:"pagerStyle" env:"ALR_PAGER_STYLE"`
|
||||||
IgnorePkgUpdates []string `toml:"ignorePkgUpdates"`
|
IgnorePkgUpdates []string `toml:"ignorePkgUpdates"`
|
||||||
Repos []Repo `toml:"repo"`
|
Repos []Repo `toml:"repo"`
|
||||||
@ -33,4 +34,5 @@ type Config struct {
|
|||||||
type Repo struct {
|
type Repo struct {
|
||||||
Name string `toml:"name"`
|
Name string `toml:"name"`
|
||||||
URL string `toml:"url"`
|
URL string `toml:"url"`
|
||||||
|
Ref string `toml:"ref"`
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -19,6 +19,7 @@ package utils
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"os/user"
|
"os/user"
|
||||||
"strconv"
|
"strconv"
|
||||||
"syscall"
|
"syscall"
|
||||||
@ -27,6 +28,7 @@ import (
|
|||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
|
||||||
|
appbuilder "gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils/app_builder"
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/constants"
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/constants"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -92,14 +94,14 @@ func ExitIfCantDropGidToAlr() cli.ExitCoder {
|
|||||||
func ExitIfCantDropCapsToAlrUser() cli.ExitCoder {
|
func ExitIfCantDropCapsToAlrUser() cli.ExitCoder {
|
||||||
err := DropCapsToAlrUser()
|
err := DropCapsToAlrUser()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cliutils.FormatCliExit(gotext.Get("Error dropping capabilities"), err)
|
return cliutils.FormatCliExit(gotext.Get("Error on dropping capabilities"), err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ExitIfCantSetNoNewPrivs() cli.ExitCoder {
|
func ExitIfCantSetNoNewPrivs() cli.ExitCoder {
|
||||||
if err := NoNewPrivs(); err != nil {
|
if err := NoNewPrivs(); err != nil {
|
||||||
return cliutils.FormatCliExit("error no new privs", err)
|
return cliutils.FormatCliExit("error on NoNewPrivs", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -118,11 +120,8 @@ func ExitIfCantDropCapsToAlrUserNoPrivs() cli.ExitCoder {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ExitIfNotRoot() error {
|
func IsNotRoot() bool {
|
||||||
if os.Getuid() != 0 {
|
return os.Getuid() != 0
|
||||||
return cli.Exit(gotext.Get("You need to be root to perform this action"), 1)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func EnsureIsAlrUser() error {
|
func EnsureIsAlrUser() error {
|
||||||
@ -184,3 +183,33 @@ func EscalateToRoot() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RootNeededAction(f cli.ActionFunc) cli.ActionFunc {
|
||||||
|
return func(ctx *cli.Context) error {
|
||||||
|
deps, err := appbuilder.
|
||||||
|
New(ctx.Context).
|
||||||
|
WithConfig().
|
||||||
|
Build()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer deps.Defer()
|
||||||
|
|
||||||
|
if IsNotRoot() {
|
||||||
|
if !deps.Cfg.UseRootCmd() {
|
||||||
|
return cli.Exit(gotext.Get("You need to be root to perform this action"), 1)
|
||||||
|
}
|
||||||
|
executable, err := os.Executable()
|
||||||
|
if err != nil {
|
||||||
|
return cliutils.FormatCliExit("failed to get executable path", err)
|
||||||
|
}
|
||||||
|
args := append([]string{executable}, os.Args[1:]...)
|
||||||
|
cmd := exec.Command(deps.Cfg.RootCmd(), args...)
|
||||||
|
cmd.Stdin = os.Stdin
|
||||||
|
cmd.Stdout = os.Stdout
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
return cmd.Run()
|
||||||
|
}
|
||||||
|
return f(ctx)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
|
|
||||||
ALR - Any Linux Repository
|
ALR - Any Linux Repository
|
||||||
Copyright (C) {{ .Year }} Евгений Храмов
|
Copyright (C) {{ .Year }} The ALR Authors
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
ALR - Any Linux Repository
|
ALR - Any Linux Repository
|
||||||
Copyright (C) {{ .Year }} Евгений Храмов
|
Copyright (C) {{ .Year }} The ALR Authors
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
|
76
list.go
76
list.go
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -22,10 +22,12 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
"os"
|
||||||
|
"slices"
|
||||||
|
"text/template"
|
||||||
|
|
||||||
"github.com/leonelquinteros/gotext"
|
"github.com/leonelquinteros/gotext"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
"golang.org/x/exp/slices"
|
|
||||||
|
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
|
||||||
appbuilder "gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils/app_builder"
|
appbuilder "gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils/app_builder"
|
||||||
@ -45,6 +47,15 @@ func ListCmd() *cli.Command {
|
|||||||
Name: "installed",
|
Name: "installed",
|
||||||
Aliases: []string{"I"},
|
Aliases: []string{"I"},
|
||||||
},
|
},
|
||||||
|
&cli.BoolFlag{
|
||||||
|
Name: "upgradable",
|
||||||
|
Aliases: []string{"U"},
|
||||||
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "format",
|
||||||
|
Aliases: []string{"f"},
|
||||||
|
Usage: gotext.Get("Format output using a Go template"),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
if err := utils.ExitIfCantDropCapsToAlrUserNoPrivs(); err != nil {
|
if err := utils.ExitIfCantDropCapsToAlrUserNoPrivs(); err != nil {
|
||||||
@ -57,8 +68,10 @@ func ListCmd() *cli.Command {
|
|||||||
New(ctx).
|
New(ctx).
|
||||||
WithConfig().
|
WithConfig().
|
||||||
WithDB().
|
WithDB().
|
||||||
|
WithManager().
|
||||||
// autoPull only
|
// autoPull only
|
||||||
WithRepos().
|
WithRepos().
|
||||||
|
WithDistroInfo().
|
||||||
Build()
|
Build()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -67,6 +80,39 @@ func ListCmd() *cli.Command {
|
|||||||
|
|
||||||
cfg := deps.Cfg
|
cfg := deps.Cfg
|
||||||
db := deps.DB
|
db := deps.DB
|
||||||
|
mgr := deps.Manager
|
||||||
|
info := deps.Info
|
||||||
|
|
||||||
|
if c.Bool("upgradable") {
|
||||||
|
updates, err := checkForUpdates(ctx, mgr, db, info)
|
||||||
|
if err != nil {
|
||||||
|
return cliutils.FormatCliExit(gotext.Get("Error getting packages for upgrade"), err)
|
||||||
|
}
|
||||||
|
if len(updates) == 0 {
|
||||||
|
slog.Info(gotext.Get("No packages for upgrade"))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
format := c.String("format")
|
||||||
|
if format == "" {
|
||||||
|
format = "{{.Package.Repository}}/{{.Package.Name}} {{.FromVersion}} -> {{.ToVersion}}\n"
|
||||||
|
}
|
||||||
|
tmpl, err := template.New("format").Parse(format)
|
||||||
|
if err != nil {
|
||||||
|
return cliutils.FormatCliExit(gotext.Get("Error parsing format template"), err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, updateInfo := range updates {
|
||||||
|
err = tmpl.Execute(os.Stdout, updateInfo)
|
||||||
|
if err != nil {
|
||||||
|
return cliutils.FormatCliExit(gotext.Get("Error executing template"), err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: refactor code below
|
||||||
|
|
||||||
where := "true"
|
where := "true"
|
||||||
args := []any(nil)
|
args := []any(nil)
|
||||||
@ -115,17 +161,35 @@ func ListCmd() *cli.Command {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
version := pkg.Version
|
type packageInfo struct {
|
||||||
|
Package *database.Package
|
||||||
|
Version string
|
||||||
|
}
|
||||||
|
|
||||||
|
pkgInfo := &packageInfo{}
|
||||||
|
pkgInfo.Package = &pkg
|
||||||
|
pkgInfo.Version = pkg.Version
|
||||||
if c.Bool("installed") {
|
if c.Bool("installed") {
|
||||||
instVersion, ok := installedAlrPackages[fmt.Sprintf("%s/%s", pkg.Repository, pkg.Name)]
|
instVersion, ok := installedAlrPackages[fmt.Sprintf("%s/%s", pkg.Repository, pkg.Name)]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
version = instVersion
|
pkgInfo.Version = instVersion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("%s/%s %s\n", pkg.Repository, pkg.Name, version)
|
format := c.String("format")
|
||||||
|
if format == "" {
|
||||||
|
format = "{{.Package.Repository}}/{{.Package.Name}} {{.Version}}\n"
|
||||||
|
}
|
||||||
|
tmpl, err := template.New("format").Parse(format)
|
||||||
|
if err != nil {
|
||||||
|
return cliutils.FormatCliExit(gotext.Get("Error parsing format template"), err)
|
||||||
|
}
|
||||||
|
err = tmpl.Execute(os.Stdout, pkgInfo)
|
||||||
|
if err != nil {
|
||||||
|
return cliutils.FormatCliExit(gotext.Get("Error executing template"), err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
9
main.go
9
main.go
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -74,14 +74,15 @@ func GetApp() *cli.App {
|
|||||||
InfoCmd(),
|
InfoCmd(),
|
||||||
ListCmd(),
|
ListCmd(),
|
||||||
BuildCmd(),
|
BuildCmd(),
|
||||||
AddRepoCmd(),
|
LegacyAddRepoCmd(),
|
||||||
RemoveRepoCmd(),
|
LegacyRemoveRepoCmd(),
|
||||||
RefreshCmd(),
|
RefreshCmd(),
|
||||||
FixCmd(),
|
FixCmd(),
|
||||||
GenCmd(),
|
GenCmd(),
|
||||||
HelperCmd(),
|
HelperCmd(),
|
||||||
VersionCmd(),
|
VersionCmd(),
|
||||||
SearchCmd(),
|
SearchCmd(),
|
||||||
|
RepoCmd(),
|
||||||
// Internal commands
|
// Internal commands
|
||||||
InternalBuildCmd(),
|
InternalBuildCmd(),
|
||||||
InternalInstallCmd(),
|
InternalInstallCmd(),
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
|
||||||
// It has been modified as part of "ALR - Any Linux Repository" by Евгений Храмов.
|
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
|
||||||
//
|
//
|
||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
@ -35,6 +35,7 @@ import (
|
|||||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/types"
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/types"
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/distro"
|
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/distro"
|
||||||
|
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
|
||||||
)
|
)
|
||||||
|
|
||||||
type BuildInput struct {
|
type BuildInput struct {
|
||||||
@ -233,8 +234,8 @@ type CheckerExecutor interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type InstallerExecutor interface {
|
type InstallerExecutor interface {
|
||||||
InstallLocal(paths []string) error
|
InstallLocal(paths []string, opts *manager.Opts) error
|
||||||
Install(pkgs []string) error
|
Install(pkgs []string, opts *manager.Opts) error
|
||||||
RemoveAlreadyInstalled(pkgs []string) ([]string, error)
|
RemoveAlreadyInstalled(pkgs []string) ([]string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -438,7 +439,7 @@ func (b *Builder) BuildPackage(
|
|||||||
}
|
}
|
||||||
|
|
||||||
slog.Debug("BuildALRDeps")
|
slog.Debug("BuildALRDeps")
|
||||||
_, builtNames, repoDeps, err := b.BuildALRDeps(ctx, input, depends)
|
builtPaths, builtNames, repoDeps, err := b.BuildALRDeps(ctx, input, depends)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -480,8 +481,8 @@ func (b *Builder) BuildPackage(
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
pkgPaths := removeDuplicates(res.BuiltPaths)
|
pkgPaths := removeDuplicates(append(builtPaths, res.BuiltPaths...))
|
||||||
pkgNames := removeDuplicates(res.BuiltNames)
|
pkgNames := removeDuplicates(append(builtNames, res.BuiltNames...))
|
||||||
|
|
||||||
return &BuildResult{
|
return &BuildResult{
|
||||||
PackagePaths: pkgPaths,
|
PackagePaths: pkgPaths,
|
||||||
@ -521,7 +522,12 @@ func (b *Builder) InstallALRPackages(
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = b.installerExecutor.InstallLocal(res.PackagePaths)
|
err = b.installerExecutor.InstallLocal(
|
||||||
|
res.PackagePaths,
|
||||||
|
&manager.Opts{
|
||||||
|
NoConfirm: !input.BuildOpts().Interactive,
|
||||||
|
},
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -681,14 +687,18 @@ func (i *Builder) InstallPkgs(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(builtPaths) > 0 {
|
if len(builtPaths) > 0 {
|
||||||
err = i.installerExecutor.InstallLocal(builtPaths)
|
err = i.installerExecutor.InstallLocal(builtPaths, &manager.Opts{
|
||||||
|
NoConfirm: !input.BuildOpts().Interactive,
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(repoDeps) > 0 {
|
if len(repoDeps) > 0 {
|
||||||
err = i.installerExecutor.Install(repoDeps)
|
err = i.installerExecutor.Install(repoDeps, &manager.Opts{
|
||||||
|
NoConfirm: !input.BuildOpts().Interactive,
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// ALR - Any Linux Repository
|
// ALR - Any Linux Repository
|
||||||
// Copyright (C) 2025 Евгений Храмов
|
// Copyright (C) 2025 The ALR Authors
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// 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
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user