feat: squash multiple modules to one
This commit is contained in:
@ -2,8 +2,6 @@ package main
|
|||||||
|
|
||||||
import "flag"
|
import "flag"
|
||||||
|
|
||||||
const stdin = "-"
|
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Key int
|
Key int
|
||||||
Numeric bool
|
Numeric bool
|
||||||
@ -23,6 +21,6 @@ func (c *Config) ParseFlags() {
|
|||||||
c.Sources = flag.Args()
|
c.Sources = flag.Args()
|
||||||
|
|
||||||
if len(c.Sources) == 0 {
|
if len(c.Sources) == 0 {
|
||||||
c.Sources = []string{stdin}
|
c.Sources = []string{"-"}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,6 +2,8 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
sortcli "git.grachevko.ru/grachevko/h/sort-cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -18,8 +20,8 @@ func run() string {
|
|||||||
cfg := &Config{}
|
cfg := &Config{}
|
||||||
cfg.ParseFlags()
|
cfg.ParseFlags()
|
||||||
|
|
||||||
lines := content{}
|
lines := sortcli.Content{}
|
||||||
lines.Load(open(cfg.Sources))
|
lines.Load(sortcli.Open(cfg.Sources))
|
||||||
|
|
||||||
if cfg.Unique {
|
if cfg.Unique {
|
||||||
lines.Uniques()
|
lines.Uniques()
|
@ -1,10 +1,10 @@
|
|||||||
module sort-cli
|
module git.grachevko.ru/grachevko/h
|
||||||
|
|
||||||
go 1.21.6
|
go 1.22.2
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/stretchr/testify v1.8.4
|
github.com/stretchr/testify v1.9.0
|
||||||
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3
|
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
@ -2,8 +2,10 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
|
|||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
|
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM=
|
||||||
|
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
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/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
48
lru/Makefile
48
lru/Makefile
@ -1,48 +0,0 @@
|
|||||||
.DEFAULT_GOAL := help
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# HELPERS
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## help: print this help message
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo 'Usage:'
|
|
||||||
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# QUALITY CONTROL
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## tidy: format code and tidy modfile
|
|
||||||
.PHONY: tidy
|
|
||||||
tidy:
|
|
||||||
go fmt ./...
|
|
||||||
go mod tidy -v
|
|
||||||
|
|
||||||
## audit: run quality control checks
|
|
||||||
.PHONY: audit
|
|
||||||
audit:
|
|
||||||
go mod verify
|
|
||||||
go vet ./...
|
|
||||||
go run honnef.co/go/tools/cmd/staticcheck@latest -checks=all,-ST1000,-U1000 ./...
|
|
||||||
go run golang.org/x/vuln/cmd/govulncheck@latest ./...
|
|
||||||
go test -race -buildvcs -vet=off ./...
|
|
||||||
go run github.com/golangci/golangci-lint/cmd/golangci-lint@latest run -v ./...
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# DEVELOPMENT
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## test: run all tests
|
|
||||||
.PHONY: test
|
|
||||||
test:
|
|
||||||
go test -v -race -buildvcs ./...
|
|
||||||
|
|
||||||
## test/cover: run all tests and display coverage
|
|
||||||
.PHONY: test/cover
|
|
||||||
test/cover:
|
|
||||||
go test -v -race -buildvcs -coverprofile=/tmp/coverage.out ./...
|
|
||||||
go tool cover -html=/tmp/coverage.out
|
|
11
lru/go.mod
11
lru/go.mod
@ -1,11 +0,0 @@
|
|||||||
module lru
|
|
||||||
|
|
||||||
go 1.21.6
|
|
||||||
|
|
||||||
require github.com/stretchr/testify v1.8.4
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
||||||
)
|
|
10
lru/go.sum
10
lru/go.sum
@ -1,10 +0,0 @@
|
|||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
|
||||||
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.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
@ -1,53 +0,0 @@
|
|||||||
.DEFAULT_GOAL := help
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# HELPERS
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## help: print this help message
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo 'Usage:'
|
|
||||||
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
|
|
||||||
|
|
||||||
## all: tidy + audit + test/cover
|
|
||||||
all: generate tidy test lint test/cover
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# QUALITY CONTROL
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## tidy: format code and tidy modfile
|
|
||||||
.PHONY: tidy
|
|
||||||
tidy:
|
|
||||||
go fmt ./...
|
|
||||||
goimports -local=$(shell cat go.mod | grep module | awk '{print $$2}')/ -w .
|
|
||||||
go mod tidy -v
|
|
||||||
|
|
||||||
## audit: run quality control checks
|
|
||||||
.PHONY: lint
|
|
||||||
lint:
|
|
||||||
go mod verify
|
|
||||||
go run github.com/golangci/golangci-lint/cmd/golangci-lint@latest run -v ./...
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# DEVELOPMENT
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## generate: run all generators
|
|
||||||
.PHONY: generate
|
|
||||||
generate:
|
|
||||||
go generate ./...
|
|
||||||
|
|
||||||
## test: run all tests
|
|
||||||
.PHONY: test
|
|
||||||
test:
|
|
||||||
go test -race -buildvcs ./...
|
|
||||||
|
|
||||||
## test/cover: run all tests and display coverage
|
|
||||||
.PHONY: test/cover
|
|
||||||
test/cover:
|
|
||||||
go test -race -buildvcs -coverprofile=/tmp/coverage.out ./...
|
|
||||||
go tool cover -html=/tmp/coverage.out
|
|
@ -1,11 +0,0 @@
|
|||||||
module merge-channel
|
|
||||||
|
|
||||||
go 1.21.6
|
|
||||||
|
|
||||||
require github.com/stretchr/testify v1.8.4
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
||||||
)
|
|
@ -1,11 +1,11 @@
|
|||||||
package main
|
package mergechannel
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
var InsufficientChannelsErr = errors.New("channels count must be >2")
|
var ErrInsufficientChannels = errors.New("channels count must be >2")
|
||||||
|
|
||||||
func merge[T any](channels ...<-chan T) (<-chan T, error) {
|
func merge[T any](channels ...<-chan T) (<-chan T, error) {
|
||||||
out := make(chan T)
|
out := make(chan T)
|
||||||
@ -13,7 +13,7 @@ func merge[T any](channels ...<-chan T) (<-chan T, error) {
|
|||||||
if len(channels) < 2 {
|
if len(channels) < 2 {
|
||||||
close(out)
|
close(out)
|
||||||
|
|
||||||
return out, InsufficientChannelsErr
|
return out, ErrInsufficientChannels
|
||||||
}
|
}
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package mergechannel
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
@ -32,5 +32,5 @@ func TestInsufficient(t *testing.T) {
|
|||||||
a := make(chan int)
|
a := make(chan int)
|
||||||
|
|
||||||
_, err := merge(a)
|
_, err := merge(a)
|
||||||
assert.Equal(t, err, InsufficientChannelsErr)
|
assert.Equal(t, err, ErrInsufficientChannels)
|
||||||
}
|
}
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
.DEFAULT_GOAL := help
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# HELPERS
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## help: print this help message
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo 'Usage:'
|
|
||||||
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
|
|
||||||
|
|
||||||
## all: tidy + audit + test/cover
|
|
||||||
all: generate tidy test lint test/cover
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# QUALITY CONTROL
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## tidy: format code and tidy modfile
|
|
||||||
.PHONY: tidy
|
|
||||||
tidy:
|
|
||||||
go fmt ./...
|
|
||||||
goimports -local=$(shell cat go.mod | grep module | awk '{print $$2}')/ -w .
|
|
||||||
go mod tidy -v
|
|
||||||
|
|
||||||
## audit: run quality control checks
|
|
||||||
.PHONY: lint
|
|
||||||
lint:
|
|
||||||
go mod verify
|
|
||||||
go run github.com/golangci/golangci-lint/cmd/golangci-lint@latest run -v ./...
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# DEVELOPMENT
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## generate: run all generators
|
|
||||||
.PHONY: generate
|
|
||||||
generate:
|
|
||||||
go generate ./...
|
|
||||||
|
|
||||||
## test: run all tests
|
|
||||||
.PHONY: test
|
|
||||||
test:
|
|
||||||
go test -race -buildvcs ./...
|
|
||||||
|
|
||||||
## test/cover: run all tests and display coverage
|
|
||||||
.PHONY: test/cover
|
|
||||||
test/cover:
|
|
||||||
go test -race -buildvcs -coverprofile=/tmp/coverage.out ./...
|
|
||||||
go tool cover -html=/tmp/coverage.out
|
|
@ -1,11 +0,0 @@
|
|||||||
module pipeline
|
|
||||||
|
|
||||||
go 1.21.6
|
|
||||||
|
|
||||||
require github.com/stretchr/testify v1.8.4
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
||||||
)
|
|
@ -1,10 +0,0 @@
|
|||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
|
||||||
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.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package pipeline
|
||||||
|
|
||||||
func Pipe[In any, Out any](in <-chan In, pipe func(In) Out) <-chan Out {
|
func Pipe[In any, Out any](in <-chan In, pipe func(In) Out) <-chan Out {
|
||||||
out := make(chan Out)
|
out := make(chan Out)
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package pipeline
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@ -1,53 +0,0 @@
|
|||||||
.DEFAULT_GOAL := help
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# HELPERS
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## help: print this help message
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo 'Usage:'
|
|
||||||
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
|
|
||||||
|
|
||||||
## all: tidy + audit + test/cover
|
|
||||||
all: generate tidy test lint test/cover
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# QUALITY CONTROL
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## tidy: format code and tidy modfile
|
|
||||||
.PHONY: tidy
|
|
||||||
tidy:
|
|
||||||
go fmt ./...
|
|
||||||
goimports -local=$(shell cat go.mod | grep module | awk '{print $$2}')/ -w .
|
|
||||||
go mod tidy -v
|
|
||||||
|
|
||||||
## audit: run quality control checks
|
|
||||||
.PHONY: lint
|
|
||||||
lint:
|
|
||||||
go mod verify
|
|
||||||
go run github.com/golangci/golangci-lint/cmd/golangci-lint@latest run -v ./...
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# DEVELOPMENT
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## generate: run all generators
|
|
||||||
.PHONY: generate
|
|
||||||
generate:
|
|
||||||
go generate ./...
|
|
||||||
|
|
||||||
## test: run all tests
|
|
||||||
.PHONY: test
|
|
||||||
test:
|
|
||||||
go test -race -buildvcs ./...
|
|
||||||
|
|
||||||
## test/cover: run all tests and display coverage
|
|
||||||
.PHONY: test/cover
|
|
||||||
test/cover:
|
|
||||||
go test -race -buildvcs -coverprofile=/tmp/coverage.out ./...
|
|
||||||
go tool cover -html=/tmp/coverage.out
|
|
@ -1,3 +0,0 @@
|
|||||||
module semaphore
|
|
||||||
|
|
||||||
go 1.21.6
|
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package semaphore
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package semaphore
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@ -1,50 +0,0 @@
|
|||||||
.DEFAULT_GOAL := help
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# HELPERS
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## help: print this help message
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo 'Usage:'
|
|
||||||
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
|
|
||||||
|
|
||||||
## all: tidy + audit + test/cover
|
|
||||||
all: tidy audit test/cover
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# QUALITY CONTROL
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## tidy: format code and tidy modfile
|
|
||||||
.PHONY: tidy
|
|
||||||
tidy:
|
|
||||||
go fmt ./...
|
|
||||||
go mod tidy -v
|
|
||||||
|
|
||||||
## audit: run quality control checks
|
|
||||||
.PHONY: audit
|
|
||||||
audit:
|
|
||||||
go mod verify
|
|
||||||
go vet ./...
|
|
||||||
go run honnef.co/go/tools/cmd/staticcheck@latest -checks=all,-ST1000,-U1000 ./...
|
|
||||||
go run golang.org/x/vuln/cmd/govulncheck@latest ./...
|
|
||||||
go test -race -buildvcs -vet=off ./...
|
|
||||||
go run github.com/golangci/golangci-lint/cmd/golangci-lint@latest run -v ./...
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# DEVELOPMENT
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## test: run all tests
|
|
||||||
.PHONY: test
|
|
||||||
test:
|
|
||||||
go test -v -race -buildvcs ./...
|
|
||||||
|
|
||||||
## test/cover: run all tests and display coverage
|
|
||||||
.PHONY: test/cover
|
|
||||||
test/cover:
|
|
||||||
go test -v -race -buildvcs -coverprofile=/tmp/coverage.out ./...
|
|
||||||
go tool cover -html=/tmp/coverage.out
|
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package sortcli
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
@ -13,9 +13,9 @@ import (
|
|||||||
// NL New line constant
|
// NL New line constant
|
||||||
const NL = "\n"
|
const NL = "\n"
|
||||||
|
|
||||||
type content [][]byte
|
type Content [][]byte
|
||||||
|
|
||||||
func (c *content) Sort(reverse bool) {
|
func (c *Content) Sort(reverse bool) {
|
||||||
slices.SortFunc(*c, func(a, b []byte) int {
|
slices.SortFunc(*c, func(a, b []byte) int {
|
||||||
if reverse {
|
if reverse {
|
||||||
a, b = b, a
|
a, b = b, a
|
||||||
@ -25,10 +25,10 @@ func (c *content) Sort(reverse bool) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *content) Uniques() {
|
func (c *Content) Uniques() {
|
||||||
m := make(map[string]struct{}, len(*c))
|
m := make(map[string]struct{}, len(*c))
|
||||||
|
|
||||||
*c = slices.DeleteFunc[content, []byte](*c, func(line []byte) bool {
|
*c = slices.DeleteFunc[Content, []byte](*c, func(line []byte) bool {
|
||||||
if _, ok := m[string(line)]; !ok {
|
if _, ok := m[string(line)]; !ok {
|
||||||
m[string(line)] = struct{}{}
|
m[string(line)] = struct{}{}
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ func (c *content) Uniques() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *content) String() string {
|
func (c *Content) String() string {
|
||||||
lines := *c
|
lines := *c
|
||||||
|
|
||||||
var n int
|
var n int
|
||||||
@ -64,7 +64,7 @@ func (c *content) String() string {
|
|||||||
return sb.String()
|
return sb.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *content) Load(r io.Reader) {
|
func (c *Content) Load(r io.Reader) {
|
||||||
br := bufio.NewReader(r)
|
br := bufio.NewReader(r)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package sortcli
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
@ -16,7 +16,7 @@ Africa
|
|||||||
`
|
`
|
||||||
|
|
||||||
func TestLoad(t *testing.T) {
|
func TestLoad(t *testing.T) {
|
||||||
c := &content{}
|
c := &Content{}
|
||||||
c.Load(strings.NewReader(input))
|
c.Load(strings.NewReader(input))
|
||||||
|
|
||||||
assert.Equal(t, input, c.String())
|
assert.Equal(t, input, c.String())
|
||||||
@ -42,7 +42,7 @@ America`,
|
|||||||
tc := tc
|
tc := tc
|
||||||
|
|
||||||
t.Run(tc.Name, func(t *testing.T) {
|
t.Run(tc.Name, func(t *testing.T) {
|
||||||
c := &content{}
|
c := &Content{}
|
||||||
c.Load(strings.NewReader(tc.Content))
|
c.Load(strings.NewReader(tc.Content))
|
||||||
|
|
||||||
c.Uniques()
|
c.Uniques()
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
|
||||||
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 h1:hNQpMuAJe5CtcUqCXaWga3FHu+kQvCqcsoVaQgSV60o=
|
|
||||||
golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08=
|
|
||||||
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.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package sortcli
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
@ -6,13 +6,13 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
func open(sources []string) io.Reader {
|
func Open(sources []string) io.Reader {
|
||||||
rs := make([]io.Reader, 0, len(sources))
|
rs := make([]io.Reader, 0, len(sources))
|
||||||
|
|
||||||
for _, source := range sources {
|
for _, source := range sources {
|
||||||
var r io.Reader
|
var r io.Reader
|
||||||
|
|
||||||
if source == stdin {
|
if source == "-" {
|
||||||
r = os.Stdin
|
r = os.Stdin
|
||||||
} else {
|
} else {
|
||||||
if _, err := os.Stat(source); err != nil {
|
if _, err := os.Stat(source); err != nil {
|
||||||
|
0
tmp/.gitkeep
Normal file
0
tmp/.gitkeep
Normal file
@ -1,48 +0,0 @@
|
|||||||
.DEFAULT_GOAL := help
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# HELPERS
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## help: print this help message
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo 'Usage:'
|
|
||||||
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# QUALITY CONTROL
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## tidy: format code and tidy modfile
|
|
||||||
.PHONY: tidy
|
|
||||||
tidy:
|
|
||||||
go fmt ./...
|
|
||||||
go mod tidy -v
|
|
||||||
|
|
||||||
## audit: run quality control checks
|
|
||||||
.PHONY: audit
|
|
||||||
audit:
|
|
||||||
go mod verify
|
|
||||||
go vet ./...
|
|
||||||
go run honnef.co/go/tools/cmd/staticcheck@latest -checks=all,-ST1000,-U1000 ./...
|
|
||||||
go run golang.org/x/vuln/cmd/govulncheck@latest ./...
|
|
||||||
go test -race -buildvcs -vet=off ./...
|
|
||||||
go run github.com/golangci/golangci-lint/cmd/golangci-lint@latest run -v ./...
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# DEVELOPMENT
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## test: run all tests
|
|
||||||
.PHONY: test
|
|
||||||
test:
|
|
||||||
go test -v -race -buildvcs ./...
|
|
||||||
|
|
||||||
## test/cover: run all tests and display coverage
|
|
||||||
.PHONY: test/cover
|
|
||||||
test/cover:
|
|
||||||
go test -v -race -buildvcs -coverprofile=/tmp/coverage.out ./...
|
|
||||||
go tool cover -html=/tmp/coverage.out
|
|
@ -1,10 +0,0 @@
|
|||||||
module uniqueschars
|
|
||||||
|
|
||||||
go 1.21.6
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
||||||
github.com/stretchr/testify v1.8.4 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
||||||
)
|
|
@ -1,9 +0,0 @@
|
|||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
||||||
github.com/davecgh/go-spew v1.1.1/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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
@ -1,53 +0,0 @@
|
|||||||
.DEFAULT_GOAL := help
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# HELPERS
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## help: print this help message
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo 'Usage:'
|
|
||||||
@sed -n 's/^##//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'
|
|
||||||
|
|
||||||
## all: tidy + audit + test/cover
|
|
||||||
all: generate tidy test lint test/cover
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# QUALITY CONTROL
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## tidy: format code and tidy modfile
|
|
||||||
.PHONY: tidy
|
|
||||||
tidy:
|
|
||||||
go fmt ./...
|
|
||||||
goimports -local=$(shell cat go.mod | grep module | awk '{print $$2}')/ -w .
|
|
||||||
go mod tidy -v
|
|
||||||
|
|
||||||
## audit: run quality control checks
|
|
||||||
.PHONY: lint
|
|
||||||
lint:
|
|
||||||
go mod verify
|
|
||||||
go run github.com/golangci/golangci-lint/cmd/golangci-lint@latest run -v ./...
|
|
||||||
|
|
||||||
|
|
||||||
# ==================================================================================== #
|
|
||||||
# DEVELOPMENT
|
|
||||||
# ==================================================================================== #
|
|
||||||
|
|
||||||
## generate: run all generators
|
|
||||||
.PHONY: generate
|
|
||||||
generate:
|
|
||||||
go generate ./...
|
|
||||||
|
|
||||||
## test: run all tests
|
|
||||||
.PHONY: test
|
|
||||||
test:
|
|
||||||
go test -race -buildvcs ./...
|
|
||||||
|
|
||||||
## test/cover: run all tests and display coverage
|
|
||||||
.PHONY: test/cover
|
|
||||||
test/cover:
|
|
||||||
go test -race -buildvcs -coverprofile=/tmp/coverage.out ./...
|
|
||||||
go tool cover -html=/tmp/coverage.out
|
|
@ -1,11 +0,0 @@
|
|||||||
module worker-pool
|
|
||||||
|
|
||||||
go 1.21.6
|
|
||||||
|
|
||||||
require github.com/stretchr/testify v1.8.4
|
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
||||||
)
|
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package workerpool
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package workerpool
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
Reference in New Issue
Block a user