func (b *bitbrew) Search(ctx context.Context, q string) (plugin.Plugins, error) {
	q = fmt.Sprintf("%s bitbar title desc repo:%s", q, pluginRepo)
	return b.github.Search(ctx, q)
}
Search is a wrapper for github.Search
package bitbrew
import (
	"context"
	"errors"
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"os"
	"path/filepath"
	"golang.org/x/sync/errgroup"
	"gopkg.in/yaml.v2"
	"github.com/micnncim/bitbrew/pkg/github"
	"github.com/micnncim/bitbrew/pkg/plugin"
)
const (
	pluginRepo = "matryer/bitbar-plugins"
)
type Bitbrew interface {
	Plugins() plugin.Plugins
	Search(ctx context.Context, q string) (plugin.Plugins, error)
	SearchByFilename(ctx context.Context, filename string) (plugin.Plugins, error)
	Load() error
	Save() error
	Install(p *plugin.Plugin) error
	Uninstall(p *plugin.Plugin) error
	Sync() (installed plugin.Plugins, uninstalled plugin.Plugins, err error)
}
type bitbrew struct {
	github       github.Service
	plugins      plugin.Plugins
	formulaPath  string
	pluginFolder string
}
var (
	ErrFormulaNotExist = errors.New("formula does not exist")
)
func New(gh github.Service, formulaPath, pluginFolder string) Bitbrew {
	return &bitbrew{
		github:       gh,
		formulaPath:  formulaPath,
		pluginFolder: pluginFolder,
	}
}
func (b *bitbrew) Plugins() plugin.Plugins {
	return b.plugins
}