Sync with dataDir
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"io/fs"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -378,6 +379,67 @@ func Install(packagepath string, serial uint) error {
|
|||||||
|
|
||||||
var destDir = filepath.Join(cfg.Config.DataDir, name)
|
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)
|
f, err := os.Open(packagepath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -907,7 +969,7 @@ func Sync(url string) error {
|
|||||||
_, err = os.Stat(filepath.Join(PacketsDir, "index.db"))
|
_, err = os.Stat(filepath.Join(PacketsDir, "index.db"))
|
||||||
|
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
os.MkdirAll("/etc/packets", 0755)
|
os.MkdirAll(PacketsDir, 0755)
|
||||||
}
|
}
|
||||||
f, err := os.Create(filepath.Join(PacketsDir, "index.db"))
|
f, err := os.Create(filepath.Join(PacketsDir, "index.db"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -917,6 +979,122 @@ func Sync(url string) error {
|
|||||||
if _, err = io.Copy(f, resp.Body); err != nil {
|
if _, err = io.Copy(f, resp.Body); err != nil {
|
||||||
return err
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1076,6 +1254,68 @@ func Upgrade(packagepath string, og_realname string, serial uint) error {
|
|||||||
return fmt.Errorf("this package isn't installed")
|
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)
|
manifest, err := internal.ManifestReadXZ(packagepath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panic(err)
|
log.Panic(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user