Skip to content

Commit

Permalink
Merge pull request #12 from MediaMath/feature/gomod
Browse files Browse the repository at this point in the history
#2020
  • Loading branch information
Kevin Mulvey authored Jun 30, 2020
2 parents 101b679 + 62c327a commit 7020fda
Show file tree
Hide file tree
Showing 112 changed files with 32,805 additions and 86 deletions.
20 changes: 15 additions & 5 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
---
version: 2
version: 2.1
jobs:
build:
docker:
- image: circleci/golang:1.11
working_directory: /go/src/github.com/MediaMath/sr
docker:
- image: 'circleci/golang:1.14'
steps:
- run:
name: get golangci-lint
command: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.27.0
- checkout
- run: make test
- run:
name: lint
command: make lint
- run:
name: test
command: make test
- run:
name: build
command: make build
28 changes: 6 additions & 22 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,24 +1,8 @@
.PHONY: test golint dep
lint:
golangci-lint run --issues-exit-code 0

# Copyright 2015 MediaMath <http://www.mediamath.com>. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

ifeq ($(CIRCLECI),true)
TEST_RACE=
else
TEST_RACE=-race
endif

test: golint dep
golint ./...
go vet ./...
go test $(VERBOSITY) $(TEST_RACE) ./...

golint:
go get github.com/golang/lint/golint

dep:
go get gopkg.in/stretchr/testify.v1
go get ./...
test:
go test -v -count 1 -race -mod vendor -parallel 10 ./...

build:
go build -v -mod vendor -ldflags="-s -w" ./...
8 changes: 8 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module github.com/MediaMath/sr

go 1.14

require (
github.com/stretchr/testify v1.6.1
github.com/urfave/cli/v2 v2.2.0
)
21 changes: 21 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4=
github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
116 changes: 64 additions & 52 deletions sr/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,29 @@ import (
"strconv"

"github.com/MediaMath/sr"
"github.com/codegangsta/cli"
"github.com/urfave/cli/v2"
)

func main() {
app := cli.NewApp()
app.Name = "sr"
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "host",
EnvVar: "SCHEMA_REGISTRY_URL",
Usage: "url to the schema registry",
&cli.StringFlag{
Name: "host",
EnvVars: []string{"SCHEMA_REGISTRY_URL"},
Usage: "url to the schema registry",
},
cli.BoolFlag{
&cli.BoolFlag{
Name: "verbose",
Usage: "be more wordy",
},
cli.BoolFlag{
&cli.BoolFlag{
Name: "pretty",
Usage: "pretty print output",
},
}

app.Commands = []cli.Command{
app.Commands = []*cli.Command{
{
Name: "stupid",
Usage: "sr ls foo 12 | sr stupid",
Expand Down Expand Up @@ -85,49 +85,55 @@ func main() {
},
}

app.Run(os.Args)
var err = app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}

func setConfig(ctx *cli.Context) {
if len(ctx.Args()) != 2 {
func setConfig(ctx *cli.Context) error {
if ctx.Args().Len() != 2 {
log.Fatal("sr set-config SUBJECT LEVEL")
}

address := getAddress(ctx)
out(sr.SetSubjectCompatibility(client(ctx), address, sr.Subject(ctx.Args()[0]), sr.Compatibility(ctx.Args()[1])))
out(sr.SetSubjectCompatibility(client(ctx), address, sr.Subject(ctx.Args().First()), sr.Compatibility(ctx.Args().Get(1))))
return nil
}

func config(ctx *cli.Context) {
func config(ctx *cli.Context) error {
address := getAddress(ctx)
argCount := len(ctx.Args())
argCount := ctx.Args().Len()
switch argCount {
case 0:
out(sr.GetDefaultCompatibility(client(ctx), address))
case 1:
out(sr.GetSubjectDerivedCompatibility(client(ctx), address, sr.Subject(ctx.Args()[0])))
out(sr.GetSubjectDerivedCompatibility(client(ctx), address, sr.Subject(ctx.Args().First())))
default:
log.Fatal("usage sr config [subject]")
}
return nil
}

func schema(ctx *cli.Context) {
if len(ctx.Args()) != 1 {
func schema(ctx *cli.Context) error {
if ctx.Args().Len() != 1 {
log.Fatal("sr schema ID")
}

id, err := strconv.Atoi(ctx.Args()[0])
id, err := strconv.Atoi(ctx.Args().First())
if err != nil {
log.Fatal(err)
return err
}

address := getAddress(ctx)

out(sr.GetSchema(client(ctx), address, uint32(id)))
return nil
}

func ls(ctx *cli.Context) {
func ls(ctx *cli.Context) error {
address := getAddress(ctx)
argCount := len(ctx.Args())
argCount := ctx.Args().Len()
switch argCount {
case 0:
subjects, err := sr.ListSubjects(client(ctx), address)
Expand All @@ -139,130 +145,136 @@ func ls(ctx *cli.Context) {
fmt.Println(string(subject))
}
case 1:
out(sr.ListVersions(client(ctx), address, sr.Subject(ctx.Args()[0])))
out(sr.ListVersions(client(ctx), address, sr.Subject(ctx.Args().First())))
case 2:
_, schema, err := sr.GetVersion(client(ctx), address, sr.Subject(ctx.Args()[0]), ctx.Args()[1])
_, schema, err := sr.GetVersion(client(ctx), address, sr.Subject(ctx.Args().First()), ctx.Args().Get(1))
out(schema, err)
default:
log.Fatal("usage sr ls [subject] [version]")
}
return nil
}

func compatible(ctx *cli.Context) {
func compatible(ctx *cli.Context) error {
address := getAddress(ctx)

if len(ctx.Args()) < 2 {
if ctx.Args().Len() < 2 {
log.Fatal("usage sr compatible [subject] [version] [name of file | stdin]")
}

subject := ctx.Args()[0]
version := ctx.Args()[1]
subject := ctx.Args().First()
version := ctx.Args().Get(1)

inputFile, err := getStdinOrFile(ctx, 2)
if err != nil {
log.Fatal(err)
return err
}

schemaString, err := ioutil.ReadAll(inputFile)
if err != nil {
log.Fatal(err)
return err
}

out(sr.IsCompatible(client(ctx), address, sr.Subject(subject), version, sr.Schema(schemaString)))
return nil
}

func exists(ctx *cli.Context) {
func exists(ctx *cli.Context) error {
address := getAddress(ctx)

if len(ctx.Args()) < 1 {
if ctx.Args().Len() < 1 {
log.Fatal("usage sr exists [subject] [name of file | stdin]")
}

subject := ctx.Args()[0]
subject := ctx.Args().First()

inputFile, err := getStdinOrFile(ctx, 1)
if err != nil {
log.Fatal(err)
return err
}

schemaString, err := ioutil.ReadAll(inputFile)
if err != nil {
log.Fatal(err)
return err
}

version, id, err := sr.HasSchema(client(ctx), address, sr.Subject(subject), sr.Schema(schemaString))
out(fmt.Sprintf("%v %v", version, id), err)
return err
}

func add(ctx *cli.Context) {
func add(ctx *cli.Context) error {
address := getAddress(ctx)

if len(ctx.Args()) < 1 {
if ctx.Args().Len() < 1 {
log.Fatal("usage sr add [subject] [name of file | stdin]")
}

subject := ctx.Args()[0]
subject := ctx.Args().First()

inputFile, err := getStdinOrFile(ctx, 1)
if err != nil {
log.Fatal(err)
return err
}

schemaString, err := ioutil.ReadAll(inputFile)
if err != nil {
log.Fatal(err)
return err
}

id, err := sr.Register(http.DefaultClient, address, sr.Subject(subject), sr.Schema(string(schemaString)))
if err != nil {
log.Fatal(err)
return err
}
fmt.Printf("%v", id)
return nil
}

func stupid(ctx *cli.Context) {
func stupid(ctx *cli.Context) error {
inputFile, err := getStdinOrFile(ctx, 0)
if err != nil {
log.Fatal(err)
return err
}

notStupid, err := ioutil.ReadAll(inputFile)
if err != nil {
log.Fatal(err)
return err
}

schema := string(notStupid)

stupid := &sr.SchemaJSON{Schema: sr.Schema(schema)}
b, err := json.Marshal(stupid)
if err != nil {
log.Fatal(err)
return err
}

fmt.Println(string(b))

return nil
}

func unstupid(ctx *cli.Context) {
func unstupid(ctx *cli.Context) error {
inputFile, err := getStdinOrFile(ctx, 0)
if err != nil {
log.Fatal(err)
return err
}

stupidSchema, err := ioutil.ReadAll(inputFile)
if err != nil {
log.Fatal(err)
return err
}

schema := &sr.SchemaJSON{}
err = json.Unmarshal(stupidSchema, schema)
if err != nil {
log.Fatal(err)
return err
}

jsonObjs := make(map[string]interface{})
err = json.Unmarshal([]byte(schema.Schema), &jsonObjs)
output(ctx, jsonObjs, err)
return err
}

func output(ctx *cli.Context, resp interface{}, err error) {
Expand All @@ -271,7 +283,7 @@ func output(ctx *cli.Context, resp interface{}, err error) {
}

var r []byte
if ctx.GlobalBool("pretty") {
if ctx.Bool("pretty") {
r, err = json.MarshalIndent(resp, "", "\t")
} else {
r, err = json.Marshal(resp)
Expand All @@ -286,8 +298,8 @@ func output(ctx *cli.Context, resp interface{}, err error) {

func getStdinOrFile(ctx *cli.Context, index int) (r io.Reader, err error) {
r = os.Stdin
if len(ctx.Args()) > index {
r, err = os.Open(ctx.Args()[index])
if ctx.Args().Len() > index {
r, err = os.Open(ctx.Args().Get(index))
}

return
Expand All @@ -305,7 +317,7 @@ func client(ctx *cli.Context) sr.HTTPClient {
}

func getAddress(ctx *cli.Context) string {
address := ctx.GlobalString("host")
address := ctx.String("host")
if address == "" {
log.Fatal("host or SCHEMA_REGISTRY_URL must be provided")
}
Expand Down
Loading

0 comments on commit 7020fda

Please sign in to comment.