| // Licensed to the Apache Software Foundation (ASF) under one or more | |
| // contributor license agreements. See the NOTICE file distributed with | |
| // this work for additional information regarding copyright ownership. | |
| // The ASF licenses this file to You under the Apache License, Version 2.0 | |
| // (the "License"); you may not use this file except in compliance with | |
| // the License. You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| package fs_tool | |
| import ( | |
| "beam.apache.org/playground/backend/internal/utils" | |
| "github.com/google/uuid" | |
| "path/filepath" | |
| ) | |
| const ( | |
| sourceFolderName = "src" | |
| compiledFolderName = "bin" | |
| ) | |
| // newCompilingLifeCycle creates LifeCycle for compiled SDK environment. | |
| func newCompilingLifeCycle(pipelineId uuid.UUID, pipelinesFolder, sourceFileExtension, compiledFileExtension string) *LifeCycle { | |
| baseFileFolder := filepath.Join(pipelinesFolder, pipelineId.String()) | |
| srcFileFolder := filepath.Join(baseFileFolder, sourceFolderName) | |
| binFileFolder := filepath.Join(baseFileFolder, compiledFolderName) | |
| srcFileName := pipelineId.String() + sourceFileExtension | |
| absSrcFileFolderPath, _ := filepath.Abs(srcFileFolder) | |
| absSrcFilePath, _ := filepath.Abs(filepath.Join(absSrcFileFolderPath, srcFileName)) | |
| execFileName := pipelineId.String() + compiledFileExtension | |
| absExecFileFolderPath, _ := filepath.Abs(binFileFolder) | |
| absExecFilePath, _ := filepath.Abs(filepath.Join(absExecFileFolderPath, execFileName)) | |
| absBaseFolderPath, _ := filepath.Abs(baseFileFolder) | |
| absLogFilePath, _ := filepath.Abs(filepath.Join(absBaseFolderPath, logFileName)) | |
| absGraphFilePath, _ := filepath.Abs(filepath.Join(absSrcFileFolderPath, utils.GraphFileName)) | |
| return &LifeCycle{ | |
| folderGlobs: []string{baseFileFolder, srcFileFolder, binFileFolder}, | |
| Paths: LifeCyclePaths{ | |
| SourceFileName: srcFileName, | |
| AbsoluteSourceFileFolderPath: absSrcFileFolderPath, | |
| AbsoluteSourceFilePath: absSrcFilePath, | |
| ExecutableFileName: execFileName, | |
| AbsoluteExecutableFileFolderPath: absExecFileFolderPath, | |
| AbsoluteExecutableFilePath: absExecFilePath, | |
| AbsoluteBaseFolderPath: absBaseFolderPath, | |
| AbsoluteLogFilePath: absLogFilePath, | |
| AbsoluteGraphFilePath: absGraphFilePath, | |
| }, | |
| } | |
| } | |
| // newInterpretedLifeCycle creates LifeCycle for interpreted SDK environment. | |
| func newInterpretedLifeCycle(pipelineId uuid.UUID, pipelinesFolder, sourceFileExtension string) *LifeCycle { | |
| sourceFileFolder := filepath.Join(pipelinesFolder, pipelineId.String()) | |
| fileName := pipelineId.String() + sourceFileExtension | |
| absFileFolderPath, _ := filepath.Abs(sourceFileFolder) | |
| absFilePath, _ := filepath.Abs(filepath.Join(absFileFolderPath, fileName)) | |
| absLogFilePath, _ := filepath.Abs(filepath.Join(absFileFolderPath, logFileName)) | |
| absGraphFilePath, _ := filepath.Abs(filepath.Join(absFileFolderPath, utils.GraphFileName)) | |
| return &LifeCycle{ | |
| folderGlobs: []string{sourceFileFolder}, | |
| Paths: LifeCyclePaths{ | |
| SourceFileName: fileName, | |
| AbsoluteSourceFileFolderPath: absFileFolderPath, | |
| AbsoluteSourceFilePath: absFilePath, | |
| ExecutableFileName: fileName, | |
| AbsoluteExecutableFileFolderPath: absFileFolderPath, | |
| AbsoluteExecutableFilePath: absFilePath, | |
| AbsoluteBaseFolderPath: absFileFolderPath, | |
| AbsoluteLogFilePath: absLogFilePath, | |
| AbsoluteGraphFilePath: absGraphFilePath, | |
| }, | |
| } | |
| } |