package main

import (
	"strings"

	"github.com/go-ble/ble"
	"github.com/urfave/cli"
)

func filter(c *cli.Context) ble.AdvFilter {
	if c.String("name") != "" {
		return func(a ble.Advertisement) bool {
			return strings.ToLower(a.LocalName()) == strings.ToLower(c.String("name"))
		}
	}
	if c.String("addr") != "" {
		return func(a ble.Advertisement) bool {
			return a.Addr().String() == strings.ToLower(c.String("addr"))
		}
	}
	if svc := strings.ToLower(c.String("svc")); svc != "" {
		return func(a ble.Advertisement) bool {
			for _, s := range a.Services() {
				if s.String() == svc {
					return true
				}
			}
			return false
		}
	}
	return nil
}
