mirror of
https://github.com/mcuadros/ascode
synced 2024-11-26 06:01:08 +01:00
provider: built-in function and test
Signed-off-by: Máximo Cuadros <mcuadros@gmail.com>
This commit is contained in:
parent
e26994b396
commit
07d0555a7e
14
plugins.go
14
plugins.go
@ -15,13 +15,13 @@ type PluginManager struct {
|
|||||||
Path string
|
Path string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PluginManager) Get(provider, version string) *plugin.Client {
|
func (m *PluginManager) Get(provider, version string) (*plugin.Client, discovery.PluginMeta) {
|
||||||
meta, ok := m.getLocal(provider, version)
|
meta, ok := m.getLocal(provider, version)
|
||||||
if !ok {
|
if !ok {
|
||||||
meta, ok = m.getRemote(provider, version)
|
meta, ok = m.getRemote(provider, version)
|
||||||
}
|
}
|
||||||
|
|
||||||
return client(meta)
|
return client(meta), meta
|
||||||
}
|
}
|
||||||
|
|
||||||
func client(m discovery.PluginMeta) *plugin.Client {
|
func client(m discovery.PluginMeta) *plugin.Client {
|
||||||
@ -42,14 +42,14 @@ func client(m discovery.PluginMeta) *plugin.Client {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *PluginManager) getRemote(provider, version string) (discovery.PluginMeta, bool) {
|
func (m *PluginManager) getRemote(provider, v string) (discovery.PluginMeta, bool) {
|
||||||
installer := &discovery.ProviderInstaller{
|
installer := &discovery.ProviderInstaller{
|
||||||
Dir: m.Path,
|
Dir: m.Path,
|
||||||
PluginProtocolVersion: discovery.PluginInstallProtocolVersion,
|
PluginProtocolVersion: discovery.PluginInstallProtocolVersion,
|
||||||
Ui: cli.NewMockUi(),
|
Ui: cli.NewMockUi(),
|
||||||
}
|
}
|
||||||
|
|
||||||
pm, _, err := installer.Get(provider, discovery.Constraints{})
|
pm, _, err := installer.Get(provider, discovery.ConstraintStr(v).MustParse())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@ -65,7 +65,11 @@ func (m *PluginManager) getLocal(provider, version string) (discovery.PluginMeta
|
|||||||
}
|
}
|
||||||
|
|
||||||
if version != "" {
|
if version != "" {
|
||||||
// set = set.WithVersion(version)
|
set = set.WithVersion(discovery.VersionStr(version).MustParse())
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(set) == 0 {
|
||||||
|
return discovery.PluginMeta{}, false
|
||||||
}
|
}
|
||||||
|
|
||||||
return set.Newest(), true
|
return set.Newest(), true
|
||||||
|
12
testdata/provider.star
vendored
Normal file
12
testdata/provider.star
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
load("assert.star", "assert")
|
||||||
|
|
||||||
|
p = provider("aws", "2.13.0")
|
||||||
|
assert.eq(p.version, "2.13.0")
|
||||||
|
|
||||||
|
assert.eq(len(dir(p.data)), 131)
|
||||||
|
assert.eq(len(dir(p.resource)), 506)
|
||||||
|
|
||||||
|
resources = dir(p.resource)
|
||||||
|
assert.contains(resources, "instance")
|
||||||
|
assert.eq(type(p.resource.instance), "builtin_function_or_method")
|
Loading…
Reference in New Issue
Block a user