mirror of
https://github.com/mudler/luet.git
synced 2025-09-25 14:38:50 +00:00
Add luet reclaim
Reclaim allows to migrate between different system layouts. This is a experimental feature (yet) and might be revisited in the future. This change: - Adds Reclaim(system) to Installer - Adds unit tests Relates to #86
This commit is contained in:
@@ -206,6 +206,47 @@ func (l *LuetInstaller) download(syncedRepos Repositories, cp pkg.Packages) erro
|
||||
return nil
|
||||
}
|
||||
|
||||
// Reclaim adds packages to the system database
|
||||
// if files from artifacts in the repositories are found
|
||||
// in the system target
|
||||
func (l *LuetInstaller) Reclaim(s *System) error {
|
||||
syncedRepos, err := l.SyncRepositories(true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var toMerge []ArtifactMatch = []ArtifactMatch{}
|
||||
|
||||
for _, repo := range syncedRepos {
|
||||
for _, artefact := range repo.GetIndex() {
|
||||
FILES:
|
||||
for _, f := range artefact.GetFiles() {
|
||||
if helpers.Exists(filepath.Join(s.Target, f)) {
|
||||
toMerge = append(toMerge, ArtifactMatch{Artifact: artefact, Package: artefact.GetCompileSpec().GetPackage()})
|
||||
break FILES
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, match := range toMerge {
|
||||
pack := match.Package
|
||||
vers, _ := s.Database.FindPackageVersions(pack)
|
||||
|
||||
if len(vers) >= 1 {
|
||||
Warning("Filtering out package " + pack.HumanReadableString() + ", already reclaimed")
|
||||
continue
|
||||
}
|
||||
_, err := s.Database.CreatePackage(pack)
|
||||
if err != nil && !l.Options.Force {
|
||||
return errors.Wrap(err, "Failed creating package")
|
||||
}
|
||||
s.Database.SetPackageFiles(&pkg.PackageFile{PackageFingerprint: pack.GetFingerPrint(), Files: match.Artifact.GetFiles()})
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (l *LuetInstaller) install(syncedRepos Repositories, cp pkg.Packages, s *System) error {
|
||||
var p pkg.Packages
|
||||
|
||||
|
Reference in New Issue
Block a user