Skip to content

Commit e14c1dd

Browse files
committed
Improvement to extended data
- add validation: edFolder can not be the same as working dir - update extended data to not clear edFolder
1 parent f456da5 commit e14c1dd

File tree

3 files changed

+30
-24
lines changed

3 files changed

+30
-24
lines changed

internal/capture/extended_data.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,6 @@ func (ed *ExtendedData) Run() (Result, error) {
3333
return Result{Msg: errMsg, Ok: false}, err
3434
}
3535

36-
// Clear existing files in the data folder
37-
if err := ed.clearDataFolder(); err != nil {
38-
logger.Log("ExtendedData: failed to clear data folder: %v", err)
39-
}
40-
4136
// Execute the custom script with timeout
4237
if err := ed.executeScript(); err != nil {
4338
// We log the error but continue to upload any files that might have been generated
@@ -56,23 +51,6 @@ func (ed *ExtendedData) Run() (Result, error) {
5651
return ed.uploadCapturedFiles()
5752
}
5853

59-
// clearDataFolder removes all files from the data folder
60-
func (ed *ExtendedData) clearDataFolder() error {
61-
entries, err := os.ReadDir(ed.DataFolder)
62-
if err != nil {
63-
return fmt.Errorf("ExtendedData: failed to read data folder: %w", err)
64-
}
65-
66-
for _, entry := range entries {
67-
path := filepath.Join(ed.DataFolder, entry.Name())
68-
if err := os.RemoveAll(path); err != nil {
69-
return fmt.Errorf("ExtendedData: failed to remove %s: %w", path, err)
70-
}
71-
}
72-
73-
return nil
74-
}
75-
7654
// executeScript runs the custom script with a timeout
7755
func (ed *ExtendedData) executeScript() error {
7856
logger.Log("ExtendedData: executing custom script: %s", ed.Script)
@@ -200,7 +178,6 @@ func (ed *ExtendedData) uploadCapturedFiles() (Result, error) {
200178
successCount := 0
201179
failCount := 0
202180
var lastError error
203-
204181
uploadMsgs := []string{}
205182

206183
// Filter files with "ed-" prefix

internal/cli/validation.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import "C"
44
import (
55
"errors"
66
"os"
7+
"path/filepath"
78

89
"yc-agent/internal/config"
910
"yc-agent/internal/logger"
@@ -41,5 +42,33 @@ func validate() error {
4142
return ErrInvalidArgumentCantContinue
4243
}
4344

45+
// Validate edDataFolder is not the current working directory
46+
if config.GlobalConfig.EdDataFolder != "" {
47+
currentDir, err := os.Getwd()
48+
if err != nil {
49+
logger.Log("Failed to get current working directory: %v", err)
50+
return ErrInvalidArgumentCantContinue
51+
}
52+
53+
edDataFolderAbs, err := filepath.Abs(config.GlobalConfig.EdDataFolder)
54+
if err != nil {
55+
logger.Log("Failed to resolve edDataFolder path '%s': %v", config.GlobalConfig.EdDataFolder, err)
56+
return ErrInvalidArgumentCantContinue
57+
}
58+
59+
currentDirAbs, err := filepath.Abs(currentDir)
60+
if err != nil {
61+
logger.Log("Failed to resolve current directory path: %v", err)
62+
return ErrInvalidArgumentCantContinue
63+
}
64+
65+
if edDataFolderAbs == currentDirAbs {
66+
logger.Log("ERROR: edDataFolder cannot be the current working directory")
67+
logger.Log("Current directory: %s", currentDirAbs)
68+
logger.Log("edDataFolder: %s", edDataFolderAbs)
69+
return ErrInvalidArgumentCantContinue
70+
}
71+
}
72+
4473
return nil
4574
}

internal/config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ type Options struct {
9292

9393
// Extended Data
9494
EdScript string `yaml:"edScript" usage:"Extended Data: Path to a custom script that collects extended diagnostics data"`
95-
EdDataFolder string `yaml:"edDataFolder" usage:"Extended Data: Directory path where artifacts generated by (-edScript) will be stored and collected. WARNING: All existing files in this folder will be cleared before script execution"`
95+
EdDataFolder string `yaml:"edDataFolder" usage:"Extended Data: Directory path where artifacts generated by (-edScript) will be stored and collected."`
9696

9797
HttpClientTimeout time.Duration `yaml:"httpClientTimeout" usage:"HTTP client timeout for API requests (e.g., 1m, 30s). Default is 60 seconds."`
9898
}

0 commit comments

Comments
 (0)