Sync with dataDir
This commit is contained in:
		@@ -11,6 +11,7 @@ import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/fs"
 | 
			
		||||
	"log"
 | 
			
		||||
	"net"
 | 
			
		||||
	"net/http"
 | 
			
		||||
@@ -378,6 +379,67 @@ func Install(packagepath string, serial uint) error {
 | 
			
		||||
 | 
			
		||||
	var destDir = filepath.Join(cfg.Config.DataDir, name)
 | 
			
		||||
 | 
			
		||||
	if cfg.Config.LastDataDir != cfg.Config.DataDir {
 | 
			
		||||
		fmt.Printf("Ooops... Data directory has been changed from (%s), to (%s), do you want to cancel the installation and Sync first?\n y/n? ", cfg.Config.LastDataDir, cfg.Config.DataDir)
 | 
			
		||||
 | 
			
		||||
		var answer string
 | 
			
		||||
 | 
			
		||||
		fmt.Scan(&answer)
 | 
			
		||||
 | 
			
		||||
		if answer == "y" || answer == "Y" {
 | 
			
		||||
			if err := os.MkdirAll(cfg.Config.DataDir, 0755); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			bar := progressbar.NewOptions64(-1,
 | 
			
		||||
				progressbar.OptionSetDescription("Moving ..."),
 | 
			
		||||
			)
 | 
			
		||||
 | 
			
		||||
			err := filepath.WalkDir(cfg.Config.LastDataDir, func(last string, d fs.DirEntry, walkErr error) error {
 | 
			
		||||
				if walkErr != nil {
 | 
			
		||||
					return walkErr
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if last == cfg.Config.LastDataDir {
 | 
			
		||||
					return nil
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				rel, err := filepath.Rel(cfg.Config.LastDataDir, last)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return err
 | 
			
		||||
				}
 | 
			
		||||
				dest := filepath.Join(cfg.Config.DataDir, rel)
 | 
			
		||||
 | 
			
		||||
				if d.IsDir() {
 | 
			
		||||
					return os.MkdirAll(dest, 0755)
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				return os.Rename(last, dest)
 | 
			
		||||
 | 
			
		||||
			})
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			f, err := os.OpenFile(filepath.Join(PacketsDir, "config.toml"), os.O_WRONLY, 0644)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			cfg.Config.LastDataDir = cfg.Config.DataDir
 | 
			
		||||
 | 
			
		||||
			encoder := toml.NewEncoder(f)
 | 
			
		||||
 | 
			
		||||
			err = encoder.Encode(cfg)
 | 
			
		||||
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				bar.Finish()
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			bar.Finish()
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	f, err := os.Open(packagepath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -907,7 +969,7 @@ func Sync(url string) error {
 | 
			
		||||
	_, err = os.Stat(filepath.Join(PacketsDir, "index.db"))
 | 
			
		||||
 | 
			
		||||
	if os.IsNotExist(err) {
 | 
			
		||||
		os.MkdirAll("/etc/packets", 0755)
 | 
			
		||||
		os.MkdirAll(PacketsDir, 0755)
 | 
			
		||||
	}
 | 
			
		||||
	f, err := os.Create(filepath.Join(PacketsDir, "index.db"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -917,6 +979,122 @@ func Sync(url string) error {
 | 
			
		||||
	if _, err = io.Copy(f, resp.Body); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if cfg.Config.LastDataDir != cfg.Config.DataDir {
 | 
			
		||||
		fmt.Printf("Ooops... Data directory has been changed on %s do you want to move the packages from (%s), to (%s)\n", filepath.Join(PacketsDir, "config.toml"), cfg.Config.LastDataDir, cfg.Config.DataDir)
 | 
			
		||||
		fmt.Println("What you want to do?")
 | 
			
		||||
		fmt.Println("[y] Yes [n] No, [x] Ignore it and stop to show this message (not recommended)")
 | 
			
		||||
	}
 | 
			
		||||
	var answer string
 | 
			
		||||
	fmt.Scanln(&answer)
 | 
			
		||||
 | 
			
		||||
	switch answer {
 | 
			
		||||
	case "n":
 | 
			
		||||
		fmt.Println("Just ignoring...")
 | 
			
		||||
 | 
			
		||||
	case "x":
 | 
			
		||||
		f, err := os.OpenFile(filepath.Join(PacketsDir, "config.toml"), os.O_WRONLY, 0644)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		cfg.Config.LastDataDir = cfg.Config.DataDir
 | 
			
		||||
 | 
			
		||||
		encoder := toml.NewEncoder(f)
 | 
			
		||||
 | 
			
		||||
		err = encoder.Encode(cfg)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	case "y":
 | 
			
		||||
		if err := os.MkdirAll(cfg.Config.DataDir, 0755); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bar := progressbar.NewOptions64(-1,
 | 
			
		||||
			progressbar.OptionSetDescription("Moving ..."),
 | 
			
		||||
		)
 | 
			
		||||
 | 
			
		||||
		err := filepath.WalkDir(cfg.Config.LastDataDir, func(last string, d fs.DirEntry, walkErr error) error {
 | 
			
		||||
			if walkErr != nil {
 | 
			
		||||
				return walkErr
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if last == cfg.Config.LastDataDir {
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			rel, err := filepath.Rel(cfg.Config.LastDataDir, last)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			dest := filepath.Join(cfg.Config.DataDir, rel)
 | 
			
		||||
 | 
			
		||||
			if d.IsDir() {
 | 
			
		||||
				return os.MkdirAll(dest, 0755)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return os.Rename(last, dest)
 | 
			
		||||
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		f, err := os.OpenFile(filepath.Join(PacketsDir, "config.toml"), os.O_WRONLY, 0644)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		cfg.Config.LastDataDir = cfg.Config.DataDir
 | 
			
		||||
 | 
			
		||||
		encoder := toml.NewEncoder(f)
 | 
			
		||||
 | 
			
		||||
		err = encoder.Encode(cfg)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		bar.Finish()
 | 
			
		||||
 | 
			
		||||
	default:
 | 
			
		||||
		if err := os.MkdirAll(cfg.Config.DataDir, 0755); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bar := progressbar.NewOptions64(-1,
 | 
			
		||||
			progressbar.OptionSetDescription("Moving ..."),
 | 
			
		||||
		)
 | 
			
		||||
 | 
			
		||||
		err := filepath.WalkDir(cfg.Config.LastDataDir, func(last string, d fs.DirEntry, walkErr error) error {
 | 
			
		||||
			if walkErr != nil {
 | 
			
		||||
				return walkErr
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if last == cfg.Config.LastDataDir {
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			rel, err := filepath.Rel(cfg.Config.LastDataDir, last)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			dest := filepath.Join(cfg.Config.DataDir, rel)
 | 
			
		||||
 | 
			
		||||
			if d.IsDir() {
 | 
			
		||||
				return os.MkdirAll(dest, 0755)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return os.Rename(last, dest)
 | 
			
		||||
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		bar.Finish()
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1076,6 +1254,68 @@ func Upgrade(packagepath string, og_realname string, serial uint) error {
 | 
			
		||||
		return fmt.Errorf("this package isn't installed")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if cfg.Config.LastDataDir != cfg.Config.DataDir {
 | 
			
		||||
		fmt.Printf("Ooops... Data directory has been changed from (%s), to (%s), do you want to cancel the installation and Sync first?\n y/n? ", cfg.Config.LastDataDir, cfg.Config.DataDir)
 | 
			
		||||
 | 
			
		||||
		var answer string
 | 
			
		||||
 | 
			
		||||
		fmt.Scan(&answer)
 | 
			
		||||
 | 
			
		||||
		if answer == "y" || answer == "Y" {
 | 
			
		||||
			if err := os.MkdirAll(cfg.Config.DataDir, 0755); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			bar := progressbar.NewOptions64(-1,
 | 
			
		||||
				progressbar.OptionSetDescription("Moving ..."),
 | 
			
		||||
			)
 | 
			
		||||
 | 
			
		||||
			err := filepath.WalkDir(cfg.Config.LastDataDir, func(last string, d fs.DirEntry, walkErr error) error {
 | 
			
		||||
				if walkErr != nil {
 | 
			
		||||
					return walkErr
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if last == cfg.Config.LastDataDir {
 | 
			
		||||
					return nil
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				rel, err := filepath.Rel(cfg.Config.LastDataDir, last)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return err
 | 
			
		||||
				}
 | 
			
		||||
				dest := filepath.Join(cfg.Config.DataDir, rel)
 | 
			
		||||
 | 
			
		||||
				if d.IsDir() {
 | 
			
		||||
					return os.MkdirAll(dest, 0755)
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				return os.Rename(last, dest)
 | 
			
		||||
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			f, err := os.OpenFile(filepath.Join(PacketsDir, "config.toml"), os.O_WRONLY, 0644)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			cfg.Config.LastDataDir = cfg.Config.DataDir
 | 
			
		||||
 | 
			
		||||
			encoder := toml.NewEncoder(f)
 | 
			
		||||
 | 
			
		||||
			err = encoder.Encode(cfg)
 | 
			
		||||
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				bar.Finish()
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			bar.Finish()
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	manifest, err := internal.ManifestReadXZ(packagepath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Panic(err)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user