Commit c7d35e3a authored by Jack Greenfield's avatar Jack Greenfield

Merge pull request #44 from jackgr/require-schema

Require schema
parents af8817ae 34c9e42d
...@@ -98,15 +98,15 @@ func main() { ...@@ -98,15 +98,15 @@ func main() {
log.Fatalf("Cannot list %v err") log.Fatalf("Cannot list %v err")
} }
fmt.Printf("Types:") fmt.Printf("Types:\n")
for _, t := range types { 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) downloadURL, err := git.GetURL(t)
if err != nil { if err != nil {
log.Printf("Failed to get download URL for type %s:%s", t.Name, t.Version) 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": case "describe":
fmt.Printf("this feature is not yet implemented") fmt.Printf("this feature is not yet implemented")
......
...@@ -60,21 +60,32 @@ func (g *GithubRegistry) List() ([]Type, error) { ...@@ -60,21 +60,32 @@ func (g *GithubRegistry) List() ([]Type, error) {
return retTypes, nil 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) { func (g *GithubRegistry) GetURL(t Type) (string, error) {
_, dc, _, err := g.client.Repositories.GetContents(g.owner, g.repository, TypesDir+"/"+t.Name+"/"+t.Version, nil) _, dc, _, err := g.client.Repositories.GetContents(g.owner, g.repository, TypesDir+"/"+t.Name+"/"+t.Version, nil)
if err != nil { if err != nil {
log.Printf("Failed to list types : %v", err) log.Printf("Failed to list types : %v", err)
return "", err return "", err
} }
var downloadURL, typeName, schemaName string
for _, f := range dc { for _, f := range dc {
if *f.Type == "file" { if *f.Type == "file" {
if *f.Name == t.Name+".jinja" || *f.Name == t.Name+".py" { 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) { func (g *GithubRegistry) getDirs(dir string) ([]string, error) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment