breaker-cli
What is breaker-cli?
breaker-cli is a CLI tool to generate a breaker implementation for a given interface.
Why breaker-cli?
To save time and effort in writing boilerplate code for a breaker implementation.
How to use breaker-cli?
Installation
go install github.com/chenyanchen/breaker/cmd/breaker-cli@latest
Usage
breaker-cli -h
Usage of breaker-cli:
-interface string
The interface name
-output string
The output file name, default to stdout
-package string
The packages named by the import paths
example:
interface:
type Filter interface {
Filter(ctx context.Context, elements []string) ([]string, error)
}
command:
breaker-cli -package=github.com/chenyanchen/filter -interface=Filter -output=path/to/filterbreaker.go
generated file:
// Code generated by breaker-cli. DO NOT EDIT.
// breaker-cli: https://github.com/chenyanchen/breaker/tree/main/cmd/breaker-cli
package cmd
import (
"context"
"github.com/chenyanchen/breaker"
"github.com/chenyanchen/filter"
)
type FilterBreaker struct {
source filter.Filter
breaker breaker.Breaker
}
func NewFilterBreaker(source filter.Filter) *FilterBreaker {
return &FilterBreaker{
source: source,
breaker: breaker.NewGoogleBreaker(),
}
}
func (b *FilterBreaker) Filter(ctx context.Context, elements []string) ([]string, error) {
var (
result0 []string
result1 error
)
result1 = b.breaker.Do(func() error {
result0, result1 = b.source.Filter(ctx, elements)
return result1
})
return result0, result1
}