feat: add skiplists for auto_req and auto_prov

This commit is contained in:
2025-04-05 20:19:00 +03:00
parent 3ce9f0db35
commit 0bfe88beed
14 changed files with 438 additions and 149 deletions

View File

@ -123,15 +123,29 @@ func (d *Decoder) DecodeVars(val any) error {
}
rVal := reflect.ValueOf(val).Elem()
return d.decodeStruct(rVal)
}
func (d *Decoder) decodeStruct(rVal reflect.Value) error {
for i := 0; i < rVal.NumField(); i++ {
field := rVal.Field(i)
fieldType := rVal.Type().Field(i)
// Пропускаем неэкспортируемые поля
if !fieldType.IsExported() {
continue
}
// Обрабатываем встроенные поля рекурсивно
if fieldType.Anonymous {
if field.Kind() == reflect.Struct {
if err := d.decodeStruct(field); err != nil {
return err
}
}
continue
}
name := fieldType.Name
tag := fieldType.Tag.Get("sh")
required := false
@ -160,7 +174,6 @@ func (d *Decoder) DecodeVars(val any) error {
field.Set(newVal.Elem())
}
return nil
}

View File

@ -337,92 +337,92 @@ msgstr ""
msgid "Error while running app"
msgstr ""
#: pkg/build/build.go:156
#: pkg/build/build.go:157
msgid "Failed to prompt user to view build script"
msgstr ""
#: pkg/build/build.go:160
#: pkg/build/build.go:161
msgid "Building package"
msgstr ""
#: pkg/build/build.go:208
#: pkg/build/build.go:209
msgid "The checksums array must be the same length as sources"
msgstr ""
#: pkg/build/build.go:235
#: pkg/build/build.go:238
msgid "Downloading sources"
msgstr ""
#: pkg/build/build.go:257
#: pkg/build/build.go:260
msgid "Building package metadata"
msgstr ""
#: pkg/build/build.go:279
#: pkg/build/build.go:282
msgid "Compressing package"
msgstr ""
#: pkg/build/build.go:438
#: pkg/build/build.go:441
msgid ""
"Your system's CPU architecture doesn't match this package. Do you want to "
"build anyway?"
msgstr ""
#: pkg/build/build.go:452
#: pkg/build/build.go:455
msgid "This package is already installed"
msgstr ""
#: pkg/build/build.go:476
#: pkg/build/build.go:479
msgid "Installing build dependencies"
msgstr ""
#: pkg/build/build.go:521
#: pkg/build/build.go:524
msgid "Installing dependencies"
msgstr ""
#: pkg/build/build.go:602
#: pkg/build/build.go:605
msgid "Would you like to remove the build dependencies?"
msgstr ""
#: pkg/build/build.go:665
#: pkg/build/build.go:668
msgid "Executing prepare()"
msgstr ""
#: pkg/build/build.go:675
#: pkg/build/build.go:678
msgid "Executing build()"
msgstr ""
#: pkg/build/build.go:705 pkg/build/build.go:725
#: pkg/build/build.go:708 pkg/build/build.go:728
msgid "Executing %s()"
msgstr ""
#: pkg/build/build.go:784
#: pkg/build/build.go:787
msgid "Error installing native packages"
msgstr ""
#: pkg/build/build.go:808
#: pkg/build/build.go:811
msgid "Error installing package"
msgstr ""
#: pkg/build/build.go:867
msgid "AutoProv is not implemented for this package format, so it's skipped"
msgstr ""
#: pkg/build/build.go:878
msgid "AutoReq is not implemented for this package format, so it's skipped"
msgstr ""
#: pkg/build/findDeps.go:35
#: pkg/build/find_deps/alt_linux.go:35
msgid "Command not found on the system"
msgstr ""
#: pkg/build/findDeps.go:82
#: pkg/build/find_deps/alt_linux.go:86
msgid "Provided dependency found"
msgstr ""
#: pkg/build/findDeps.go:89
#: pkg/build/find_deps/alt_linux.go:93
msgid "Required dependency found"
msgstr ""
#: pkg/build/find_deps/empty.go:32
msgid "AutoProv is not implemented for this package format, so it's skipped"
msgstr ""
#: pkg/build/find_deps/empty.go:37
msgid "AutoReq is not implemented for this package format, so it's skipped"
msgstr ""
#: pkg/repos/pull.go:79
msgid "Pulling repository"
msgstr ""

View File

@ -349,31 +349,31 @@ msgstr "Показать справку"
msgid "Error while running app"
msgstr "Ошибка при запуске приложения"
#: pkg/build/build.go:156
#: pkg/build/build.go:157
msgid "Failed to prompt user to view build script"
msgstr "Не удалось предложить пользователю просмотреть скрипт сборки"
#: pkg/build/build.go:160
#: pkg/build/build.go:161
msgid "Building package"
msgstr "Сборка пакета"
#: pkg/build/build.go:208
#: pkg/build/build.go:209
msgid "The checksums array must be the same length as sources"
msgstr "Массив контрольных сумм должен быть той же длины, что и источники"
#: pkg/build/build.go:235
#: pkg/build/build.go:238
msgid "Downloading sources"
msgstr "Скачивание источников"
#: pkg/build/build.go:257
#: pkg/build/build.go:260
msgid "Building package metadata"
msgstr "Сборка метаданных пакета"
#: pkg/build/build.go:279
#: pkg/build/build.go:282
msgid "Compressing package"
msgstr "Сжатие пакета"
#: pkg/build/build.go:438
#: pkg/build/build.go:441
msgid ""
"Your system's CPU architecture doesn't match this package. Do you want to "
"build anyway?"
@ -381,64 +381,64 @@ msgstr ""
"Архитектура процессора вашей системы не соответствует этому пакету. Вы все "
"равно хотите выполнить сборку?"
#: pkg/build/build.go:452
#: pkg/build/build.go:455
msgid "This package is already installed"
msgstr "Этот пакет уже установлен"
#: pkg/build/build.go:476
#: pkg/build/build.go:479
msgid "Installing build dependencies"
msgstr "Установка зависимостей сборки"
#: pkg/build/build.go:521
#: pkg/build/build.go:524
msgid "Installing dependencies"
msgstr "Установка зависимостей"
#: pkg/build/build.go:602
#: pkg/build/build.go:605
msgid "Would you like to remove the build dependencies?"
msgstr "Хотели бы вы удалить зависимости сборки?"
#: pkg/build/build.go:665
#: pkg/build/build.go:668
msgid "Executing prepare()"
msgstr "Исполнение prepare()"
#: pkg/build/build.go:675
#: pkg/build/build.go:678
msgid "Executing build()"
msgstr "Исполнение build()"
#: pkg/build/build.go:705 pkg/build/build.go:725
#: pkg/build/build.go:708 pkg/build/build.go:728
msgid "Executing %s()"
msgstr "Исполнение %s()"
#: pkg/build/build.go:784
#: pkg/build/build.go:787
msgid "Error installing native packages"
msgstr "Ошибка при установке нативных пакетов"
#: pkg/build/build.go:808
#: pkg/build/build.go:811
msgid "Error installing package"
msgstr "Ошибка при установке пакета"
#: pkg/build/build.go:867
#: pkg/build/find_deps/alt_linux.go:35
msgid "Command not found on the system"
msgstr "Команда не найдена в системе"
#: pkg/build/find_deps/alt_linux.go:86
msgid "Provided dependency found"
msgstr "Найденная предоставленная зависимость"
#: pkg/build/find_deps/alt_linux.go:93
msgid "Required dependency found"
msgstr "Найдена требуемая зависимость"
#: pkg/build/find_deps/empty.go:32
msgid "AutoProv is not implemented for this package format, so it's skipped"
msgstr ""
"AutoProv не реализовано для этого формата пакета, поэтому будет пропущено"
#: pkg/build/build.go:878
#: pkg/build/find_deps/empty.go:37
msgid "AutoReq is not implemented for this package format, so it's skipped"
msgstr ""
"AutoReq не реализовано для этого формата пакета, поэтому будет пропущено"
#: pkg/build/findDeps.go:35
msgid "Command not found on the system"
msgstr "Команда не найдена в системе"
#: pkg/build/findDeps.go:82
msgid "Provided dependency found"
msgstr "Найденная предоставленная зависимость"
#: pkg/build/findDeps.go:89
msgid "Required dependency found"
msgstr "Найдена требуемая зависимость"
#: pkg/repos/pull.go:79
msgid "Pulling repository"
msgstr "Скачивание репозитория"

View File

@ -31,79 +31,44 @@ type BuildOpts struct {
}
type BuildVarsPre struct {
Version string `sh:"version,required"`
Release int `sh:"release,required"`
Epoch uint `sh:"epoch"`
Description string `sh:"desc"`
Homepage string `sh:"homepage"`
Maintainer string `sh:"maintainer"`
Architectures []string `sh:"architectures"`
Licenses []string `sh:"license"`
Provides []string `sh:"provides"`
Conflicts []string `sh:"conflicts"`
Depends []string `sh:"deps"`
BuildDepends []string `sh:"build_deps"`
OptDepends []string `sh:"opt_deps"`
Replaces []string `sh:"replaces"`
Sources []string `sh:"sources"`
Checksums []string `sh:"checksums"`
Backup []string `sh:"backup"`
Scripts Scripts `sh:"scripts"`
AutoReq []string `sh:"auto_req"`
AutoProv []string `sh:"auto_prov"`
Version string `sh:"version,required"`
Release int `sh:"release,required"`
Epoch uint `sh:"epoch"`
Description string `sh:"desc"`
Homepage string `sh:"homepage"`
Maintainer string `sh:"maintainer"`
Architectures []string `sh:"architectures"`
Licenses []string `sh:"license"`
Provides []string `sh:"provides"`
Conflicts []string `sh:"conflicts"`
Depends []string `sh:"deps"`
BuildDepends []string `sh:"build_deps"`
OptDepends []string `sh:"opt_deps"`
Replaces []string `sh:"replaces"`
Sources []string `sh:"sources"`
Checksums []string `sh:"checksums"`
Backup []string `sh:"backup"`
Scripts Scripts `sh:"scripts"`
AutoReq []string `sh:"auto_req"`
AutoProv []string `sh:"auto_prov"`
AutoReqSkipList []string `sh:"auto_req_skiplist"`
AutoProvSkipList []string `sh:"auto_prov_skiplist"`
}
func (bv *BuildVarsPre) ToBuildVars() BuildVars {
return BuildVars{
Name: "",
Version: bv.Version,
Release: bv.Release,
Epoch: bv.Epoch,
Description: bv.Description,
Homepage: bv.Homepage,
Maintainer: bv.Maintainer,
Architectures: bv.Architectures,
Licenses: bv.Licenses,
Provides: bv.Provides,
Conflicts: bv.Conflicts,
Depends: bv.Depends,
BuildDepends: bv.BuildDepends,
OptDepends: bv.OptDepends,
Replaces: bv.Replaces,
Sources: bv.Sources,
Checksums: bv.Checksums,
Backup: bv.Backup,
Scripts: bv.Scripts,
AutoReq: bv.AutoReq,
AutoProv: bv.AutoProv,
Name: "",
Base: "",
BuildVarsPre: *bv,
}
}
// BuildVars represents the script variables required
// to build a package
type BuildVars struct {
Name string `sh:"name,required"`
Version string `sh:"version,required"`
Release int `sh:"release,required"`
Epoch uint `sh:"epoch"`
Description string `sh:"desc"`
Homepage string `sh:"homepage"`
Maintainer string `sh:"maintainer"`
Architectures []string `sh:"architectures"`
Licenses []string `sh:"license"`
Provides []string `sh:"provides"`
Conflicts []string `sh:"conflicts"`
Depends []string `sh:"deps"`
BuildDepends []string `sh:"build_deps"`
OptDepends []string `sh:"opt_deps"`
Replaces []string `sh:"replaces"`
Sources []string `sh:"sources"`
Checksums []string `sh:"checksums"`
Backup []string `sh:"backup"`
Scripts Scripts `sh:"scripts"`
AutoReq []string `sh:"auto_req"`
AutoProv []string `sh:"auto_prov"`
Base string
Name string `sh:"name,required"`
Base string
BuildVarsPre
}
type Scripts struct {