completions.go 1.2 KB

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