File: parser.go

package info (click to toggle)
golang-github-muka-go-bluetooth 5.60-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 2,688 kB
  • sloc: makefile: 92; sh: 2
file content (61 lines) | stat: -rw-r--r-- 1,293 bytes parent folder | download
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package gen

import (
	"strings"

	"github.com/muka/go-bluetooth/gen/filters"
	"github.com/muka/go-bluetooth/gen/parser"
	"github.com/muka/go-bluetooth/gen/types"
	"github.com/muka/go-bluetooth/gen/util"
	log "github.com/sirupsen/logrus"
)

// Parse bluez DBus API docs
func Parse(docsDir string, filtersList []filters.Filter, debug bool) (BluezAPI, error) {
	files, err := util.ListFiles(docsDir)
	if err != nil {
		return BluezAPI{}, err
	}
	apis := make([]*types.ApiGroup, 0)
	for _, file := range files {

		keep := true
		if len(filtersList) > 0 {
			keep = false
			for _, filter1 := range filtersList {
				if filter1.Context != filters.FilterFile {
					continue
				}
				if strings.Contains(file, filter1.Value) {
					keep = true
					if debug {
						log.Debugf("[filter %s] Keep %s", filter1.Value, file)
					}
					break
				}
			}
		}

		if !keep {
			continue
		}

		apiGroupParser := parser.NewApiGroupParser(debug, filtersList)
		apiGroup, err := apiGroupParser.Parse(file)
		if err != nil {
			log.Errorf("Failed to load %s, skipped", file)
			continue
		}
		apis = append(apis, apiGroup)
	}

	version, err := util.GetGitVersion(docsDir)
	if err != nil {
		log.Errorf("Failed to parse version: %s", err)
	}

	return BluezAPI{
		Version: version,
		Api:     apis,
	}, nil
}