chore: replace old logger with new
This commit is contained in:
		| @@ -25,6 +25,7 @@ import ( | ||||
| 	"encoding/hex" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"log/slog" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"runtime" | ||||
| @@ -38,7 +39,7 @@ import ( | ||||
| 	_ "github.com/goreleaser/nfpm/v2/arch" | ||||
| 	_ "github.com/goreleaser/nfpm/v2/deb" | ||||
| 	_ "github.com/goreleaser/nfpm/v2/rpm" | ||||
| 	"go.elara.ws/logger/log" | ||||
| 	"github.com/leonelquinteros/gotext" | ||||
| 	"mvdan.cc/sh/v3/expand" | ||||
| 	"mvdan.cc/sh/v3/interp" | ||||
| 	"mvdan.cc/sh/v3/syntax" | ||||
| @@ -56,7 +57,6 @@ import ( | ||||
| 	"gitea.plemya-x.ru/Plemya-x/ALR/internal/shutils/helpers" | ||||
| 	"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/loggerctx" | ||||
| 	"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager" | ||||
| 	"gitea.plemya-x.ru/Plemya-x/ALR/pkg/repos" | ||||
| ) | ||||
| @@ -64,7 +64,6 @@ import ( | ||||
| // Функция BuildPackage выполняет сборку скрипта по указанному пути. Возвращает два среза. | ||||
| // Один содержит пути к собранным пакетам, другой - имена собранных пакетов. | ||||
| func BuildPackage(ctx context.Context, opts types.BuildOpts) ([]string, []string, error) { | ||||
| 	log := loggerctx.From(ctx) | ||||
| 	reposInstance := repos.GetInstance(ctx) | ||||
|  | ||||
| 	info, err := distro.ParseOSRelease(ctx) | ||||
| @@ -102,10 +101,11 @@ func BuildPackage(ctx context.Context, opts types.BuildOpts) ([]string, []string | ||||
| 	// Спрашиваем у пользователя, хочет ли он увидеть скрипт сборки. | ||||
| 	err = cliutils.PromptViewScript(ctx, opts.Script, vars.Name, config.Config(ctx).PagerStyle, opts.Interactive) | ||||
| 	if err != nil { | ||||
| 		log.Fatal("Failed to prompt user to view build script").Err(err).Send() | ||||
| 		slog.Error(gotext.Get("Failed to prompt user to view build script"), "err", err) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
|  | ||||
| 	log.Info("Building package").Str("name", vars.Name).Str("version", vars.Version).Send() | ||||
| 	slog.Info(gotext.Get("Building package"), "name", vars.Name, "version", vars.Version) | ||||
|  | ||||
| 	// Второй проход будет использоваться для выполнения реального кода, | ||||
| 	// поэтому он не ограничен. Скрипт уже был показан | ||||
| @@ -149,7 +149,7 @@ func BuildPackage(ctx context.Context, opts types.BuildOpts) ([]string, []string | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
|  | ||||
| 	log.Info("Downloading sources").Send() // Записываем в лог загрузку источников | ||||
| 	slog.Info(gotext.Get("Downloading sources")) // Записываем в лог загрузку источников | ||||
|  | ||||
| 	err = getSources(ctx, dirs, vars) // Загружаем исходники | ||||
| 	if err != nil { | ||||
| @@ -161,7 +161,7 @@ func BuildPackage(ctx context.Context, opts types.BuildOpts) ([]string, []string | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
|  | ||||
| 	log.Info("Building package metadata").Str("name", vars.Name).Send() // Логгируем сборку метаданных пакета | ||||
| 	slog.Info(gotext.Get("Building package metadata"), "name", vars.Name) | ||||
|  | ||||
| 	pkgFormat := getPkgFormat(opts.Manager) // Получаем формат пакета | ||||
|  | ||||
| @@ -183,7 +183,7 @@ func BuildPackage(ctx context.Context, opts types.BuildOpts) ([]string, []string | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
|  | ||||
| 	log.Info("Compressing package").Str("name", pkgName).Send() // Логгируем сжатие пакета | ||||
| 	slog.Info(gotext.Get("Compressing package"), "name", pkgName) // Логгируем сжатие пакета | ||||
|  | ||||
| 	err = packager.Package(pkgInfo, pkgFile) // Упаковываем пакет | ||||
| 	if err != nil { | ||||
| @@ -308,7 +308,6 @@ func prepareDirs(dirs types.Directories) error { | ||||
|  | ||||
| // Функция performChecks проверяет различные аспекты в системе, чтобы убедиться, что пакет может быть установлен. | ||||
| func performChecks(ctx context.Context, vars *types.BuildVars, interactive bool, installed map[string]string) (bool, error) { | ||||
| 	log := loggerctx.From(ctx) | ||||
| 	if !cpu.IsCompatibleWith(cpu.Arch(), vars.Architectures) { // Проверяем совместимость архитектуры | ||||
| 		cont, err := cliutils.YesNoPrompt(ctx, "Your system's CPU architecture doesn't match this package. Do you want to build anyway?", interactive, true) | ||||
| 		if err != nil { | ||||
| @@ -321,10 +320,10 @@ func performChecks(ctx context.Context, vars *types.BuildVars, interactive bool, | ||||
| 	} | ||||
|  | ||||
| 	if instVer, ok := installed[vars.Name]; ok { // Если пакет уже установлен, выводим предупреждение | ||||
| 		log.Warn("This package is already installed"). | ||||
| 			Str("name", vars.Name). | ||||
| 			Str("version", instVer). | ||||
| 			Send() | ||||
| 		slog.Warn(gotext.Get("This package is already installed"), | ||||
| 			"name", vars.Name, | ||||
| 			"version", instVer, | ||||
| 		) | ||||
| 	} | ||||
|  | ||||
| 	return true, nil | ||||
| @@ -337,7 +336,6 @@ type PackageFinder interface { | ||||
| // Функция installBuildDeps устанавливает все зависимости сборки, которые еще не установлены, и возвращает | ||||
| // срез, содержащий имена всех установленных пакетов. | ||||
| func installBuildDeps(ctx context.Context, repos PackageFinder, vars *types.BuildVars, opts types.BuildOpts) ([]string, error) { | ||||
| 	log := loggerctx.From(ctx) | ||||
| 	var buildDeps []string | ||||
| 	if len(vars.BuildDepends) > 0 { | ||||
| 		deps, err := removeAlreadyInstalled(opts, vars.BuildDepends) | ||||
| @@ -350,7 +348,7 @@ func installBuildDeps(ctx context.Context, repos PackageFinder, vars *types.Buil | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | ||||
| 		log.Info("Installing build dependencies").Send() // Логгируем установку зависимостей | ||||
| 		slog.Info(gotext.Get("Installing build dependencies")) // Логгируем установку зависимостей | ||||
|  | ||||
| 		flattened := cliutils.FlattenPkgs(ctx, found, "install", opts.Interactive) // Уплощаем список зависимостей | ||||
| 		buildDeps = packageNames(flattened) | ||||
| @@ -391,9 +389,8 @@ func installOptDeps(ctx context.Context, repos PackageFinder, vars *types.BuildV | ||||
| // пакетов, которые она собрала, а также все зависимости, которые не были найдены в ALR репозитории, | ||||
| // чтобы они могли быть установлены из системных репозиториев. | ||||
| func buildALRDeps(ctx context.Context, opts types.BuildOpts, vars *types.BuildVars) (builtPaths, builtNames, repoDeps []string, err error) { | ||||
| 	log := loggerctx.From(ctx) | ||||
| 	if len(vars.Depends) > 0 { | ||||
| 		log.Info("Installing dependencies").Send() | ||||
| 		slog.Info(gotext.Get("Installing dependencies")) | ||||
|  | ||||
| 		found, notFound, err := repos.FindPkgs(ctx, vars.Depends) // Поиск зависимостей | ||||
| 		if err != nil { | ||||
| @@ -433,10 +430,9 @@ func buildALRDeps(ctx context.Context, opts types.BuildOpts, vars *types.BuildVa | ||||
|  | ||||
| // Функция executeFunctions выполняет специальные функции ALR, такие как version(), prepare() и т.д. | ||||
| func executeFunctions(ctx context.Context, dec *decoder.Decoder, dirs types.Directories, vars *types.BuildVars) (err error) { | ||||
| 	log := loggerctx.From(ctx) | ||||
| 	version, ok := dec.GetFunc("version") | ||||
| 	if ok { | ||||
| 		log.Info("Executing version()").Send() | ||||
| 		slog.Info(gotext.Get("Executing version()")) | ||||
|  | ||||
| 		buf := &bytes.Buffer{} | ||||
|  | ||||
| @@ -456,12 +452,12 @@ func executeFunctions(ctx context.Context, dec *decoder.Decoder, dirs types.Dire | ||||
| 		} | ||||
| 		vars.Version = newVer | ||||
|  | ||||
| 		log.Info("Updating version").Str("new", newVer).Send() | ||||
| 		slog.Info("Updating version", "new", newVer) | ||||
| 	} | ||||
|  | ||||
| 	prepare, ok := dec.GetFunc("prepare") | ||||
| 	if ok { | ||||
| 		log.Info("Executing prepare()").Send() | ||||
| 		slog.Info(gotext.Get("Executing prepare()")) | ||||
|  | ||||
| 		err = prepare(ctx, interp.Dir(dirs.SrcDir)) | ||||
| 		if err != nil { | ||||
| @@ -471,7 +467,7 @@ func executeFunctions(ctx context.Context, dec *decoder.Decoder, dirs types.Dire | ||||
|  | ||||
| 	build, ok := dec.GetFunc("build") | ||||
| 	if ok { | ||||
| 		log.Info("Executing build()").Send() | ||||
| 		slog.Info(gotext.Get("Executing build()")) | ||||
|  | ||||
| 		err = build(ctx, interp.Dir(dirs.SrcDir)) | ||||
| 		if err != nil { | ||||
| @@ -483,24 +479,27 @@ func executeFunctions(ctx context.Context, dec *decoder.Decoder, dirs types.Dire | ||||
| 	for { | ||||
| 		packageFn, ok := dec.GetFunc("package") | ||||
| 		if ok { | ||||
| 			log.Info("Executing package()").Send() | ||||
| 			slog.Info(gotext.Get("Executing package()")) | ||||
| 			err = packageFn(ctx, interp.Dir(dirs.SrcDir)) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// Проверка на наличие дополнительных функций package_* | ||||
| 		packageFuncName := "package_" | ||||
| 		if packageFunc, ok := dec.GetFunc(packageFuncName); ok { | ||||
| 			log.Info("Executing " + packageFuncName).Send() | ||||
| 			err = packageFunc(ctx, interp.Dir(dirs.SrcDir)) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 		/* | ||||
| 			// Проверка на наличие дополнительных функций package_* | ||||
| 			packageFuncName := "package_" | ||||
| 			if packageFunc, ok := dec.GetFunc(packageFuncName); ok { | ||||
| 				slog.Info("Executing " + packageFuncName) | ||||
| 				err = packageFunc(ctx, interp.Dir(dirs.SrcDir)) | ||||
| 				if err != nil { | ||||
| 					return err | ||||
| 				} | ||||
| 			} else { | ||||
| 				break // Если больше нет функций package_*, выходим из цикла | ||||
| 			} | ||||
| 		} else { | ||||
| 			break // Если больше нет функций package_*, выходим из цикла | ||||
| 		} | ||||
| 		*/ | ||||
| 		break | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| @@ -555,7 +554,7 @@ func buildPkgMetadata(ctx context.Context, vars *types.BuildVars, dirs types.Dir | ||||
| 				return nil, err | ||||
| 			} | ||||
| 		} else { | ||||
| 			log.Info("AutoProv is not implemented for this package format, so it's skiped").Send() | ||||
| 			slog.Info(gotext.Get("AutoProv is not implemented for this package format, so it's skiped")) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -566,7 +565,7 @@ func buildPkgMetadata(ctx context.Context, vars *types.BuildVars, dirs types.Dir | ||||
| 				return nil, err | ||||
| 			} | ||||
| 		} else { | ||||
| 			log.Info("AutoReq is not implemented for this package format, so it's skiped").Send() | ||||
| 			slog.Info(gotext.Get("AutoReq is not implemented for this package format, so it's skiped")) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -756,9 +755,9 @@ func createBuildEnvVars(info *distro.OSRelease, dirs types.Directories) []string | ||||
|  | ||||
| // Функция getSources загружает исходники скрипта. | ||||
| func getSources(ctx context.Context, dirs types.Directories, bv *types.BuildVars) error { | ||||
| 	log := loggerctx.From(ctx) | ||||
| 	if len(bv.Sources) != len(bv.Checksums) { | ||||
| 		log.Fatal("The checksums array must be the same length as sources").Send() | ||||
| 		slog.Error(gotext.Get("The checksums array must be the same length as sources")) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
|  | ||||
| 	for i, src := range bv.Sources { | ||||
|   | ||||
| @@ -19,21 +19,20 @@ package build | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"context" | ||||
| 	"log/slog" | ||||
| 	"os/exec" | ||||
| 	"path" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/goreleaser/nfpm/v2" | ||||
| 	"github.com/leonelquinteros/gotext" | ||||
|  | ||||
| 	"gitea.plemya-x.ru/Plemya-x/ALR/internal/types" | ||||
| 	"gitea.plemya-x.ru/Plemya-x/ALR/pkg/loggerctx" | ||||
| ) | ||||
|  | ||||
| func rpmFindDependencies(ctx context.Context, pkgInfo *nfpm.Info, dirs types.Directories, command string, updateFunc func(string)) error { | ||||
| 	log := loggerctx.From(ctx) | ||||
|  | ||||
| 	if _, err := exec.LookPath(command); err != nil { | ||||
| 		log.Info("Command not found on the system").Str("command", command).Send() | ||||
| 		slog.Info(gotext.Get("Command not found on the system"), "command", command) | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| @@ -64,7 +63,7 @@ func rpmFindDependencies(ctx context.Context, pkgInfo *nfpm.Info, dirs types.Dir | ||||
| 	cmd.Stdout = &out | ||||
| 	cmd.Stderr = &stderr | ||||
| 	if err := cmd.Run(); err != nil { | ||||
| 		log.Error(stderr.String()).Send() | ||||
| 		slog.Error(stderr.String()) | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| @@ -79,19 +78,15 @@ func rpmFindDependencies(ctx context.Context, pkgInfo *nfpm.Info, dirs types.Dir | ||||
| } | ||||
|  | ||||
| func rpmFindProvides(ctx context.Context, pkgInfo *nfpm.Info, dirs types.Directories) error { | ||||
| 	log := loggerctx.From(ctx) | ||||
|  | ||||
| 	return rpmFindDependencies(ctx, pkgInfo, dirs, "/usr/lib/rpm/find-provides", func(dep string) { | ||||
| 		log.Info("Provided dependency found").Str("dep", dep).Send() | ||||
| 		slog.Info(gotext.Get("Provided dependency found"), "dep", dep) | ||||
| 		pkgInfo.Overridables.Provides = append(pkgInfo.Overridables.Provides, dep) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func rpmFindRequires(ctx context.Context, pkgInfo *nfpm.Info, dirs types.Directories) error { | ||||
| 	log := loggerctx.From(ctx) | ||||
|  | ||||
| 	return rpmFindDependencies(ctx, pkgInfo, dirs, "/usr/lib/rpm/find-requires", func(dep string) { | ||||
| 		log.Info("Required dependency found").Str("dep", dep).Send() | ||||
| 		slog.Info(gotext.Get("Required dependency found"), "dep", dep) | ||||
| 		pkgInfo.Overridables.Depends = append(pkgInfo.Overridables.Depends, dep) | ||||
| 	}) | ||||
| } | ||||
|   | ||||
| @@ -21,24 +21,26 @@ package build | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"log/slog" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
|  | ||||
| 	"github.com/leonelquinteros/gotext" | ||||
|  | ||||
| 	"gitea.plemya-x.ru/Plemya-x/ALR/internal/config" | ||||
| 	"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/pkg/loggerctx" | ||||
| ) | ||||
|  | ||||
| // InstallPkgs устанавливает нативные пакеты с использованием менеджера пакетов, | ||||
| // затем строит и устанавливает пакеты ALR | ||||
| func InstallPkgs(ctx context.Context, alrPkgs []db.Package, nativePkgs []string, opts types.BuildOpts) { | ||||
| 	log := loggerctx.From(ctx) // Инициализируем логгер из контекста | ||||
|  | ||||
| 	if len(nativePkgs) > 0 { | ||||
| 		err := opts.Manager.Install(nil, nativePkgs...) | ||||
| 		// Если есть нативные пакеты, выполняем их установку | ||||
| 		if err != nil { | ||||
| 			log.Fatal("Error installing native packages").Err(err).Send() | ||||
| 			slog.Error(gotext.Get("Error installing native packages"), "err", err) | ||||
| 			os.Exit(1) | ||||
| 			// Логируем и завершаем выполнение при ошибке | ||||
| 		} | ||||
| 	} | ||||
| @@ -61,20 +63,21 @@ func GetScriptPaths(ctx context.Context, pkgs []db.Package) []string { | ||||
|  | ||||
| // InstallScripts строит и устанавливает переданные alr скрипты сборки | ||||
| func InstallScripts(ctx context.Context, scripts []string, opts types.BuildOpts) { | ||||
| 	log := loggerctx.From(ctx) // Получаем логгер из контекста | ||||
| 	for _, script := range scripts { | ||||
| 		opts.Script = script // Устанавливаем текущий скрипт в опции | ||||
| 		builtPkgs, _, err := BuildPackage(ctx, opts) | ||||
| 		// Выполняем сборку пакета | ||||
| 		if err != nil { | ||||
| 			log.Fatal("Error building package").Err(err).Send() | ||||
| 			slog.Error(gotext.Get("Error building package"), "err", err) | ||||
| 			os.Exit(1) | ||||
| 			// Логируем и завершаем выполнение при ошибке сборки | ||||
| 		} | ||||
|  | ||||
| 		err = opts.Manager.InstallLocal(nil, builtPkgs...) | ||||
| 		// Устанавливаем локально собранные пакеты | ||||
| 		if err != nil { | ||||
| 			log.Fatal("Error installing package").Err(err).Send() | ||||
| 			slog.Error(gotext.Get("Error installing package"), "err", err) | ||||
| 			os.Exit(1) | ||||
| 			// Логируем и завершаем выполнение при ошибке установки | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user