/
option_block_mapping.go
41 lines (36 loc) · 1.15 KB
/
option_block_mapping.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package modconfig
import (
"fmt"
"github.com/hashicorp/hcl/v2"
"github.com/turbot/pipe-fittings/hclhelpers"
"github.com/turbot/pipe-fittings/options"
)
type OptionsBlockFactory = func(*hcl.Block) (options.Options, hcl.Diagnostics)
// SteampipeOptionsBlockMapping is an OptionsBlockFactory used to map global steampipe options
// TODO KAI look at deprecations
func SteampipeOptionsBlockMapping(block *hcl.Block) (options.Options, hcl.Diagnostics) {
var diags hcl.Diagnostics
switch block.Labels[0] {
case options.ConnectionBlock:
return new(options.Connection), nil
case options.DatabaseBlock:
return new(options.Database), nil
case options.TerminalBlock:
return new(options.Terminal), nil
case options.GeneralBlock:
return new(options.General), nil
case options.QueryBlock:
return new(options.Query), nil
case options.CheckBlock:
return new(options.Check), nil
case options.PluginBlock:
return new(options.Plugin), nil
default:
diags = append(diags, &hcl.Diagnostic{
Severity: hcl.DiagError,
Summary: fmt.Sprintf("Unexpected options type '%s'", block.Type),
Subject: hclhelpers.BlockRangePointer(block),
})
return nil, diags
}
}