Allow add to merge into existing package

This commit is contained in:
2026-02-19 17:21:55 +00:00
parent 76aeb0c19e
commit 6333da0a3b
2 changed files with 15 additions and 5 deletions

18
main.go
View File

@@ -247,8 +247,9 @@ func addCmd(args []string) error {
}
pkgDir := filepath.Join(repo, pkgName)
pkgExists := false
if _, err := os.Stat(pkgDir); err == nil {
return fmt.Errorf("package %q already exists", pkgName)
pkgExists = true
} else if !errors.Is(err, os.ErrNotExist) {
return err
}
@@ -259,11 +260,15 @@ func addCmd(args []string) error {
}
configPath := filepath.Join(pkgDir, configFileName)
if err := writeConfig(configPath, targetRoot); err != nil {
return err
if !pkgExists {
if err := writeConfig(configPath, targetRoot); err != nil {
return err
}
}
if info.IsDir() {
if pkgExists {
return errors.New("cannot merge a directory into an existing package yet")
}
if err := moveDirContents(absPath, filesDir); err != nil {
return err
}
@@ -280,6 +285,11 @@ func addCmd(args []string) error {
if err := os.MkdirAll(filepath.Dir(destPath), 0o755); err != nil {
return err
}
if _, err := os.Stat(destPath); err == nil {
return fmt.Errorf("destination already exists: %s", destPath)
} else if !errors.Is(err, os.ErrNotExist) {
return err
}
if err := os.Rename(absPath, destPath); err != nil {
return err
}