Skip to content

Commit

Permalink
BREAKING CHANGE: refactor to call all commands as a package (#46)
Browse files Browse the repository at this point in the history
  • Loading branch information
ginokent authored Feb 24, 2024
2 parents 87b5d1c + c7e4bf7 commit 7635749
Show file tree
Hide file tree
Showing 35 changed files with 324 additions and 421 deletions.
4 changes: 2 additions & 2 deletions pkg/ddl/cockroachdb/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
apperr "github.com/kunitsucom/ddlctl/pkg/apperr"

"github.com/kunitsucom/ddlctl/pkg/ddl"
"github.com/kunitsucom/ddlctl/pkg/ddl/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:gochecknoglobals
Expand Down Expand Up @@ -68,7 +68,7 @@ func (p *Parser) nextToken() {
p.peekToken = p.l.NextToken()

_, file, line, _ := runtime.Caller(1)
logs.TraceLog.Printf("🪲: nextToken: caller=%s:%d currentToken: %#v, peekToken: %#v", filepathz.Short(file), line, p.currentToken, p.peekToken)
logs.Trace.Printf("🪲: nextToken: caller=%s:%d currentToken: %#v, peekToken: %#v", filepathz.Short(file), line, p.currentToken, p.peekToken)
}

// Parse はSQL文を解析します。
Expand Down
10 changes: 4 additions & 6 deletions pkg/ddl/cockroachdb/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,22 @@
package cockroachdb

import (
"log"
"os"
"testing"

"github.com/kunitsucom/util.go/testing/assert"
"github.com/kunitsucom/util.go/testing/require"

"github.com/kunitsucom/ddlctl/pkg/ddl"
"github.com/kunitsucom/ddlctl/pkg/ddl/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:paralleltest,tparallel
func TestParser_Parse(t *testing.T) {
backup := logs.TraceLog
backup := logs.Trace
t.Cleanup(func() {
logs.TraceLog = backup
logs.Trace = backup
})
logs.TraceLog = log.New(os.Stderr, "TRACE: ", log.LstdFlags|log.Lshortfile)
logs.Trace = logs.NewTrace()

t.Run("success,CREATE_TABLE", func(t *testing.T) {
l := NewLexer(`CREATE TABLE "groups" ("id" UUID NOT NULL PRIMARY KEY, description TEXT); CREATE TABLE "users" (id UUID NOT NULL, group_id UUID NOT NULL REFERENCES "groups" ("id") ON DELETE NO ACTION, "name" VARCHAR(255) NOT NULL UNIQUE, "age" INT DEFAULT 0 CHECK ("age" >= 0), description TEXT, PRIMARY KEY ("id"));`)
Expand Down
23 changes: 0 additions & 23 deletions pkg/ddl/logs/log.go

This file was deleted.

4 changes: 2 additions & 2 deletions pkg/ddl/mysql/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
apperr "github.com/kunitsucom/ddlctl/pkg/apperr"

"github.com/kunitsucom/ddlctl/pkg/ddl"
"github.com/kunitsucom/ddlctl/pkg/ddl/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:gochecknoglobals
Expand Down Expand Up @@ -67,7 +67,7 @@ func (p *Parser) nextToken() {
p.peekToken = p.l.NextToken()

_, file, line, _ := runtime.Caller(1)
logs.TraceLog.Printf("🪲: nextToken: caller=%s:%d currentToken: %#v, peekToken: %#v", filepathz.Short(file), line, p.currentToken, p.peekToken)
logs.Trace.Printf("🪲: nextToken: caller=%s:%d currentToken: %#v, peekToken: %#v", filepathz.Short(file), line, p.currentToken, p.peekToken)
}

// Parse はSQL文を解析します。
Expand Down
10 changes: 4 additions & 6 deletions pkg/ddl/mysql/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,22 @@
package mysql

import (
"log"
"os"
"testing"

"github.com/kunitsucom/util.go/testing/assert"
"github.com/kunitsucom/util.go/testing/require"

"github.com/kunitsucom/ddlctl/pkg/ddl"
"github.com/kunitsucom/ddlctl/pkg/ddl/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:paralleltest,tparallel
func TestParser_Parse(t *testing.T) {
backup := logs.TraceLog
backup := logs.Trace
t.Cleanup(func() {
logs.TraceLog = backup
logs.Trace = backup
})
logs.TraceLog = log.New(os.Stderr, "TRACE: ", log.LstdFlags|log.Lshortfile)
logs.Trace = logs.NewTrace()

t.Run("success,CREATE_TABLE", func(t *testing.T) {
// t.Parallel()
Expand Down
4 changes: 2 additions & 2 deletions pkg/ddl/postgres/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
apperr "github.com/kunitsucom/ddlctl/pkg/apperr"

"github.com/kunitsucom/ddlctl/pkg/ddl"
"github.com/kunitsucom/ddlctl/pkg/ddl/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:gochecknoglobals
Expand Down Expand Up @@ -68,7 +68,7 @@ func (p *Parser) nextToken() {
p.peekToken = p.l.NextToken()

_, file, line, _ := runtime.Caller(1)
logs.TraceLog.Printf("🪲: nextToken: caller=%s:%d currentToken: %#v, peekToken: %#v", filepathz.Short(file), line, p.currentToken, p.peekToken)
logs.Trace.Printf("🪲: nextToken: caller=%s:%d currentToken: %#v, peekToken: %#v", filepathz.Short(file), line, p.currentToken, p.peekToken)
}

// Parse はSQL文を解析します。
Expand Down
10 changes: 4 additions & 6 deletions pkg/ddl/postgres/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,22 @@
package postgres

import (
"log"
"os"
"testing"

"github.com/kunitsucom/util.go/testing/assert"
"github.com/kunitsucom/util.go/testing/require"

"github.com/kunitsucom/ddlctl/pkg/ddl"
"github.com/kunitsucom/ddlctl/pkg/ddl/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:paralleltest,tparallel
func TestParser_Parse(t *testing.T) {
backup := logs.TraceLog
backup := logs.Trace
t.Cleanup(func() {
logs.TraceLog = backup
logs.Trace = backup
})
logs.TraceLog = log.New(os.Stderr, "TRACE: ", log.LstdFlags|log.Lshortfile)
logs.Trace = logs.NewTrace()

t.Run("success,CREATE_TABLE", func(t *testing.T) {
t.Parallel()
Expand Down
4 changes: 2 additions & 2 deletions pkg/ddl/spanner/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (

apperr "github.com/kunitsucom/ddlctl/pkg/apperr"
"github.com/kunitsucom/ddlctl/pkg/ddl"
"github.com/kunitsucom/ddlctl/pkg/ddl/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:gochecknoglobals
Expand Down Expand Up @@ -67,7 +67,7 @@ func (p *Parser) nextToken() {
p.peekToken = p.l.NextToken()

_, file, line, _ := runtime.Caller(1)
logs.TraceLog.Printf("🪲: nextToken: caller=%s:%d currentToken: %#v, peekToken: %#v", filepathz.Short(file), line, p.currentToken, p.peekToken)
logs.Trace.Printf("🪲: nextToken: caller=%s:%d currentToken: %#v, peekToken: %#v", filepathz.Short(file), line, p.currentToken, p.peekToken)
}

// Parse はSQL文を解析します。
Expand Down
10 changes: 4 additions & 6 deletions pkg/ddl/spanner/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,22 @@
package spanner

import (
"log"
"os"
"testing"

"github.com/kunitsucom/util.go/testing/assert"
"github.com/kunitsucom/util.go/testing/require"

"github.com/kunitsucom/ddlctl/pkg/ddl"
"github.com/kunitsucom/ddlctl/pkg/ddl/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:paralleltest,tparallel
func TestParser_Parse(t *testing.T) {
backup := logs.TraceLog
backup := logs.Trace
t.Cleanup(func() {
logs.TraceLog = backup
logs.Trace = backup
})
logs.TraceLog = log.New(os.Stderr, "TRACE: ", log.LstdFlags|log.Lshortfile)
logs.Trace = logs.NewTrace()

t.Run("success,CREATE_TABLE", func(t *testing.T) {
// t.Parallel()
Expand Down
22 changes: 7 additions & 15 deletions pkg/ddlctl/ddlctl_apply.go → pkg/ddlctl/apply/ddlctl_apply.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ddlctl
package apply

import (
"bufio"
Expand All @@ -19,13 +19,14 @@ import (
crdbddl "github.com/kunitsucom/ddlctl/pkg/ddl/cockroachdb"
myddl "github.com/kunitsucom/ddlctl/pkg/ddl/mysql"
spanddl "github.com/kunitsucom/ddlctl/pkg/ddl/spanner"
"github.com/kunitsucom/ddlctl/pkg/ddlctl/diff"
"github.com/kunitsucom/ddlctl/pkg/internal/config"
"github.com/kunitsucom/ddlctl/pkg/internal/consts"
"github.com/kunitsucom/ddlctl/pkg/internal/logs"
"github.com/kunitsucom/ddlctl/pkg/logs"
)

//nolint:cyclop,funlen,gocognit,gocyclo
func Apply(ctx context.Context, args []string) (err error) {
func Command(ctx context.Context, args []string) (err error) {
if _, err := config.Load(ctx); err != nil {
return apperr.Errorf("config.Load: %w", err)
}
Expand All @@ -34,21 +35,12 @@ func Apply(ctx context.Context, args []string) (err error) {
return apperr.Errorf("args=%v: %w", args, apperr.ErrTwoArgumentsRequired)
}

dsn, ddlSrc := args[0], args[1]
language := config.Language()
dialect := config.Dialect()

left, err := resolve(ctx, dialect, dsn)
if err != nil {
return apperr.Errorf("resolve: %w", err)
}

right, err := resolve(ctx, dialect, ddlSrc)
if err != nil {
return apperr.Errorf("resolve: %w", err)
}
dsn, ddlSrc := args[0], args[1]

buf := new(strings.Builder)
if err := DiffDDL(buf, dialect, left, right); err != nil {
if err := diff.Diff(ctx, buf, dialect, language, dsn, ddlSrc); err != nil {
if errors.Is(err, ddl.ErrNoDifference) {
_, _ = fmt.Fprintln(os.Stdout, ddl.ErrNoDifference.Error())
return nil
Expand Down
12 changes: 8 additions & 4 deletions pkg/ddlctl/ddlctl.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ import (
"github.com/kunitsucom/util.go/version"

apperr "github.com/kunitsucom/ddlctl/pkg/apperr"
"github.com/kunitsucom/ddlctl/pkg/ddlctl/apply"
"github.com/kunitsucom/ddlctl/pkg/ddlctl/diff"
"github.com/kunitsucom/ddlctl/pkg/ddlctl/generate"
"github.com/kunitsucom/ddlctl/pkg/ddlctl/show"
"github.com/kunitsucom/ddlctl/pkg/internal/consts"
)

Expand Down Expand Up @@ -90,21 +94,21 @@ func DDLCtl(ctx context.Context) error {
Default: cliz.Default("/dev/stdout"),
},
),
RunFunc: Generate,
RunFunc: generate.Command,
},
{
Name: "show",
Usage: "ddlctl show --dialect <DDL dialect> <DSN>",
Description: "show DDL from DSN like `SHOW CREATE TABLE`.",
Options: []cliz.Option{optDialect},
RunFunc: Show,
RunFunc: show.Command,
},
{
Name: "diff",
Usage: "ddlctl diff [options] --dialect <DDL dialect> <before DDL source> <after DDL source>",
Description: "diff DDL from <before DDL source> to <after DDL source>.",
Options: opts,
RunFunc: Diff,
RunFunc: diff.Command,
},
{
Name: "apply",
Expand All @@ -118,7 +122,7 @@ func DDLCtl(ctx context.Context) error {
Default: cliz.Default(false),
},
),
RunFunc: Apply,
RunFunc: apply.Command,
},
},
Options: []cliz.Option{
Expand Down
Loading

0 comments on commit 7635749

Please sign in to comment.