fix: handle write_file toolset issue (#4174) #4331
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes 4174,
Issue:
write_file doesn't create parent directories automatically
f, err := ts.sftp.Create(guestPath) if err != nil { return nil, nil, err }The
sftp.Create()function tries to create a file, but it doesn't create parent directories.So when written to files with no parent dierectories,sftp.Create()fails with "file does not exist".Fix:
Ensure the parent directory exists before creating the file.
dir := filepath.Dir(guestPath) err = ts.sftp.MkdirAll(dir) if err != nil { return nil, nil, err }filepath.Dir(guestPath)extracts the parent directory from the full pathts.sftp.MkdirAll(dir)creates all parent directories