|
|
|
|
@ -15,7 +15,7 @@ import (
|
|
|
|
|
|
|
|
|
|
func Sync(packages []string) (*output.Result, error) { |
|
|
|
|
start := time.Now() |
|
|
|
|
log.Debug("Sync: starting...") |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: starting...\n") |
|
|
|
|
|
|
|
|
|
list, err := read.List() |
|
|
|
|
if err != nil { |
|
|
|
|
@ -32,35 +32,36 @@ func Sync(packages []string) (*output.Result, error) {
|
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
log.Debug("Sync: database fresh (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: database fresh (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
|
|
|
|
|
f, err := fetch.New() |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
defer f.Close() |
|
|
|
|
log.Debug("Sync: initialized fetcher (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: initialized fetcher (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
|
|
|
|
|
log.Debug("Sync: categorizing packages...") |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: categorizing packages...\n") |
|
|
|
|
pacmanPkgs, aurPkgs, err := categorizePackages(f, packages) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
log.Debug("Sync: packages categorized (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: packages categorized (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
|
|
|
|
|
if len(pacmanPkgs) > 0 { |
|
|
|
|
log.Debug("Sync: syncing %d pacman packages...", len(pacmanPkgs)) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: syncing %d pacman packages...\n", len(pacmanPkgs)) |
|
|
|
|
if err := sync.SyncPackages(pacmanPkgs, log.GetLogWriter()); err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
log.Debug("Sync: pacman packages synced (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: pacman packages synced (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, pkg := range aurPkgs { |
|
|
|
|
if slices.Contains(list, pkg) { |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: AUR package %s already installed, skipping...\n", pkg) |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
log.Debug("Sync: installing AUR package %s...", pkg) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: installing AUR package %s...\n", pkg) |
|
|
|
|
aurInfo, ok := f.GetAURPackage(pkg) |
|
|
|
|
if !ok { |
|
|
|
|
return nil, fmt.Errorf("AUR package not found in cache: %s", pkg) |
|
|
|
|
@ -68,18 +69,18 @@ func Sync(packages []string) (*output.Result, error) {
|
|
|
|
|
if err := sync.InstallAUR(pkg, aurInfo.PackageBase, log.GetLogWriter()); err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
log.Debug("Sync: AUR package %s installed (%.2fs)", pkg, time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: AUR package %s installed (%.2fs)\n", pkg, time.Since(start).Seconds()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.Debug("Sync: marking all as deps...") |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: marking all as deps...\n") |
|
|
|
|
markAllAsDeps() |
|
|
|
|
log.Debug("Sync: all marked as deps (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: all marked as deps (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
|
|
|
|
|
log.Debug("Sync: marking state packages as explicit...") |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: marking state packages as explicit...\n") |
|
|
|
|
if err := sync.MarkAs(packages, "explicit", log.GetLogWriter()); err != nil { |
|
|
|
|
fmt.Fprintf(os.Stderr, "warning: could not mark state packages as explicit: %v\n", err) |
|
|
|
|
} |
|
|
|
|
log.Debug("Sync: state packages marked as explicit (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: state packages marked as explicit (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
|
|
|
|
|
removed, err := cleanupOrphans() |
|
|
|
|
if err != nil { |
|
|
|
|
@ -94,7 +95,7 @@ func Sync(packages []string) (*output.Result, error) {
|
|
|
|
|
|
|
|
|
|
installedCount := max(after-before, 0) |
|
|
|
|
|
|
|
|
|
log.Debug("Sync: done (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] Sync: done (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
return &output.Result{ |
|
|
|
|
Installed: installedCount, |
|
|
|
|
Removed: removed, |
|
|
|
|
@ -103,7 +104,7 @@ func Sync(packages []string) (*output.Result, error) {
|
|
|
|
|
|
|
|
|
|
func categorizePackages(f *fetch.Fetcher, packages []string) (pacmanPkgs, aurPkgs []string, err error) { |
|
|
|
|
start := time.Now() |
|
|
|
|
log.Debug("categorizePackages: starting...") |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] categorizePackages: starting...\n") |
|
|
|
|
|
|
|
|
|
resolved, err := f.Resolve(packages) |
|
|
|
|
if err != nil { |
|
|
|
|
@ -123,13 +124,13 @@ func categorizePackages(f *fetch.Fetcher, packages []string) (pacmanPkgs, aurPkg
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.Debug("categorizePackages: done (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] categorizePackages: done (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
return pacmanPkgs, aurPkgs, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func markAllAsDeps() error { |
|
|
|
|
start := time.Now() |
|
|
|
|
log.Debug("markAllAsDeps: starting...") |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] markAllAsDeps: starting...\n") |
|
|
|
|
|
|
|
|
|
packages, err := read.List() |
|
|
|
|
if err != nil || len(packages) == 0 { |
|
|
|
|
@ -141,13 +142,13 @@ func markAllAsDeps() error {
|
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.Debug("markAllAsDeps: done (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] markAllAsDeps: done (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func cleanupOrphans() (int, error) { |
|
|
|
|
start := time.Now() |
|
|
|
|
log.Debug("cleanupOrphans: starting...") |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] cleanupOrphans: starting...\n") |
|
|
|
|
|
|
|
|
|
orphans, err := read.ListOrphans() |
|
|
|
|
if err != nil { |
|
|
|
|
@ -161,6 +162,6 @@ func cleanupOrphans() (int, error) {
|
|
|
|
|
return 0, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.Debug("cleanupOrphans: done (%.2fs)", time.Since(start).Seconds()) |
|
|
|
|
fmt.Fprintf(os.Stderr, "[debug] cleanupOrphans: done (%.2fs)\n", time.Since(start).Seconds()) |
|
|
|
|
return removed, nil |
|
|
|
|
} |
|
|
|
|
|