5
"github.com/smira/aptly/utils"
11
var ppaRegexp = regexp.MustCompile("^ppa:([^/]+)/(.+)$")
13
// ParsePPA converts ppa URL like ppa:user/ppa-name to full HTTP url
14
func ParsePPA(ppaURL string, config *utils.ConfigStructure) (url string, distribution string, components []string, err error) {
15
matches := ppaRegexp.FindStringSubmatch(ppaURL)
17
err = fmt.Errorf("unable to parse ppa URL: %v", ppaURL)
21
distributorID := config.PpaDistributorID
22
if distributorID == "" {
23
distributorID, err = getDistributorID()
25
err = fmt.Errorf("unable to figure out Distributor ID: %s, please set config option ppaDistributorID", err)
30
codename := config.PpaCodename
32
codename, err = getCodename()
34
err = fmt.Errorf("unable to figure out Codename: %s, please set config option ppaCodename", err)
39
distribution = codename
40
components = []string{"main"}
41
url = fmt.Sprintf("http://ppa.launchpad.net/%s/%s/%s", matches[1], matches[2], distributorID)
46
func getCodename() (string, error) {
47
out, err := exec.Command("lsb_release", "-sc").Output()
48
return strings.TrimSpace(string(out)), err
51
func getDistributorID() (string, error) {
52
out, err := exec.Command("lsb_release", "-si").Output()
53
return strings.ToLower(strings.TrimSpace(string(out))), err