ParsePPA converts ppa URL like ppa:user/ppa-name to full HTTP url
(ppaURL string, config *utils.ConfigStructure)
| 13 | |
| 14 | // ParsePPA converts ppa URL like ppa:user/ppa-name to full HTTP url |
| 15 | func ParsePPA(ppaURL string, config *utils.ConfigStructure) (url string, distribution string, components []string, err error) { |
| 16 | matches := ppaRegexp.FindStringSubmatch(ppaURL) |
| 17 | if matches == nil { |
| 18 | err = fmt.Errorf("unable to parse ppa URL: %v", ppaURL) |
| 19 | return |
| 20 | } |
| 21 | |
| 22 | distributorID := config.PpaDistributorID |
| 23 | if distributorID == "" { |
| 24 | distributorID, err = getDistributorID() |
| 25 | if err != nil { |
| 26 | err = fmt.Errorf("unable to figure out Distributor ID: %s, please set config option ppaDistributorID", err) |
| 27 | return |
| 28 | } |
| 29 | } |
| 30 | |
| 31 | baseurl := config.PpaBaseURL |
| 32 | if baseurl == "" { |
| 33 | baseurl = "http://ppa.launchpad.net" |
| 34 | } |
| 35 | |
| 36 | codename := config.PpaCodename |
| 37 | if codename == "" { |
| 38 | codename, err = getCodename() |
| 39 | if err != nil { |
| 40 | err = fmt.Errorf("unable to figure out Codename: %s, please set config option ppaCodename", err) |
| 41 | return |
| 42 | } |
| 43 | } |
| 44 | |
| 45 | distribution = codename |
| 46 | components = []string{"main"} |
| 47 | url = fmt.Sprintf("%s/%s/%s/%s", baseurl, matches[1], matches[2], distributorID) |
| 48 | |
| 49 | return |
| 50 | } |
| 51 | |
| 52 | func getCodename() (string, error) { |
| 53 | out, err := exec.Command("lsb_release", "-sc").Output() |