Setup box metadata
This commit is contained in:
parent
52e9e49e4d
commit
8e005c9ee1
@ -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
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user