~elementary-os/elementaryos/os-patch-aptly-xenial

« back to all changes in this revision

Viewing changes to src/github.com/smira/aptly/deb/ppa.go

  • Committer: RabbitBot
  • Date: 2016-07-19 12:29:41 UTC
  • Revision ID: rabbitbot@elementary.io-20160719122941-z6gaxs7nzgmratry
Initial import, version 0.9.6-1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package deb
 
2
 
 
3
import (
 
4
        "fmt"
 
5
        "github.com/smira/aptly/utils"
 
6
        "os/exec"
 
7
        "regexp"
 
8
        "strings"
 
9
)
 
10
 
 
11
var ppaRegexp = regexp.MustCompile("^ppa:([^/]+)/(.+)$")
 
12
 
 
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)
 
16
        if matches == nil {
 
17
                err = fmt.Errorf("unable to parse ppa URL: %v", ppaURL)
 
18
                return
 
19
        }
 
20
 
 
21
        distributorID := config.PpaDistributorID
 
22
        if distributorID == "" {
 
23
                distributorID, err = getDistributorID()
 
24
                if err != nil {
 
25
                        err = fmt.Errorf("unable to figure out Distributor ID: %s, please set config option ppaDistributorID", err)
 
26
                        return
 
27
                }
 
28
        }
 
29
 
 
30
        codename := config.PpaCodename
 
31
        if codename == "" {
 
32
                codename, err = getCodename()
 
33
                if err != nil {
 
34
                        err = fmt.Errorf("unable to figure out Codename: %s, please set config option ppaCodename", err)
 
35
                        return
 
36
                }
 
37
        }
 
38
 
 
39
        distribution = codename
 
40
        components = []string{"main"}
 
41
        url = fmt.Sprintf("http://ppa.launchpad.net/%s/%s/%s", matches[1], matches[2], distributorID)
 
42
 
 
43
        return
 
44
}
 
45
 
 
46
func getCodename() (string, error) {
 
47
        out, err := exec.Command("lsb_release", "-sc").Output()
 
48
        return strings.TrimSpace(string(out)), err
 
49
}
 
50
 
 
51
func getDistributorID() (string, error) {
 
52
        out, err := exec.Command("lsb_release", "-si").Output()
 
53
        return strings.ToLower(strings.TrimSpace(string(out))), err
 
54
}