Always clean up cache
This commit is contained in:
parent
830f9c348d
commit
9ecd4e6f79
@ -8,6 +8,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@ -60,41 +61,8 @@ func Install(root string, pkgs []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, m := range ms {
|
for _, m := range ms {
|
||||||
already, err := db.IsInstalled(root, m)
|
if err := install(root, m); err != nil {
|
||||||
if err != nil {
|
return errors.Wrapf(err, "installing %v", m.Name)
|
||||||
return errors.Wrapf(err, "is installed %v", m.Name)
|
|
||||||
}
|
|
||||||
if already {
|
|
||||||
return errors.Errorf("%v already installed!", m.Name)
|
|
||||||
}
|
|
||||||
if err := verifyManifestIntegrity(root, m); err != nil {
|
|
||||||
return errors.Wrap(err, "verifying pkg integrity")
|
|
||||||
}
|
|
||||||
if err := expandPkgContents(root, m); err != nil {
|
|
||||||
if err := os.RemoveAll(filepath.Join(root, installed, string(m.Name))); err != nil {
|
|
||||||
err = errors.Wrap(err, "cleaning up")
|
|
||||||
}
|
|
||||||
return errors.Wrap(err, "verifying pkg contents")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := script(root, m, "pre-install"); err != nil {
|
|
||||||
return errors.Wrap(err, "pre-install")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := expandRoot(root, m); err != nil {
|
|
||||||
return errors.Wrap(err, "root expansion")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := script(root, m, "post-install"); err != nil {
|
|
||||||
return errors.Wrap(err, "pre-install")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := os.Remove(filepath.Join(cacheDir, m.Pkg())); err != nil {
|
|
||||||
return errors.Wrapf(err, "cleaning up pkg %v", m.Pkg())
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := db.AddInstalled(root, m); err != nil {
|
|
||||||
return errors.Wrapf(err, "adding ", m.Name)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -343,3 +311,49 @@ func expandRoot(root string, m pm.Meta) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func install(root string, m pm.Meta) error {
|
||||||
|
defer func() {
|
||||||
|
cached := filepath.Join(root, cache, m.Pkg())
|
||||||
|
if !fs.Exists(cached) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := os.Remove(cached); err != nil {
|
||||||
|
log.Printf("cleaning up cache: %v", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
already, err := db.IsInstalled(root, m)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrapf(err, "is installed %v", m.Name)
|
||||||
|
}
|
||||||
|
if already {
|
||||||
|
return errors.Errorf("%v already installed!", m.Name)
|
||||||
|
}
|
||||||
|
if err := verifyManifestIntegrity(root, m); err != nil {
|
||||||
|
return errors.Wrap(err, "verifying pkg integrity")
|
||||||
|
}
|
||||||
|
if err := expandPkgContents(root, m); err != nil {
|
||||||
|
if err := os.RemoveAll(filepath.Join(root, installed, string(m.Name))); err != nil {
|
||||||
|
err = errors.Wrap(err, "cleaning up")
|
||||||
|
}
|
||||||
|
return errors.Wrap(err, "verifying pkg contents")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := script(root, m, "pre-install"); err != nil {
|
||||||
|
return errors.Wrap(err, "pre-install")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := expandRoot(root, m); err != nil {
|
||||||
|
return errors.Wrap(err, "root expansion")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := script(root, m, "post-install"); err != nil {
|
||||||
|
return errors.Wrap(err, "pre-install")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := db.AddInstalled(root, m); err != nil {
|
||||||
|
return errors.Wrapf(err, "adding ", m.Name)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user