From 56befd0fefcc94a0e5e67336a8d52a61b8d62be6 Mon Sep 17 00:00:00 2001 From: Alex Clemmer <clemmer.alexander@gmail.com> Date: Wed, 8 Nov 2017 15:29:04 -0800 Subject: [PATCH] De/serialize specification objects with YAML Fixes #48. Currently the structs `app.Spec`, `registry.Spec`, and `parts.Spec` are all serialized and deserialized using JSON instead of YAML. This commit will resolve this issue. --- metadata/app/schema.go | 9 +++++---- metadata/manager.go | 4 ++-- metadata/parts/schema.go | 6 ++++-- metadata/registry.go | 4 ++-- metadata/registry/schema.go | 5 ++--- metadata/registry_managers.go | 6 +++--- prototype/interface.go | 4 ++-- 7 files changed, 20 insertions(+), 18 deletions(-) diff --git a/metadata/app/schema.go b/metadata/app/schema.go index e02de24a..570cd971 100644 --- a/metadata/app/schema.go +++ b/metadata/app/schema.go @@ -16,12 +16,13 @@ package app import ( - "encoding/json" "fmt" + + "github.com/ghodss/yaml" ) const ( - DefaultAPIVersion = "0.1" + DefaultAPIVersion = "0.0.1" Kind = "ksonnet.io/app" DefaultVersion = "0.0.1" ) @@ -46,7 +47,7 @@ type Spec struct { } func (s *Spec) Marshal() ([]byte, error) { - return json.MarshalIndent(s, "", " ") + return yaml.Marshal(s) } func (s *Spec) GetRegistryRef(name string) (*RegistryRefSpec, bool) { @@ -79,7 +80,7 @@ type RepositorySpec struct { } type RegistryRefSpec struct { - Name string + Name string `json:"-"` Protocol string `json:"protocol"` URI string `json:"uri"` GitVersion *GitVersionSpec `json:"gitVersion"` diff --git a/metadata/manager.go b/metadata/manager.go index 9aa1dc6a..19f6dd6e 100644 --- a/metadata/manager.go +++ b/metadata/manager.go @@ -16,7 +16,6 @@ package metadata import ( - "encoding/json" "fmt" "os" "os/user" @@ -24,6 +23,7 @@ import ( "path/filepath" "strings" + "github.com/ghodss/yaml" "github.com/ksonnet/ksonnet/metadata/app" param "github.com/ksonnet/ksonnet/metadata/params" "github.com/ksonnet/ksonnet/metadata/registry" @@ -299,7 +299,7 @@ func (m *manager) AppSpec() (*app.Spec, error) { } schema := app.Spec{} - err = json.Unmarshal(bytes, &schema) + err = yaml.Unmarshal(bytes, &schema) if err != nil { return nil, err } diff --git a/metadata/parts/schema.go b/metadata/parts/schema.go index 0c28790d..990d9065 100644 --- a/metadata/parts/schema.go +++ b/metadata/parts/schema.go @@ -15,7 +15,9 @@ package parts -import "encoding/json" +import ( + "github.com/ghodss/yaml" +) const ( DefaultApiVersion = "0.1" @@ -40,7 +42,7 @@ type Spec struct { } func (s *Spec) Marshal() ([]byte, error) { - return json.MarshalIndent(s, "", " ") + return yaml.Marshal(s) } type ContributorSpec struct { diff --git a/metadata/registry.go b/metadata/registry.go index f0ab341a..27cfddbb 100644 --- a/metadata/registry.go +++ b/metadata/registry.go @@ -1,11 +1,11 @@ package metadata import ( - "encoding/json" "fmt" "os" "path/filepath" + "github.com/ghodss/yaml" "github.com/ksonnet/ksonnet/metadata/app" "github.com/ksonnet/ksonnet/metadata/parts" "github.com/ksonnet/ksonnet/metadata/registry" @@ -254,7 +254,7 @@ func (m *manager) registrySpecFromFile(path AbsPath) (*registry.Spec, bool, erro } registrySpec := registry.Spec{} - err = json.Unmarshal(registrySpecBytes, ®istrySpec) + err = yaml.Unmarshal(registrySpecBytes, ®istrySpec) if err != nil { return nil, false, err } diff --git a/metadata/registry/schema.go b/metadata/registry/schema.go index 92b5a24a..a4ce51ff 100644 --- a/metadata/registry/schema.go +++ b/metadata/registry/schema.go @@ -16,8 +16,7 @@ package registry import ( - "encoding/json" - + "github.com/ghodss/yaml" "github.com/ksonnet/ksonnet/metadata/app" ) @@ -34,7 +33,7 @@ type Spec struct { } func (s *Spec) Marshal() ([]byte, error) { - return json.MarshalIndent(s, "", " ") + return yaml.Marshal(s) } type Specs []*Spec diff --git a/metadata/registry_managers.go b/metadata/registry_managers.go index 438d3ed0..78f53736 100644 --- a/metadata/registry_managers.go +++ b/metadata/registry_managers.go @@ -2,12 +2,12 @@ package metadata import ( "context" - "encoding/json" "fmt" "net/url" "path" "strings" + "github.com/ghodss/yaml" "github.com/google/go-github/github" "github.com/ksonnet/ksonnet/metadata/app" "github.com/ksonnet/ksonnet/metadata/parts" @@ -99,7 +99,7 @@ func (gh *gitHubRegistryManager) FetchRegistrySpec() (*registry.Spec, error) { // Deserialize, return. registrySpec := registry.Spec{} - err = json.Unmarshal([]byte(registrySpecText), ®istrySpec) + err = yaml.Unmarshal([]byte(registrySpecText), ®istrySpec) if err != nil { return nil, err } @@ -150,7 +150,7 @@ func (gh *gitHubRegistryManager) ResolveLibrary(libID, libAlias, libRefSpec stri } parts := parts.Spec{} - json.Unmarshal([]byte(partsSpecText), &parts) + yaml.Unmarshal([]byte(partsSpecText), &parts) refSpec := app.LibraryRefSpec{ Name: libAlias, diff --git a/prototype/interface.go b/prototype/interface.go index c7243e75..782884b6 100644 --- a/prototype/interface.go +++ b/prototype/interface.go @@ -1,12 +1,12 @@ package prototype -import "encoding/json" +import "github.com/ghodss/yaml" // Unmarshal takes the bytes of a JSON-encoded prototype specification, and // deserializes them to a `SpecificationSchema`. func Unmarshal(bytes []byte) (*SpecificationSchema, error) { var p SpecificationSchema - err := json.Unmarshal(bytes, &p) + err := yaml.Unmarshal(bytes, &p) if err != nil { return nil, err } -- GitLab