Setup box metadata

This commit is contained in:
sophia 2021-11-04 12:37:02 -05:00 committed by Paul Hinze
parent 52e9e49e4d
commit 8e005c9ee1
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0

View File

@ -1,50 +1,73 @@
package core
import "github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
import (
"encoding/json"
type BoxMetadata struct {
metadata *vagrant_server.BoxMetadata
}
"github.com/mitchellh/mapstructure"
)
func LoadBoxMetadata() (*BoxMetadata, error) {
// TODO
return &BoxMetadata{}, nil
}
func (b *BoxMetadata) Version(version string) (v *BoxVersion, err error) {
v, err = LoadBoxVersion()
return
}
func (b *BoxMetadata) Versions() ([]string, error) {
// TODO
return []string{}, nil
type BoxVersionProvider struct {
// provider *vagrant_server.BoxMetadata_Version_Provider
Name string
Url string
Checksum string
ChecksumType string
}
type BoxVersion struct {
version *vagrant_server.BoxMetadata_Version
}
func LoadBoxVersion() (*BoxVersion, error) {
// TODO
return &BoxVersion{}, nil
// version *vagrant_server.BoxMetadata_Version
Version string
State string
Description string
Providers []*BoxVersionProvider
}
func (b *BoxVersion) Provider(name string) (p *BoxVersionProvider, err error) {
p, err = LoadBoxVersionProvider()
for _, provider := range b.Providers {
if provider.Name == name {
return provider, nil
}
}
return
}
func (b *BoxVersion) Providers() ([]string, error) {
// TODO
return []string{}, nil
func (b *BoxVersion) ListProviders() ([]string, error) {
p := []string{}
for _, provider := range b.Providers {
p = append(p, provider.Name)
}
return p, nil
}
type BoxVersionProvider struct {
provider *vagrant_server.BoxMetadata_Version_Provider
type BoxMetadata struct {
Name string
Description string
Versions []*BoxVersion
// metadata *vagrant_server.BoxMetadata
}
func LoadBoxVersionProvider() (*BoxVersionProvider, error) {
// TODO
return &BoxVersionProvider{}, nil
func LoadBoxMetadata(data []byte) (*BoxMetadata, error) {
var metadata map[string]interface{}
if err := json.Unmarshal(data, &metadata); err != nil {
return nil, err
}
var result BoxMetadata
return &result, mapstructure.Decode(metadata, &result)
}
func (b *BoxMetadata) Version(version string) (v *BoxVersion, err error) {
for _, ver := range b.Versions {
if ver.Version == version {
return ver, nil
}
}
return
}
func (b *BoxMetadata) ListVersions() ([]string, error) {
v := []string{}
for _, version := range b.Versions {
v = append(v, version.Version)
}
return v, nil
}