You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by pa...@apache.org on 2021/10/19 23:24:40 UTC
[beam] branch master updated: [BEAM_13077][Playground] fix logic
for CreateFolders method
This is an automated email from the ASF dual-hosted git repository.
pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 90251e6 [BEAM_13077][Playground] fix logic for CreateFolders method
new 4d1c2af Merge pull request #15750 from [BEAM-13077][Playground] LifeCycle.CreateFolders() after several uses returns error
90251e6 is described below
commit 90251e631beee35f1847025147d55227f3ba999d
Author: AydarZaynutdinov <ay...@akvelon.com>
AuthorDate: Tue Oct 19 14:01:57 2021 +0300
[BEAM_13077][Playground]
fix logic for CreateFolders method
---
playground/backend/internal/fs_tool/fs.go | 54 +++++++++++++++++++++++---
playground/backend/internal/fs_tool/fs_test.go | 3 +-
2 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/playground/backend/internal/fs_tool/fs.go b/playground/backend/internal/fs_tool/fs.go
index 2e2e9e7..481fade 100644
--- a/playground/backend/internal/fs_tool/fs.go
+++ b/playground/backend/internal/fs_tool/fs.go
@@ -27,6 +27,7 @@ import (
)
const (
+ projectRoot = "backend"
parentBaseFileFolder = "internal"
fileMode = 0600
)
@@ -63,12 +64,12 @@ func NewLifeCycle(sdk pb.Sdk, pipelineId uuid.UUID) (*LifeCycle, error) {
// CreateFolders creates all folders which will be used for code execution.
func (l *LifeCycle) CreateFolders() error {
- err := os.Chdir("../..")
+ err := setUpWorkingDir()
if err != nil {
return err
}
for _, folder := range l.folderGlobs {
- err := os.MkdirAll(folder, fs.ModePerm)
+ err = os.MkdirAll(folder, fs.ModePerm)
if err != nil {
return err
}
@@ -78,8 +79,12 @@ func (l *LifeCycle) CreateFolders() error {
// DeleteFolders deletes all previously provisioned folders.
func (l *LifeCycle) DeleteFolders() error {
+ err := setUpWorkingDir()
+ if err != nil {
+ return err
+ }
for _, folder := range l.folderGlobs {
- err := os.RemoveAll(folder)
+ err = os.RemoveAll(folder)
if err != nil {
return err
}
@@ -89,13 +94,17 @@ func (l *LifeCycle) DeleteFolders() error {
// CreateExecutableFile creates an executable file (i.e. file.java for the Java SDK).
func (l *LifeCycle) CreateExecutableFile(code string) (string, error) {
- if _, err := os.Stat(l.Folder.ExecutableFolder); os.IsNotExist(err) {
+ err := setUpWorkingDir()
+ if err != nil {
+ return "", err
+ }
+ if _, err = os.Stat(l.Folder.ExecutableFolder); os.IsNotExist(err) {
return "", err
}
fileName := getFileName(l.pipelineId, l.Extension.ExecutableExtension)
filePath := filepath.Join(l.Folder.ExecutableFolder, fileName)
- err := os.WriteFile(filePath, []byte(code), fileMode)
+ err = os.WriteFile(filePath, []byte(code), fileMode)
if err != nil {
return "", err
}
@@ -133,3 +142,38 @@ func (l *LifeCycle) GetExecutableName() (string, error) {
func getFileName(pipelineId uuid.UUID, fileType string) string {
return fmt.Sprintf("%s.%s", pipelineId, fileType)
}
+
+// setUpWorkingDir sets projectRoot as a working directory.
+func setUpWorkingDir() error {
+ folder, err := getWorkingDirName()
+ if err != nil {
+ return err
+ }
+
+ // go up to parent directory until working dir isn't projectRoot dir
+ for !strings.EqualFold(folder, projectRoot) {
+ err = os.Chdir("..")
+ if err != nil {
+ return err
+ }
+
+ folder, err = getWorkingDirName()
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+// getWorkingDirName returns the working directory's name.
+func getWorkingDirName() (string, error) {
+ path, err := os.Getwd()
+ if err != nil {
+ return "", err
+ }
+
+ folders := strings.Split(path, "/")
+ folder := folders[len(folders)-1]
+ return folder, nil
+}
diff --git a/playground/backend/internal/fs_tool/fs_test.go b/playground/backend/internal/fs_tool/fs_test.go
index 7936ad2..1b1b304 100644
--- a/playground/backend/internal/fs_tool/fs_test.go
+++ b/playground/backend/internal/fs_tool/fs_test.go
@@ -95,7 +95,7 @@ func TestLifeCycle_CreateExecutableFile(t *testing.T) {
t.Errorf("CreateExecutableFile() got = %v, want %v", got, tt.want)
}
})
- os.RemoveAll(parentBaseFileFolder)
+ os.RemoveAll(baseFileFolder)
}
}
@@ -410,6 +410,7 @@ func TestLifeCycle_GetExecutableName(t *testing.T) {
if got != tt.want {
t.Errorf("GetExecutableName() got = %v, want %v", got, tt.want)
}
+ os.RemoveAll(baseFileFolder)
})
}
}