completions.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "net/http"
  6. "os"
  7. alpm "github.com/jguer/go-alpm"
  8. )
  9. const fishShell = "fish"
  10. //CreateAURList creates a new completion file
  11. func createAURList(out *os.File) (err error) {
  12. resp, err := http.Get("https://aur.archlinux.org/packages.gz")
  13. if err != nil {
  14. return err
  15. }
  16. defer resp.Body.Close()
  17. scanner := bufio.NewScanner(resp.Body)
  18. scanner.Scan()
  19. for scanner.Scan() {
  20. fmt.Print(scanner.Text())
  21. out.WriteString(scanner.Text())
  22. if config.Shell == fishShell {
  23. fmt.Print("\tAUR\n")
  24. out.WriteString("\tAUR\n")
  25. } else {
  26. fmt.Print("\n")
  27. out.WriteString("\n")
  28. }
  29. }
  30. return nil
  31. }
  32. //CreatePackageList appends Repo packages to completion cache
  33. func createRepoList(out *os.File) (err error) {
  34. dbList, err := alpmHandle.SyncDbs()
  35. if err != nil {
  36. return
  37. }
  38. _ = dbList.ForEach(func(db alpm.Db) error {
  39. _ = db.PkgCache().ForEach(func(pkg alpm.Package) error {
  40. fmt.Print(pkg.Name())
  41. out.WriteString(pkg.Name())
  42. if config.Shell == fishShell {
  43. fmt.Print("\t" + pkg.DB().Name() + "\n")
  44. out.WriteString("\t" + pkg.DB().Name() + "\n")
  45. } else {
  46. fmt.Print("\n")
  47. out.WriteString("\n")
  48. }
  49. return nil
  50. })
  51. return nil
  52. })
  53. return nil
  54. }