From b2474c63a8e0e6a5f08a6143c89b25e2c58ad105 Mon Sep 17 00:00:00 2001 From: Mahmudul Alam Date: Sun, 23 Nov 2025 15:04:39 +0600 Subject: [PATCH 1/3] feat: Add --clean flag for node directory cleanup and dynamic version-based directory naming with Makefile version sourcing. --- Apps/node_runner/Makefile | 2 +- Apps/node_runner/main.go | 48 +++++++++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/Apps/node_runner/Makefile b/Apps/node_runner/Makefile index ce2010c88..437a4e97d 100644 --- a/Apps/node_runner/Makefile +++ b/Apps/node_runner/Makefile @@ -4,7 +4,7 @@ BUILD_DIR=build # Version info -VERSION?=dev +VERSION ?= v$(shell if [ -f ../../Framework/Version.txt ]; then grep -Eo "version[[:space:]]*=[[:space:]]*[0-9]+\.[0-9]+\.[0-9]+" ../../Framework/Version.txt | head -n1 | sed 's/.*=//; s/ //g'; else echo dev; fi) APPNAME=ZeuZ_Node LDFLAGS=-X main.version=$(VERSION) diff --git a/Apps/node_runner/main.go b/Apps/node_runner/main.go index df5a31d2f..16b22ea99 100644 --- a/Apps/node_runner/main.go +++ b/Apps/node_runner/main.go @@ -15,16 +15,12 @@ import ( "github.com/automationsolutionz/Zeuz_Python_Node/Apps/node_runner/uv_installer" ) -const ( - zeuzDir = "ZeuZ_Node" -) - var ( version = "dev" branch = flag.String("branch", "", "Branch to download (defaults to tagged version)") + cleanFlag = flag.Bool("clean", false, "Remove ZeuZ Node directory and $HOME/.zeuz and exit") ) -// downloadFile downloads a file from URL to a local path func downloadFile(url, destPath string) error { resp, err := http.Get(url) if err != nil { @@ -135,8 +131,19 @@ func getZeuZNodeURL() string { return "https://github.com/AutomationSolutionz/Zeuz_Python_Node/archive/refs/heads/dev.zip" } +func getZeuZPostfix() string { + if *branch != "" { + return *branch + } + if version != "dev" && !strings.HasPrefix(version, "dev-") { + return version + } + return "dev" +} + // setupZeuzNode downloads and extracts the ZeuZ Node repository if not already present func setupZeuzNode() error { + zeuzDir := fmt.Sprintf("Zeuz_Python_Node-%s", getZeuZPostfix()) // Check if ZeuZ Node directory already exists and contains files if info, err := os.Stat(zeuzDir); err == nil && info.IsDir() { // Check if directory is not empty @@ -265,6 +272,37 @@ func main() { fmt.Printf("✅ ZeuZ Node %s\n", version) + zeuzDir := fmt.Sprintf("Zeuz_Python_Node-%s", getZeuZPostfix()) + + if *cleanFlag { + var removedAny bool + if err := os.RemoveAll(zeuzDir); err == nil { + fmt.Printf("Removed %s\n", zeuzDir) + removedAny = true + } else if !os.IsNotExist(err) { + fmt.Printf("Failed to remove %s: %v\n", zeuzDir, err) + } + + home, err := os.UserHomeDir() + if err == nil { + zeuzHome := filepath.Join(home, ".zeuz") + if err := os.RemoveAll(zeuzHome); err == nil { + fmt.Printf("Removed %s\n", zeuzHome) + removedAny = true + } else if !os.IsNotExist(err) { + fmt.Printf("Failed to remove %s: %v\n", zeuzHome, err) + } + } else { + fmt.Printf("Could not determine user home dir: %v\n", err) + } + + if !removedAny { + fmt.Println("Nothing removed. No matching directories found.") + } else { + fmt.Println("Cleanup complete — proceeding to download & install a fresh copy.") + } + } + // Setup ZeuZ Node directory and change into it if err := setupZeuzNode(); err != nil { fmt.Printf("Error setting up ZeuZ Node: %v\n", err) From 5345ef8b19e481482ddece4020d46ee57abe9141 Mon Sep 17 00:00:00 2001 From: sazid Date: Tue, 2 Dec 2025 17:08:26 +0600 Subject: [PATCH 2/3] feat: Add Go-based runner for ZeuZ Python Node with automatic setup and UV integration. --- Apps/node_runner/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Apps/node_runner/main.go b/Apps/node_runner/main.go index 16b22ea99..08089c7e8 100644 --- a/Apps/node_runner/main.go +++ b/Apps/node_runner/main.go @@ -143,7 +143,7 @@ func getZeuZPostfix() string { // setupZeuzNode downloads and extracts the ZeuZ Node repository if not already present func setupZeuzNode() error { - zeuzDir := fmt.Sprintf("Zeuz_Python_Node-%s", getZeuZPostfix()) + zeuzDir := fmt.Sprintf("Zeuz_Node-%s", getZeuZPostfix()) // Check if ZeuZ Node directory already exists and contains files if info, err := os.Stat(zeuzDir); err == nil && info.IsDir() { // Check if directory is not empty From 1ef9cf832e1237a4a660364677687ad80901862e Mon Sep 17 00:00:00 2001 From: sazid Date: Tue, 2 Dec 2025 17:14:43 +0600 Subject: [PATCH 3/3] Get zeuz node dir from a single function --- Apps/node_runner/main.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Apps/node_runner/main.go b/Apps/node_runner/main.go index 08089c7e8..ab46de7e4 100644 --- a/Apps/node_runner/main.go +++ b/Apps/node_runner/main.go @@ -16,8 +16,8 @@ import ( ) var ( - version = "dev" - branch = flag.String("branch", "", "Branch to download (defaults to tagged version)") + version = "dev" + branch = flag.String("branch", "", "Branch to download (defaults to tagged version)") cleanFlag = flag.Bool("clean", false, "Remove ZeuZ Node directory and $HOME/.zeuz and exit") ) @@ -131,19 +131,21 @@ func getZeuZNodeURL() string { return "https://github.com/AutomationSolutionz/Zeuz_Python_Node/archive/refs/heads/dev.zip" } -func getZeuZPostfix() string { +func getZeuZNodeDir() string { + selectedVersion := "" if *branch != "" { - return *branch + selectedVersion = *branch } if version != "dev" && !strings.HasPrefix(version, "dev-") { - return version + selectedVersion = version } - return "dev" + + return fmt.Sprintf("ZeuZ_Node-%s", selectedVersion) } // setupZeuzNode downloads and extracts the ZeuZ Node repository if not already present func setupZeuzNode() error { - zeuzDir := fmt.Sprintf("Zeuz_Node-%s", getZeuZPostfix()) + zeuzDir := getZeuZNodeDir() // Check if ZeuZ Node directory already exists and contains files if info, err := os.Stat(zeuzDir); err == nil && info.IsDir() { // Check if directory is not empty @@ -272,7 +274,7 @@ func main() { fmt.Printf("✅ ZeuZ Node %s\n", version) - zeuzDir := fmt.Sprintf("Zeuz_Python_Node-%s", getZeuZPostfix()) + zeuzDir := getZeuZNodeDir() if *cleanFlag { var removedAny bool