12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package download
- import (
- "errors"
- "io/ioutil"
- "net/http"
- "net/url"
- )
- var ErrInvalidRepository = errors.New("invalid repository")
- var ErrABSPackageNotFound = errors.New("package not found in repos")
- const MaxConcurrentFetch = 20
- const ABSPackageURL = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/PKGBUILD?"
- const ABSCommunityURL = "https://git.archlinux.org/svntogit/community.git/plain/trunk/PKGBUILD?"
- func getPackageURL(db, pkgName string) (string, error) {
- values := url.Values{}
- values.Set("h", "packages/"+pkgName)
- nameEncoded := values.Encode()
- switch db {
- case "core", "extra", "testing":
- return ABSPackageURL + nameEncoded, nil
- case "community", "multilib", "community-testing", "multilib-testing":
- return ABSCommunityURL + nameEncoded, nil
- }
- return "", ErrInvalidRepository
- }
- func GetABSPkgbuild(dbName, pkgName string) ([]byte, error) {
- packageURL, err := getPackageURL(dbName, pkgName)
- if err != nil {
- return nil, err
- }
- resp, err := http.Get(packageURL)
- if err != nil {
- return nil, err
- }
- defer resp.Body.Close()
- pkgBuild, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- return nil, err
- }
- return pkgBuild, nil
- }
|