2016-02-07 23:54:55 -08:00
|
|
|
/*
|
|
|
|
|
|
|
|
From the documentation for the go tool, it searches for the following header
|
|
|
|
when searching for packages:
|
|
|
|
|
|
|
|
<meta name="go-import" content="import-prefix vcs repo-root">
|
|
|
|
|
2016-02-08 00:15:22 -08:00
|
|
|
this is simply a service for aggregating a collection of prefix, vcs, and
|
|
|
|
repo-root tuples, and serving the appropriate header over http.
|
|
|
|
|
|
|
|
API
|
|
|
|
|
|
|
|
In order to add a new package POST a json object to the following route:
|
|
|
|
|
|
|
|
POST /v0/package/
|
|
|
|
|
|
|
|
A sample json object:
|
|
|
|
|
|
|
|
{
|
2016-02-11 11:57:16 -08:00
|
|
|
"path": "mcquay.me/vain",
|
|
|
|
"repo": "https://s.mcquay.me/sm/vain"
|
2016-02-08 00:15:22 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
Naming
|
|
|
|
|
2016-02-11 11:57:16 -08:00
|
|
|
the "ysv" in ysvd stands for You're so Vain, the song by Carly Simon.
|
2016-02-07 23:54:55 -08:00
|
|
|
*/
|
2016-02-11 11:57:16 -08:00
|
|
|
package vain
|
2016-02-07 23:54:55 -08:00
|
|
|
|
|
|
|
import "fmt"
|
|
|
|
|
|
|
|
type vcs int
|
|
|
|
|
|
|
|
const (
|
|
|
|
Git vcs = iota
|
|
|
|
Hg
|
|
|
|
)
|
|
|
|
|
|
|
|
var vcss = [...]string{
|
|
|
|
"git",
|
|
|
|
"mercurial",
|
|
|
|
}
|
|
|
|
|
|
|
|
var labelToVcs = map[string]vcs{
|
|
|
|
"git": Git,
|
|
|
|
"mercurial": Hg,
|
|
|
|
"hg": Hg,
|
|
|
|
}
|
|
|
|
|
|
|
|
// String returns the name of the vcs ("git", "mercurial", ...).
|
|
|
|
func (v vcs) String() string { return vcss[v] }
|
|
|
|
|
2016-02-08 00:14:30 -08:00
|
|
|
type Package struct {
|
2016-02-07 23:54:55 -08:00
|
|
|
Vcs vcs `json":vcs"`
|
|
|
|
Path string `json:"path"`
|
|
|
|
Repo string `json:"repo"`
|
|
|
|
}
|
|
|
|
|
2016-02-08 00:14:30 -08:00
|
|
|
func (p Package) String() string {
|
2016-02-07 23:54:55 -08:00
|
|
|
return fmt.Sprintf(
|
|
|
|
"<meta name=\"go-import\" content=\"%s %s %s\">",
|
|
|
|
p.Path,
|
|
|
|
p.Vcs,
|
|
|
|
p.Repo,
|
|
|
|
)
|
|
|
|
}
|