Merge pull request #26 from libgo/code-read

A few minor tweaks.
This commit is contained in:
Gustavo Niemeyer 2014-09-27 19:57:37 -03:00
commit cda7bad625
4 changed files with 21 additions and 9 deletions

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# gopkg.in Stable APIs for the Go language
See [http://gopkg.in](http://gopkg.in).

14
main.go
View File

@ -29,9 +29,6 @@ func main() {
func run() error {
flag.Parse()
//if len(flag.Args()) > 0 {
// return fmt.Errorf("too many arguments: %s", flag.Args()[0])
//}
http.HandleFunc("/", handler)
@ -68,11 +65,12 @@ go get {{.GopkgPath}}
</html>
`))
// Repo represents a source code repository on GitHub.
type Repo struct {
User string
Name string
SubPath string
OldFormat bool
OldFormat bool // The old /v2/pkg format.
MajorVersion Version
AllVersions VersionList
}
@ -91,12 +89,12 @@ func (repo *Repo) GopkgRoot() string {
return repo.GopkgVersionRoot(repo.MajorVersion)
}
// GopkgRoot returns the package path at gopkg.in, without a schema.
// GopkgPath returns the package path at gopkg.in, without a schema.
func (repo *Repo) GopkgPath() string {
return repo.GopkgVersionRoot(repo.MajorVersion) + repo.SubPath
}
// GopkgVerisonRoot returns the package root in gopkg.in for the
// GopkgVersionRoot returns the package root in gopkg.in for the
// provided version, without a schema.
func (repo *Repo) GopkgVersionRoot(version Version) string {
version.Minor = -1
@ -222,8 +220,8 @@ var httpClient = &http.Client{Timeout: 10 * time.Second}
const refsSuffix = ".git/info/refs?service=git-upload-pack"
var ErrNoRepo = errors.New("repository not found in github")
var ErrNoVersion = errors.New("version reference not found in github")
var ErrNoRepo = errors.New("repository not found in GitHub")
var ErrNoVersion = errors.New("version reference not found in GitHub")
func hackedRefs(repo *Repo) (data []byte, versions []Version, err error) {
resp, err := httpClient.Get("https://" + repo.GitHubRoot() + refsSuffix)

View File

@ -4,6 +4,8 @@ import (
"fmt"
)
// Version represents a version number.
// An element that is not present is represented as -1.
type Version struct {
Major, Minor, Patch int
}
@ -21,6 +23,7 @@ func (v Version) String() string {
return fmt.Sprintf("v%d.%d.%d", v.Major, v.Minor, v.Patch)
}
// Less returns whether v is less than other.
func (v Version) Less(other Version) bool {
if v.Major != other.Major {
return v.Major < other.Major
@ -31,6 +34,12 @@ func (v Version) Less(other Version) bool {
return v.Patch < other.Patch
}
// Contains returns whether version v contains version other.
// Version v is defined to contain version other when they both have the same Major
// version and v.Minor and v.Patch are either undefined or are equal to other's.
//
// For example, Version{1, 1, -1} contains both Version{1, 1, -1} and Version{1, 1, 2},
// but not Version{1, -1, -1} or Version{1, 2, -1}.
func (v Version) Contains(other Version) bool {
if v.Patch != -1 {
return v == other
@ -45,6 +54,7 @@ func (v Version) IsValid() bool {
return v != InvalidVersion
}
// InvalidVersion represents a version that can't be parsed.
var InvalidVersion = Version{-1, -1, -1}
func parseVersion(s string) (Version, bool) {

View File

@ -1,8 +1,9 @@
package main
import (
. "launchpad.net/gocheck"
"testing"
. "gopkg.in/check.v1"
)
func Test(t *testing.T) { TestingT(t) }