Merge pull request #44 from jackgr/require-schema

Require schema
pull/32/merge
Jack Greenfield 9 years ago
commit c7d35e3a7d

@ -98,15 +98,15 @@ func main() {
log.Fatalf("Cannot list %v err")
}
fmt.Printf("Types:")
fmt.Printf("Types:\n")
for _, t := range types {
fmt.Printf("%s:%s", t.Name, t.Version)
fmt.Printf("%s:%s\n", t.Name, t.Version)
downloadURL, err := git.GetURL(t)
if err != nil {
log.Printf("Failed to get download URL for type %s:%s", t.Name, t.Version)
}
fmt.Printf("\tdownload URL: %s", downloadURL)
fmt.Printf("\tdownload URL: %s\n", downloadURL)
}
case "describe":
fmt.Printf("this feature is not yet implemented")

@ -60,21 +60,32 @@ func (g *GithubRegistry) List() ([]Type, error) {
return retTypes, nil
}
// GetURL fetches the download URL for a given Type.
// GetURL fetches the download URL for a given Type and checks for existence of a schema file.
func (g *GithubRegistry) GetURL(t Type) (string, error) {
_, dc, _, err := g.client.Repositories.GetContents(g.owner, g.repository, TypesDir+"/"+t.Name+"/"+t.Version, nil)
if err != nil {
log.Printf("Failed to list types : %v", err)
return "", err
}
var downloadURL, typeName, schemaName string
for _, f := range dc {
if *f.Type == "file" {
if *f.Name == t.Name+".jinja" || *f.Name == t.Name+".py" {
return *f.DownloadURL, nil
typeName = *f.Name
downloadURL = *f.DownloadURL
}
if *f.Name == t.Name+".jinja.schema" || *f.Name == t.Name+".py.schema" {
schemaName = *f.Name
}
}
}
return "", fmt.Errorf("Can not find type %s:%s", t.Name, t.Version)
if downloadURL == "" {
return "", fmt.Errorf("Can not find type %s:%s", t.Name, t.Version)
}
if schemaName == typeName + ".schema" {
return downloadURL, nil
}
return "", fmt.Errorf("Can not find schema for %s:%s, expected to find %s", t.Name, t.Version, typeName + ".schema")
}
func (g *GithubRegistry) getDirs(dir string) ([]string, error) {

Loading…
Cancel
Save