From 56c90842532c17513a212ceb0de458fd3b55121e Mon Sep 17 00:00:00 2001 From: Frank Meyer Date: Sat, 12 Oct 2024 17:23:45 +0800 Subject: [PATCH 1/2] go/module: bump tables-to-go module to v2 - Fixed imports paths. - Updated Readme to ``@latest`. --- .golangci.yml | 2 +- README.md | 2 +- go.mod | 2 +- internal/cli/tables-to-go-cli.go | 8 ++++---- internal/cli/tables-to-go-cli_test.go | 4 ++-- pkg/database/database.go | 2 +- pkg/database/mysql.go | 2 +- pkg/database/mysql_test.go | 2 +- pkg/database/postgresql.go | 2 +- pkg/database/postgresql_test.go | 2 +- pkg/database/sqlite.go | 2 +- pkg/database/sqlite_test.go | 2 +- pkg/tagger/db.go | 2 +- pkg/tagger/mastermind.go | 2 +- pkg/tagger/mastermind_test.go | 4 ++-- pkg/tagger/tagger.go | 4 ++-- pkg/tagger/tagger_test.go | 4 ++-- tables-to-go.go | 8 ++++---- 18 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 8624f307..81daf5b1 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -22,7 +22,7 @@ issues: linters-settings: goimports: - local-prefixes: github.com/fraenky8/tables-to-go + local-prefixes: github.com/fraenky8/tables-to-go/v2 gosec: config: diff --git a/README.md b/README.md index 4e9f4b18..61da1cc1 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ This project provides a make file but can also simply be installed with the go-install command: ``` -go install github.com/fraenky8/tables-to-go@master +go install github.com/fraenky8/tables-to-go@latest ``` To enable SQLite3 support, clone the repo manually and run the make file: diff --git a/go.mod b/go.mod index 728f23c2..3a32dc0c 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/fraenky8/tables-to-go +module github.com/fraenky8/tables-to-go/v2 go 1.23 diff --git a/internal/cli/tables-to-go-cli.go b/internal/cli/tables-to-go-cli.go index 53f7b538..bb6ef2bd 100644 --- a/internal/cli/tables-to-go-cli.go +++ b/internal/cli/tables-to-go-cli.go @@ -9,10 +9,10 @@ import ( "golang.org/x/text/cases" "golang.org/x/text/language" - "github.com/fraenky8/tables-to-go/pkg/database" - "github.com/fraenky8/tables-to-go/pkg/output" - "github.com/fraenky8/tables-to-go/pkg/settings" - "github.com/fraenky8/tables-to-go/pkg/tagger" + "github.com/fraenky8/tables-to-go/v2/pkg/database" + "github.com/fraenky8/tables-to-go/v2/pkg/output" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/tagger" ) var ( diff --git a/internal/cli/tables-to-go-cli_test.go b/internal/cli/tables-to-go-cli_test.go index 1115e5b3..be9e1eaa 100644 --- a/internal/cli/tables-to-go-cli_test.go +++ b/internal/cli/tables-to-go-cli_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "github.com/fraenky8/tables-to-go/pkg/database" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/database" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) type mockDB struct { diff --git a/pkg/database/database.go b/pkg/database/database.go index 76c8dfa3..6a5cc34c 100644 --- a/pkg/database/database.go +++ b/pkg/database/database.go @@ -6,7 +6,7 @@ import ( "github.com/jmoiron/sqlx" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) var ( diff --git a/pkg/database/mysql.go b/pkg/database/mysql.go index a1f87b4c..bf372582 100644 --- a/pkg/database/mysql.go +++ b/pkg/database/mysql.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" // MySQL database driver _ "github.com/go-sql-driver/mysql" diff --git a/pkg/database/mysql_test.go b/pkg/database/mysql_test.go index 3cde9b45..e631d9ce 100644 --- a/pkg/database/mysql_test.go +++ b/pkg/database/mysql_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) func TestMySQL_DSN(t *testing.T) { diff --git a/pkg/database/postgresql.go b/pkg/database/postgresql.go index f3c0285a..dfe44a50 100644 --- a/pkg/database/postgresql.go +++ b/pkg/database/postgresql.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" // postgres database driver _ "github.com/lib/pq" diff --git a/pkg/database/postgresql_test.go b/pkg/database/postgresql_test.go index 289d45b9..6fe590a6 100644 --- a/pkg/database/postgresql_test.go +++ b/pkg/database/postgresql_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) func TestPostgresql_DSN(t *testing.T) { diff --git a/pkg/database/sqlite.go b/pkg/database/sqlite.go index d94c14aa..f281663f 100644 --- a/pkg/database/sqlite.go +++ b/pkg/database/sqlite.go @@ -6,7 +6,7 @@ import ( "net/url" "strings" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) // SQLite implements the Database interface with help of GeneralDatabase. diff --git a/pkg/database/sqlite_test.go b/pkg/database/sqlite_test.go index 2168939d..942c6fda 100644 --- a/pkg/database/sqlite_test.go +++ b/pkg/database/sqlite_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) func TestSQLite_DSN(t *testing.T) { diff --git a/pkg/tagger/db.go b/pkg/tagger/db.go index e701281e..12c2e31a 100644 --- a/pkg/tagger/db.go +++ b/pkg/tagger/db.go @@ -1,7 +1,7 @@ package tagger import ( - "github.com/fraenky8/tables-to-go/pkg/database" + "github.com/fraenky8/tables-to-go/v2/pkg/database" ) // Db is the standard "db"-tag. diff --git a/pkg/tagger/mastermind.go b/pkg/tagger/mastermind.go index 746c6560..25b550c6 100644 --- a/pkg/tagger/mastermind.go +++ b/pkg/tagger/mastermind.go @@ -1,7 +1,7 @@ package tagger import ( - "github.com/fraenky8/tables-to-go/pkg/database" + "github.com/fraenky8/tables-to-go/v2/pkg/database" ) // Mastermind represents the Masterminds/structable "stbl"-tag. diff --git a/pkg/tagger/mastermind_test.go b/pkg/tagger/mastermind_test.go index 0e2eb046..f4d9ba23 100644 --- a/pkg/tagger/mastermind_test.go +++ b/pkg/tagger/mastermind_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/assert" - "github.com/fraenky8/tables-to-go/pkg/database" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/database" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) func TestMastermind_GenerateTag(t *testing.T) { diff --git a/pkg/tagger/tagger.go b/pkg/tagger/tagger.go index fa478e91..e0385e77 100644 --- a/pkg/tagger/tagger.go +++ b/pkg/tagger/tagger.go @@ -4,8 +4,8 @@ import ( "strings" "sync" - "github.com/fraenky8/tables-to-go/pkg/database" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/database" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) const ( diff --git a/pkg/tagger/tagger_test.go b/pkg/tagger/tagger_test.go index a84fb154..f898f36d 100644 --- a/pkg/tagger/tagger_test.go +++ b/pkg/tagger/tagger_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/assert" - "github.com/fraenky8/tables-to-go/pkg/database" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/pkg/database" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) func TestTaggers_GenerateTags(t *testing.T) { diff --git a/tables-to-go.go b/tables-to-go.go index bbfd3dfd..5d14254a 100644 --- a/tables-to-go.go +++ b/tables-to-go.go @@ -5,10 +5,10 @@ import ( "fmt" "os" - "github.com/fraenky8/tables-to-go/internal/cli" - "github.com/fraenky8/tables-to-go/pkg/database" - "github.com/fraenky8/tables-to-go/pkg/output" - "github.com/fraenky8/tables-to-go/pkg/settings" + "github.com/fraenky8/tables-to-go/v2/internal/cli" + "github.com/fraenky8/tables-to-go/v2/pkg/database" + "github.com/fraenky8/tables-to-go/v2/pkg/output" + "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) // CmdArgs represents the supported command line args From 1b4a026027f111c44d4177c2518ad56296dedafb Mon Sep 17 00:00:00 2001 From: Frank Meyer Date: Sat, 12 Oct 2024 17:24:21 +0800 Subject: [PATCH 2/2] cli: add -version flag Updated Makefile to make use of `git` and `date`. --- Makefile | 13 ++++++++++--- tables-to-go.go | 40 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 36502589..aebb60b4 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,24 @@ .PHONY: all build +TAG=$(shell git describe --abbrev=0 --tags 2>&1) +TS=$(shell date '+%b %d %Y %T') + all: help # Self documenting makefile. Double hashes signify help comments. help: ## Show this help @fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##//' -install: ## Installs tables-to-go. Same behavior like `go install -mod=vendor .` - go install -mod=vendor . +install: ## Installs tables-to-go. Requires `git` to be installed. + @go install -mod=vendor -ldflags \ + "-X 'main.buildTimestamp=$(TS)' -X 'main.versionTag=$(TAG)'" \ + . sqlite3: ## Installs tables-to-go with sqlite3 driver and the \ ## User Authentication feature enabled. \ ## For more information see the documentation of the driver at \ ## - https://github.com/mattn/go-sqlite3#compilation \ ## - https://github.com/mattn/go-sqlite3#user-authentication - CGO_ENABLED=1 go install -mod=vendor -tags="sqlite3 sqlite_userauth" . + CGO_ENABLED=1 go install -mod=vendor -tags="sqlite3 sqlite_userauth" -ldflags \ + "-X 'main.buildTimestamp=$(TS)' -X 'main.versionTag=$(TAG)'" \ + . diff --git a/tables-to-go.go b/tables-to-go.go index 5d14254a..d48e6c75 100644 --- a/tables-to-go.go +++ b/tables-to-go.go @@ -4,6 +4,8 @@ import ( "flag" "fmt" "os" + "runtime" + "runtime/debug" "github.com/fraenky8/tables-to-go/v2/internal/cli" "github.com/fraenky8/tables-to-go/v2/pkg/database" @@ -11,9 +13,16 @@ import ( "github.com/fraenky8/tables-to-go/v2/pkg/settings" ) +var ( + revision = "master" + versionTag = "" + buildTimestamp = "" +) + // CmdArgs represents the supported command line args type CmdArgs struct { - Help bool + Help bool + Version bool *settings.Settings } @@ -28,6 +37,7 @@ func NewCmdArgs() (args *CmdArgs) { flag.BoolVar(&args.Help, "help", false, "shows help and usage") flag.BoolVar(&args.Verbose, "v", args.Verbose, "verbose output") flag.BoolVar(&args.VVerbose, "vv", args.VVerbose, "more verbose output") + flag.BoolVar(&args.Version, "version", args.Version, "show version and build information") flag.BoolVar(&args.Force, "f", args.Force, "force; skip tables that encounter errors") flag.Var(&args.DbType, "t", fmt.Sprintf("type of database to use, currently supported: %v", settings.SprintfSupportedDbTypes())) @@ -75,6 +85,11 @@ func main() { os.Exit(0) } + if cmdArgs.Version { + printVersion() + os.Exit(0) + } + if err := cmdArgs.Verify(); err != nil { fmt.Print(err) os.Exit(1) @@ -94,3 +109,26 @@ func main() { os.Exit(1) } } + +func printVersion() { + info, ok := debug.ReadBuildInfo() + if ok { + if versionTag == "" { + versionTag = info.Main.Version + } + for _, s := range info.Settings { + if s.Key == "vcs.revision" { + revision = s.Value[:8] + } + } + } + + fmt.Printf("tables-to-go/%s-%s %s/%s built with %s", versionTag, revision, + runtime.GOOS, runtime.GOARCH, runtime.Version()) + + //goland:noinspection GoBoolExpressions + if buildTimestamp != "" { + fmt.Printf(" on %s", buildTimestamp) + } + fmt.Println() +}