diff --git a/build.go b/build.go index dd947cd..91f30fd 100644 --- a/build.go +++ b/build.go @@ -197,6 +197,13 @@ func BuildCmd() *cli.Command { for _, pkg := range res { name := filepath.Base(pkg.Path) + + // Проверяем, существует ли файл перед перемещением + if _, err := os.Stat(pkg.Path); os.IsNotExist(err) { + slog.Info("Package file already moved or removed, skipping", "path", pkg.Path) + continue + } + err = osutils.Move(pkg.Path, filepath.Join(wd, name)) if err != nil { return cliutils.FormatCliExit(gotext.Get("Error moving the package"), err) diff --git a/internal/build/script_executor.go b/internal/build/script_executor.go index 18417d5..1bd1b11 100644 --- a/internal/build/script_executor.go +++ b/internal/build/script_executor.go @@ -167,15 +167,30 @@ func (e *LocalScriptExecutor) ExecuteSecondPass( pkgName := packager.ConventionalFileName(pkgInfo) // Получаем имя файла пакета pkgPath := filepath.Join(dirs.BaseDir, pkgName) // Определяем путь к пакету + slog.Info("Creating package file", "path", pkgPath, "name", pkgName) + pkgFile, err := os.Create(pkgPath) if err != nil { + slog.Error("Failed to create package file", "path", pkgPath, "error", err) + return nil, err + } + defer pkgFile.Close() + + slog.Info("Packaging with nfpm", "format", pkgFormat) + err = packager.Package(pkgInfo, pkgFile) + if err != nil { + slog.Error("Failed to create package", "path", pkgPath, "error", err) return nil, err } - err = packager.Package(pkgInfo, pkgFile) - if err != nil { + slog.Info("Package created successfully", "path", pkgPath) + + // Проверяем, что файл действительно существует + if _, err := os.Stat(pkgPath); err != nil { + slog.Error("Package file not found after creation", "path", pkgPath, "error", err) return nil, err } + slog.Info("Package file verified to exist", "path", pkgPath) builtDeps = append(builtDeps, &BuiltDep{ Name: vars.Name, diff --git a/internal/build/utils.go b/internal/build/utils.go index e6efc75..914a80f 100644 --- a/internal/build/utils.go +++ b/internal/build/utils.go @@ -49,12 +49,15 @@ import ( // Функция prepareDirs подготавливает директории для сборки. func prepareDirs(dirs types.Directories) error { - // Пробуем удалить базовую директорию, если она существует - err := os.RemoveAll(dirs.BaseDir) + // Удаляем только директории источников и упаковки, не трогаем файлы пакетов в BaseDir + err := os.RemoveAll(dirs.SrcDir) if err != nil { - // Если не можем удалить (например, принадлежит root), логируем и продолжаем - // Новые директории будут созданы или перезаписаны - slog.Debug("Failed to remove base directory", "path", dirs.BaseDir, "error", err) + slog.Debug("Failed to remove src directory", "path", dirs.SrcDir, "error", err) + } + + err = os.RemoveAll(dirs.PkgDir) + if err != nil { + slog.Debug("Failed to remove pkg directory", "path", dirs.PkgDir, "error", err) } // Создаем базовую директорию для пакета с setgid битом