From d60a5a944a6d4a59d1fb58bec384102babbf1282 Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sun, 6 Jul 2025 10:55:18 +0000 Subject: [PATCH] Add sync-version --- Makefile | 27 ++++++++++++++++++--------- src/main.go | 4 ++++ src/version_test.go | 17 +++++++++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 src/version_test.go diff --git a/Makefile b/Makefile index a93892e..e7a9d67 100644 --- a/Makefile +++ b/Makefile @@ -10,9 +10,17 @@ GO_FILES=$(SOURCE_DIR)/main.go .PHONY: all all: build +# Sync version from debian/changelog to Go source +.PHONY: sync-version +sync-version: + @echo "Syncing version from debian/changelog..." + @VERSION=$$(head -1 debian/changelog | sed 's/.*(\([^)]*\)).*/\1/'); \ + sed -i "s/const Version = \".*\"/const Version = \"$$VERSION\"/" $(SOURCE_DIR)/main.go; \ + echo "Version synced: $$VERSION" + # Build the Go binary .PHONY: build -build: +build: sync-version @echo "Building $(BINARY_NAME)..." cd $(SOURCE_DIR) && go build -o ../$(BUILD_DIR)/$(BINARY_NAME) main.go @echo "Build complete: $(BINARY_NAME)" @@ -38,7 +46,7 @@ fmt: # Build Debian package .PHONY: pkg-deb -pkg-deb: +pkg-deb: sync-version build fakeroot dpkg-buildpackage -us -uc -b # Clean package artifacts @@ -52,10 +60,11 @@ clean-pkg: .PHONY: help help: @echo "Available targets:" - @echo " build - Build the router_backup binary" - @echo " clean - Remove build artifacts" - @echo " test - Run tests" - @echo " fmt - Format Go code" - @echo " pkg-deb - Create Debian package" - @echo " clean-pkg - Remove package artifacts" - @echo " help - Show this help message" + @echo " build - Build the router_backup binary" + @echo " clean - Remove build artifacts" + @echo " test - Run tests" + @echo " fmt - Format Go code" + @echo " sync-version - Sync version from debian/changelog to Go source" + @echo " pkg-deb - Create Debian package" + @echo " clean-pkg - Remove package artifacts" + @echo " help - Show this help message" diff --git a/src/main.go b/src/main.go index 3e46ddd..57ae9ba 100644 --- a/src/main.go +++ b/src/main.go @@ -15,6 +15,8 @@ import ( "gopkg.in/yaml.v2" ) +const Version = "1.0.0" + // Config structures type Config struct { Types map[string]DeviceType `yaml:"types"` @@ -228,6 +230,8 @@ func main() { Short: "SSH Router Backup Tool", Long: "Connects to routers via SSH and runs commands, saving output to local files.", Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("IPng Networks Router Backup v%s\n", Version) + // Load configuration config, err := loadConfig(configPath) if err != nil { diff --git a/src/version_test.go b/src/version_test.go new file mode 100644 index 0000000..0ee2023 --- /dev/null +++ b/src/version_test.go @@ -0,0 +1,17 @@ +package main + +import ( + "testing" +) + +func TestVersion(t *testing.T) { + if Version == "" { + t.Error("Version constant should not be empty") + } + + // Test that version follows semantic versioning pattern + // This is a basic check - could be more sophisticated + if len(Version) < 5 { // minimum "1.0.0" format + t.Errorf("Version '%s' seems too short for semantic versioning", Version) + } +}