diff --git a/server/handlers/wireguard/indexes/indexes.go b/server/handlers/wireguard/indexes/indexes.go index fce2081..3c58f77 100644 --- a/server/handlers/wireguard/indexes/indexes.go +++ b/server/handlers/wireguard/indexes/indexes.go @@ -1 +1,8 @@ package indexes + +import "config-lsp/handlers/wireguard/ast" + +type WGIndexes struct { + // map of: section name -> WGSection + SectionsByName map[string][]*ast.WGSection +} diff --git a/server/handlers/wireguard/indexes/indexes_handlers.go b/server/handlers/wireguard/indexes/indexes_handlers.go new file mode 100644 index 0000000..c332e70 --- /dev/null +++ b/server/handlers/wireguard/indexes/indexes_handlers.go @@ -0,0 +1,22 @@ +package indexes + +import ( + "config-lsp/common" + "config-lsp/handlers/wireguard/ast" +) + +func CreateIndexes(config *ast.WGConfig) (*WGIndexes, []common.LSPError) { + errs := make([]common.LSPError, 0) + indexes := &WGIndexes{ + SectionsByName: make(map[string][]*ast.WGSection), + } + + for _, section := range config.Sections { + indexes.SectionsByName[section.Header.Name] = append( + indexes.SectionsByName[section.Header.Name], + section, + ) + } + + return indexes, errs +}