From 71562105a1c9cf2f616d9a73f13fffe2c95a0be5 Mon Sep 17 00:00:00 2001 From: MABD Date: Sat, 18 Apr 2026 01:14:45 +0300 Subject: [PATCH 1/5] use os.UserHomeDir to get platform specific home dir --- internal/config/types.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/config/types.go b/internal/config/types.go index 36ead6d..487a6f0 100644 --- a/internal/config/types.go +++ b/internal/config/types.go @@ -1,5 +1,7 @@ package config +import "os" + // Config holds all runtime options used by reposcan. // Values may come from a config file and/or be overridden by CLI flags. type Config struct { @@ -21,10 +23,13 @@ type Config struct { // Defaults returns a Config populated with sensible defaults suitable for // typical local development machines. func Defaults() Config { - //home, err := os.UserHomeDir() + home, err := os.UserHomeDir() + if err != nil { + home = "" + } var roots []string = nil - roots = []string{"$HOME"} + roots = []string{home} defaultDirIgnore := []string{ // --- Package managers / deps --- From 3a799d45e8eea99f0732e90e7b03e0c9c7b18101 Mon Sep 17 00:00:00 2001 From: MABD Date: Sat, 18 Apr 2026 01:15:48 +0300 Subject: [PATCH 2/5] add workflow_dispatch to go tests --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4210ae1..6626eda 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,6 +8,7 @@ on: branches: [ "main", "dev" ] pull_request: branches: [ "main", "dev" ] + workflow_dispatch: jobs: From f263962098a660bccbcfdab54132111f99668e8b Mon Sep 17 00:00:00 2001 From: MABD Date: Sat, 18 Apr 2026 01:32:43 +0300 Subject: [PATCH 3/5] fix home dir tmp swap function to cater for USERPROFILE env var --- internal/config/loader_validation_test.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/internal/config/loader_validation_test.go b/internal/config/loader_validation_test.go index a804b13..7918328 100644 --- a/internal/config/loader_validation_test.go +++ b/internal/config/loader_validation_test.go @@ -11,10 +11,26 @@ import ( func withTempHome(t *testing.T) (restore func(), tempHome string) { t.Helper() dir := t.TempDir() + + // On Windows, os.UserHomeDir() resolves the home directory by checking USERPROFILE first, then falling back to HOMEDRIVE+HOMEPATH. It only checks HOME as a last resort. oldHome := os.Getenv("HOME") - // On Windows, Cobra/Go may rely on USERPROFILE, but this repo is Linux oriented. + oldUserProfile := os.Getenv("USERPROFILE") + os.Setenv("HOME", dir) - return func() { os.Setenv("HOME", oldHome) }, dir + os.Setenv("USERPROFILE", dir) + + restoreEnv := func(key, val string) { + if val == "" { + os.Unsetenv(key) + } else { + os.Setenv(key, val) + } + } + + return func() { + restoreEnv("HOME", oldHome) + restoreEnv("USERPROFILE", oldUserProfile) + }, dir } func TestCreateOrReadConfigs_CreatesWhenMissingAndWritesFile(t *testing.T) { From c9a4fb30f58ebff92742dddeb5a79c25995e7012 Mon Sep 17 00:00:00 2001 From: MABD Date: Sat, 18 Apr 2026 01:42:59 +0300 Subject: [PATCH 4/5] fix unit test: output path for scan report is not windows compatable --- internal/render/file/file.go | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/internal/render/file/file.go b/internal/render/file/file.go index 3d9acf8..8af624f 100644 --- a/internal/render/file/file.go +++ b/internal/render/file/file.go @@ -3,9 +3,11 @@ package file import ( "encoding/json" "errors" + "fmt" + "path/filepath" + "github.com/mabd-dev/reposcan/internal/utils" "github.com/mabd-dev/reposcan/pkg/report" - "strings" ) // WriteScanReport writes the given ScanReport as a JSON file into dirPath. @@ -21,18 +23,8 @@ func WriteScanReport( return errors.New(msg) } - var sBuilder strings.Builder - sBuilder.WriteString(dirPath) - if !strings.HasSuffix(dirPath, "/") { - sBuilder.WriteString("/") - } - - sBuilder.WriteString("ScanReport ") - - datetime := report.GeneratedAt.Format("2006-01-02 15:04:05") - sBuilder.WriteString(datetime) - - sBuilder.WriteString(".json") + reportFileName := fmt.Sprintf("ScanReport %s.json", report.GeneratedAt.Format("2006-01-02 15-04-05")) + fullReportPath := filepath.Join(dirPath, reportFileName) - return utils.WriteToFile(jsonReport, sBuilder.String()) + return utils.WriteToFile(jsonReport, fullReportPath) } From 36372f6935f99109fe613810eb39575700857c51 Mon Sep 17 00:00:00 2001 From: MABD Date: Sat, 18 Apr 2026 01:47:09 +0300 Subject: [PATCH 5/5] remove claude code review runner --- .github/workflows/claude-code-review.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml index dab51bb..2aea7ee 100644 --- a/.github/workflows/claude-code-review.yml +++ b/.github/workflows/claude-code-review.yml @@ -1,14 +1,14 @@ name: Claude Code Review on: - pull_request: - types: [opened, synchronize] - # Optional: Only run on specific file changes - # paths: - # - "src/**/*.ts" - # - "src/**/*.tsx" - # - "src/**/*.js" - # - "src/**/*.jsx" + # pull_request: + # types: [opened, synchronize] + # # Optional: Only run on specific file changes + # # paths: + # # - "src/**/*.ts" + # # - "src/**/*.tsx" + # # - "src/**/*.js" + # # - "src/**/*.jsx" workflow_dispatch: jobs: