Reorder functions to follow public-first convention
This commit is contained in:
+21
-18
@@ -117,6 +117,9 @@ func Sync(packages []string, noCheck bool, prune bool) (*output.Result, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
// -----------------------------------------
|
||||
// private
|
||||
|
||||
func categorizePackages(f *fetch.Fetcher, packages []string) (pacmanPkgs, aurPkgs []string, err error) {
|
||||
start := time.Now()
|
||||
log.Debug("categorizePackages: starting...")
|
||||
@@ -143,24 +146,6 @@ func categorizePackages(f *fetch.Fetcher, packages []string) (pacmanPkgs, aurPkg
|
||||
return pacmanPkgs, aurPkgs, nil
|
||||
}
|
||||
|
||||
func markAllAsDeps() error {
|
||||
start := time.Now()
|
||||
log.Debug("markAllAsDeps: starting...")
|
||||
|
||||
packages, err := read.List()
|
||||
if err != nil || len(packages) == 0 {
|
||||
return fmt.Errorf("failed to list packages: %w", err)
|
||||
}
|
||||
|
||||
if err := sync.MarkAs(packages, "deps", log.GetLogWriter()); err != nil {
|
||||
log.Write([]byte(fmt.Sprintf("error: %v\n", err)))
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debug("markAllAsDeps: done (%.2fs)", time.Since(start).Seconds())
|
||||
return nil
|
||||
}
|
||||
|
||||
func cleanupOrphans() (int, error) {
|
||||
start := time.Now()
|
||||
log.Debug("cleanupOrphans: starting...")
|
||||
@@ -180,3 +165,21 @@ func cleanupOrphans() (int, error) {
|
||||
log.Debug("cleanupOrphans: done (%.2fs)", time.Since(start).Seconds())
|
||||
return removed, nil
|
||||
}
|
||||
|
||||
func markAllAsDeps() error {
|
||||
start := time.Now()
|
||||
log.Debug("markAllAsDeps: starting...")
|
||||
|
||||
packages, err := read.List()
|
||||
if err != nil || len(packages) == 0 {
|
||||
return fmt.Errorf("failed to list packages: %w", err)
|
||||
}
|
||||
|
||||
if err := sync.MarkAs(packages, "deps", log.GetLogWriter()); err != nil {
|
||||
log.Write([]byte(fmt.Sprintf("error: %v\n", err)))
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debug("markAllAsDeps: done (%.2fs)", time.Since(start).Seconds())
|
||||
return nil
|
||||
}
|
||||
|
||||
+64
-65
@@ -16,71 +16,6 @@ import (
|
||||
|
||||
var LockFile = "/var/lib/pacman/db.lock"
|
||||
|
||||
func List() ([]string, error) {
|
||||
start := time.Now()
|
||||
log.Debug("List: starting...")
|
||||
|
||||
cmd := exec.Command("pacman", "-Qq")
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list := strings.Split(strings.TrimSpace(string(output)), "\n")
|
||||
if list[0] == "" {
|
||||
list = nil
|
||||
}
|
||||
|
||||
log.Debug("List: done (%.2fs)", time.Since(start).Seconds())
|
||||
return list, nil
|
||||
}
|
||||
|
||||
func ExplicitList() ([]string, error) {
|
||||
start := time.Now()
|
||||
log.Debug("ExplicitList: starting...")
|
||||
|
||||
cmd := exec.Command("pacman", "-Qqe")
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list := strings.Split(strings.TrimSpace(string(output)), "\n")
|
||||
if len(list) > 0 && list[0] == "" {
|
||||
list = nil
|
||||
}
|
||||
|
||||
log.Debug("ExplicitList: done (%.2fs)", time.Since(start).Seconds())
|
||||
return list, nil
|
||||
}
|
||||
|
||||
func ListOrphans() ([]string, error) {
|
||||
start := time.Now()
|
||||
log.Debug("ListOrphans: starting...")
|
||||
|
||||
cmd := exec.Command("pacman", "-Qdtq")
|
||||
var stderr bytes.Buffer
|
||||
cmd.Stderr = &stderr
|
||||
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
// pacman -Qdtq exits 1 when there are no orphans, this isnt an error
|
||||
var exitErr *exec.ExitError
|
||||
if errors.As(err, &exitErr) && exitErr.ExitCode() == 1 && stderr.Len() == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
orphans := strings.Split(strings.TrimSpace(string(output)), "\n")
|
||||
if len(orphans) > 0 && orphans[0] == "" {
|
||||
orphans = orphans[1:]
|
||||
}
|
||||
|
||||
log.Debug("ListOrphans: done (%.2fs)", time.Since(start).Seconds())
|
||||
return orphans, nil
|
||||
}
|
||||
|
||||
func DBFreshness() (bool, error) {
|
||||
info, err := os.Stat(LockFile)
|
||||
if err != nil {
|
||||
@@ -148,3 +83,67 @@ func DryRun(packages []string) (*output.Result, error) {
|
||||
ToRemove: toRemove,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func ExplicitList() ([]string, error) {
|
||||
start := time.Now()
|
||||
log.Debug("ExplicitList: starting...")
|
||||
|
||||
cmd := exec.Command("pacman", "-Qqe")
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list := strings.Split(strings.TrimSpace(string(output)), "\n")
|
||||
if len(list) > 0 && list[0] == "" {
|
||||
list = nil
|
||||
}
|
||||
|
||||
log.Debug("ExplicitList: done (%.2fs)", time.Since(start).Seconds())
|
||||
return list, nil
|
||||
}
|
||||
|
||||
func List() ([]string, error) {
|
||||
start := time.Now()
|
||||
log.Debug("List: starting...")
|
||||
|
||||
cmd := exec.Command("pacman", "-Qq")
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list := strings.Split(strings.TrimSpace(string(output)), "\n")
|
||||
if list[0] == "" {
|
||||
list = nil
|
||||
}
|
||||
|
||||
log.Debug("List: done (%.2fs)", time.Since(start).Seconds())
|
||||
return list, nil
|
||||
}
|
||||
|
||||
func ListOrphans() ([]string, error) {
|
||||
start := time.Now()
|
||||
log.Debug("ListOrphans: starting...")
|
||||
|
||||
cmd := exec.Command("pacman", "-Qdtq")
|
||||
var stderr bytes.Buffer
|
||||
cmd.Stderr = &stderr
|
||||
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
var exitErr *exec.ExitError
|
||||
if errors.As(err, &exitErr) && exitErr.ExitCode() == 1 && stderr.Len() == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
orphans := strings.Split(strings.TrimSpace(string(output)), "\n")
|
||||
if len(orphans) > 0 && orphans[0] == "" {
|
||||
orphans = orphans[1:]
|
||||
}
|
||||
|
||||
log.Debug("ListOrphans: done (%.2fs)", time.Since(start).Seconds())
|
||||
return orphans, nil
|
||||
}
|
||||
|
||||
+98
-95
@@ -15,101 +15,6 @@ type Result struct {
|
||||
Removed int
|
||||
}
|
||||
|
||||
func SyncPackages(packages []string, logWriter io.Writer) error {
|
||||
start := time.Now()
|
||||
log.Debug("SyncPackages: starting...")
|
||||
|
||||
if logWriter == nil {
|
||||
logWriter = os.Stderr
|
||||
}
|
||||
|
||||
args := append([]string{"-S", "--needed", "--noconfirm"}, packages...)
|
||||
cmd := log.Command("pacman", args...)
|
||||
cmd.Stdout = logWriter
|
||||
cmd.Stderr = logWriter
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
return fmt.Errorf("pacman sync failed: %w", err)
|
||||
}
|
||||
|
||||
log.Debug("SyncPackages: done (%.2fs)", time.Since(start).Seconds())
|
||||
return nil
|
||||
}
|
||||
|
||||
func RefreshDB(logWriter io.Writer) error {
|
||||
start := time.Now()
|
||||
log.Debug("RefreshDB: starting...")
|
||||
|
||||
if logWriter == nil {
|
||||
logWriter = os.Stderr
|
||||
}
|
||||
|
||||
cmd := log.Command("pacman", "-Syy")
|
||||
cmd.Stdout = logWriter
|
||||
cmd.Stderr = logWriter
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to refresh pacman database: %w", err)
|
||||
}
|
||||
|
||||
log.Debug("RefreshDB: done (%.2fs)", time.Since(start).Seconds())
|
||||
return nil
|
||||
}
|
||||
|
||||
func MarkAs(packages []string, flag string, logWriter io.Writer) error {
|
||||
if len(packages) == 0 {
|
||||
return nil
|
||||
}
|
||||
start := time.Now()
|
||||
flagName := map[string]string{"deps": "asdeps", "explicit": "asexplicit"}[flag]
|
||||
log.Debug("MarkAs(%s): starting...", flag)
|
||||
|
||||
if logWriter == nil {
|
||||
logWriter = os.Stderr
|
||||
}
|
||||
|
||||
args := append([]string{"-D", "--" + flagName}, packages...)
|
||||
cmd := log.Command("pacman", args...)
|
||||
cmd.Stdout = logWriter
|
||||
cmd.Stderr = logWriter
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
return fmt.Errorf("mark as %s failed: %w", flag, err)
|
||||
}
|
||||
|
||||
log.Debug("MarkAs(%s): done (%.2fs)", flag, time.Since(start).Seconds())
|
||||
return nil
|
||||
}
|
||||
|
||||
func RemoveOrphans(orphans []string, logWriter io.Writer) (int, error) {
|
||||
start := time.Now()
|
||||
log.Debug("RemoveOrphans: starting...")
|
||||
|
||||
if logWriter == nil {
|
||||
logWriter = os.Stderr
|
||||
}
|
||||
|
||||
if len(orphans) == 0 {
|
||||
log.Debug("RemoveOrphans: done (no orphans) (%.2fs)", time.Since(start).Seconds())
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
args := make([]string, 0, 3+len(orphans))
|
||||
args = append(args, "pacman", "-Rns", "--noconfirm")
|
||||
args = append(args, orphans...)
|
||||
removeCmd := log.Command(args[0], args[1:]...)
|
||||
removeCmd.Stdout = logWriter
|
||||
removeCmd.Stderr = logWriter
|
||||
err := removeCmd.Run()
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("remove orphans failed: %w", err)
|
||||
}
|
||||
|
||||
count := len(orphans)
|
||||
|
||||
log.Debug("RemoveOrphans: done (%d) (%.2fs)", count, time.Since(start).Seconds())
|
||||
return count, nil
|
||||
}
|
||||
|
||||
func InstallAUR(pkgName string, packageBase string, logWriter io.Writer) error {
|
||||
start := time.Now()
|
||||
log.Debug("InstallAUR: starting...")
|
||||
@@ -166,6 +71,104 @@ func InstallAUR(pkgName string, packageBase string, logWriter io.Writer) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func MarkAs(packages []string, flag string, logWriter io.Writer) error {
|
||||
if len(packages) == 0 {
|
||||
return nil
|
||||
}
|
||||
start := time.Now()
|
||||
flagName := map[string]string{"deps": "asdeps", "explicit": "asexplicit"}[flag]
|
||||
log.Debug("MarkAs(%s): starting...", flag)
|
||||
|
||||
if logWriter == nil {
|
||||
logWriter = os.Stderr
|
||||
}
|
||||
|
||||
args := append([]string{"-D", "--" + flagName}, packages...)
|
||||
cmd := log.Command("pacman", args...)
|
||||
cmd.Stdout = logWriter
|
||||
cmd.Stderr = logWriter
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
return fmt.Errorf("mark as %s failed: %w", flag, err)
|
||||
}
|
||||
|
||||
log.Debug("MarkAs(%s): done (%.2fs)", flag, time.Since(start).Seconds())
|
||||
return nil
|
||||
}
|
||||
|
||||
func RefreshDB(logWriter io.Writer) error {
|
||||
start := time.Now()
|
||||
log.Debug("RefreshDB: starting...")
|
||||
|
||||
if logWriter == nil {
|
||||
logWriter = os.Stderr
|
||||
}
|
||||
|
||||
cmd := log.Command("pacman", "-Syy")
|
||||
cmd.Stdout = logWriter
|
||||
cmd.Stderr = logWriter
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to refresh pacman database: %w", err)
|
||||
}
|
||||
|
||||
log.Debug("RefreshDB: done (%.2fs)", time.Since(start).Seconds())
|
||||
return nil
|
||||
}
|
||||
|
||||
func RemoveOrphans(orphans []string, logWriter io.Writer) (int, error) {
|
||||
start := time.Now()
|
||||
log.Debug("RemoveOrphans: starting...")
|
||||
|
||||
if logWriter == nil {
|
||||
logWriter = os.Stderr
|
||||
}
|
||||
|
||||
if len(orphans) == 0 {
|
||||
log.Debug("RemoveOrphans: done (no orphans) (%.2fs)", time.Since(start).Seconds())
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
args := make([]string, 0, 3+len(orphans))
|
||||
args = append(args, "pacman", "-Rns", "--noconfirm")
|
||||
args = append(args, orphans...)
|
||||
removeCmd := log.Command(args[0], args[1:]...)
|
||||
removeCmd.Stdout = logWriter
|
||||
removeCmd.Stderr = logWriter
|
||||
err := removeCmd.Run()
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("remove orphans failed: %w", err)
|
||||
}
|
||||
|
||||
count := len(orphans)
|
||||
|
||||
log.Debug("RemoveOrphans: done (%d) (%.2fs)", count, time.Since(start).Seconds())
|
||||
return count, nil
|
||||
}
|
||||
|
||||
func SyncPackages(packages []string, logWriter io.Writer) error {
|
||||
start := time.Now()
|
||||
log.Debug("SyncPackages: starting...")
|
||||
|
||||
if logWriter == nil {
|
||||
logWriter = os.Stderr
|
||||
}
|
||||
|
||||
args := append([]string{"-S", "--needed", "--noconfirm"}, packages...)
|
||||
cmd := log.Command("pacman", args...)
|
||||
cmd.Stdout = logWriter
|
||||
cmd.Stderr = logWriter
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
return fmt.Errorf("pacman sync failed: %w", err)
|
||||
}
|
||||
|
||||
log.Debug("SyncPackages: done (%.2fs)", time.Since(start).Seconds())
|
||||
return nil
|
||||
}
|
||||
|
||||
// -----------------------------------------
|
||||
// private
|
||||
|
||||
func findPKGFile(pkgName string, dir string) (string, error) {
|
||||
entries, err := os.ReadDir(dir)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user