34 lines
615 B
Go
34 lines
615 B
Go
package common
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"efprojects.com/kitten-ipc/kitcom/internal/api"
|
|
)
|
|
|
|
type Parser struct {
|
|
Files []string
|
|
}
|
|
|
|
func (p *Parser) AddFile(path string) {
|
|
p.Files = append(p.Files, path)
|
|
}
|
|
|
|
func (p *Parser) MapFiles(parseFile func(path string) ([]api.Endpoint, error)) (*api.Api, error) {
|
|
var apis api.Api
|
|
|
|
for _, f := range p.Files {
|
|
endpoints, err := parseFile(f)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("parse file: %w", err)
|
|
}
|
|
apis.Endpoints = append(apis.Endpoints, endpoints...)
|
|
}
|
|
|
|
if len(apis.Endpoints) == 0 {
|
|
return nil, fmt.Errorf("no endpoints found")
|
|
}
|
|
|
|
return &apis, nil
|
|
}
|