mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-04 02:26:19 +00:00
Merge pull request #375 from jon4hz/workspace
feat: search for workspace config in parent dir
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/Infisical/infisical-merge/packages/models"
|
"github.com/Infisical/infisical-merge/packages/models"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
@@ -73,7 +74,12 @@ func WorkspaceConfigFileExistsInCurrentPath() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetWorkSpaceFromFile() (models.WorkspaceConfigFile, error) {
|
func GetWorkSpaceFromFile() (models.WorkspaceConfigFile, error) {
|
||||||
configFileAsBytes, err := os.ReadFile(INFISICAL_WORKSPACE_CONFIG_FILE_NAME)
|
cfgFile, err := FindWorkspaceConfigFile()
|
||||||
|
if err != nil {
|
||||||
|
return models.WorkspaceConfigFile{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
configFileAsBytes, err := os.ReadFile(cfgFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return models.WorkspaceConfigFile{}, err
|
return models.WorkspaceConfigFile{}, err
|
||||||
}
|
}
|
||||||
@@ -87,6 +93,37 @@ func GetWorkSpaceFromFile() (models.WorkspaceConfigFile, error) {
|
|||||||
return workspaceConfigFile, nil
|
return workspaceConfigFile, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindWorkspaceConfigFile searches for a .infisical.json file in the current directory and all parent directories.
|
||||||
|
func FindWorkspaceConfigFile() (string, error) {
|
||||||
|
dir, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
for {
|
||||||
|
path := filepath.Join(dir, INFISICAL_WORKSPACE_CONFIG_FILE_NAME)
|
||||||
|
_, err := os.Stat(path)
|
||||||
|
if err == nil {
|
||||||
|
// file found
|
||||||
|
log.Debugf("FindWorkspaceConfigFile: workspace file found at [path=%s]", path)
|
||||||
|
|
||||||
|
return path, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if we have reached the root directory
|
||||||
|
if dir == filepath.Dir(dir) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
// move up one directory
|
||||||
|
dir = filepath.Dir(dir)
|
||||||
|
}
|
||||||
|
|
||||||
|
// file not found
|
||||||
|
return "", fmt.Errorf("file not found: %s", INFISICAL_WORKSPACE_CONFIG_FILE_NAME)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func GetFullConfigFilePath() (fullPathToFile string, fullPathToDirectory string, err error) {
|
func GetFullConfigFilePath() (fullPathToFile string, fullPathToDirectory string, err error) {
|
||||||
homeDir, err := GetHomeDir()
|
homeDir, err := GetHomeDir()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -89,8 +89,8 @@ func RequireServiceToken() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func RequireLocalWorkspaceFile() {
|
func RequireLocalWorkspaceFile() {
|
||||||
workspaceFileExists := WorkspaceConfigFileExistsInCurrentPath()
|
workspaceFilePath, _ := FindWorkspaceConfigFile()
|
||||||
if !workspaceFileExists {
|
if workspaceFilePath == "" {
|
||||||
PrintErrorMessageAndExit("It looks you have not yet connected this project to Infisical", "To do so, run [infisical init] then run your command again")
|
PrintErrorMessageAndExit("It looks you have not yet connected this project to Infisical", "To do so, run [infisical init] then run your command again")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user