Skip to content

Commit

Permalink
Add README for breaker-cli
Browse files Browse the repository at this point in the history
  • Loading branch information
chenyanchen committed Mar 14, 2024
1 parent fc66dc0 commit 5ef00ec
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 2 deletions.
86 changes: 86 additions & 0 deletions cmd/breaker-cli/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# 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

```bash
go install github.com/chenyanchen/breaker/cmd/breaker-cli@latest
```

### Usage

```bash
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:

```go
type Filter interface {
Filter(ctx context.Context, elements []string) ([]string, error)
}
```

command:

```bash
breaker-cli -package=github.com/chenyanchen/filter -interface=Filter -output=path/to/filterbreaker.go
```

generated file:

```go
// 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
}
```
4 changes: 2 additions & 2 deletions cmd/breaker-cli/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import (

func main() {
_package := flag.String("package", "", "The packages named by the import paths")
_interface := flag.String("interface", "", "(optional) The interfaces name")
output := flag.String("output", "", "The output file name")
_interface := flag.String("interface", "", "The interface name")
output := flag.String("output", "", "The output file name, default to stdout")
flag.Parse()

cfg := &packages.Config{Mode: packages.NeedName | packages.NeedTypes | packages.NeedTypesInfo}
Expand Down

0 comments on commit 5ef00ec

Please sign in to comment.