Feat: Unify CLI auth methods

This commit is contained in:
Daniel Hougaard
2024-06-15 08:48:14 +02:00
parent 3b2a2d1a73
commit 49d2ea6f2e
+55 -16
View File
@@ -1,6 +1,7 @@
package cmd package cmd
import ( import (
"errors"
"fmt" "fmt"
"github.com/Infisical/infisical-merge/packages/models" "github.com/Infisical/infisical-merge/packages/models"
@@ -71,10 +72,6 @@ var getCmd = &cobra.Command{
var createCmd = &cobra.Command{ var createCmd = &cobra.Command{
Use: "create", Use: "create",
Short: "Create a folder", Short: "Create a folder",
PersistentPreRun: func(cmd *cobra.Command, args []string) {
util.RequireLogin()
util.RequireLocalWorkspaceFile()
},
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
environmentName, _ := cmd.Flags().GetString("env") environmentName, _ := cmd.Flags().GetString("env")
if !cmd.Flags().Changed("env") { if !cmd.Flags().Changed("env") {
@@ -84,6 +81,16 @@ var createCmd = &cobra.Command{
} }
} }
token, err := util.GetInfisicalToken(cmd)
if err != nil {
util.HandleError(err, "Unable to parse flag")
}
projectId, err := cmd.Flags().GetString("projectId")
if err != nil {
util.HandleError(err, "Unable to parse flag")
}
folderPath, err := cmd.Flags().GetString("path") folderPath, err := cmd.Flags().GetString("path")
if err != nil { if err != nil {
util.HandleError(err, "Unable to parse flag") util.HandleError(err, "Unable to parse flag")
@@ -95,19 +102,34 @@ var createCmd = &cobra.Command{
} }
if folderName == "" { if folderName == "" {
util.HandleError(fmt.Errorf("Invalid folder name"), "Folder name cannot be empty") util.HandleError(errors.New("invalid folder name, folder name cannot be empty"))
} }
workspaceFile, err := util.GetWorkSpaceFromFile()
if err != nil { if err != nil {
util.HandleError(err, "Unable to get workspace file") util.HandleError(err, "Unable to get workspace file")
} }
if projectId == "" {
workspaceFile, err := util.GetWorkSpaceFromFile()
if err != nil {
util.HandleError(err, "Unable to get workspace file")
}
projectId = workspaceFile.WorkspaceId
}
params := models.CreateFolderParameters{ params := models.CreateFolderParameters{
FolderName: folderName, FolderName: folderName,
WorkspaceId: workspaceFile.WorkspaceId,
Environment: environmentName, Environment: environmentName,
FolderPath: folderPath, FolderPath: folderPath,
WorkspaceId: projectId,
}
if token != nil && (token.Type == util.SERVICE_TOKEN_IDENTIFIER || token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER) {
params.InfisicalToken = token.Token
} else {
util.RequireLogin()
util.RequireLocalWorkspaceFile()
} }
_, err = util.CreateFolder(params) _, err = util.CreateFolder(params)
@@ -124,10 +146,6 @@ var createCmd = &cobra.Command{
var deleteCmd = &cobra.Command{ var deleteCmd = &cobra.Command{
Use: "delete", Use: "delete",
Short: "Delete a folder", Short: "Delete a folder",
PersistentPreRun: func(cmd *cobra.Command, args []string) {
util.RequireLogin()
util.RequireLocalWorkspaceFile()
},
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
environmentName, _ := cmd.Flags().GetString("env") environmentName, _ := cmd.Flags().GetString("env")
@@ -138,6 +156,16 @@ var deleteCmd = &cobra.Command{
} }
} }
token, err := util.GetInfisicalToken(cmd)
if err != nil {
util.HandleError(err, "Unable to parse flag")
}
projectId, err := cmd.Flags().GetString("projectId")
if err != nil {
util.HandleError(err, "Unable to parse flag")
}
folderPath, err := cmd.Flags().GetString("path") folderPath, err := cmd.Flags().GetString("path")
if err != nil { if err != nil {
util.HandleError(err, "Unable to parse flag") util.HandleError(err, "Unable to parse flag")
@@ -149,21 +177,32 @@ var deleteCmd = &cobra.Command{
} }
if folderName == "" { if folderName == "" {
util.HandleError(fmt.Errorf("Invalid folder name"), "Folder name cannot be empty") util.HandleError(errors.New("invalid folder name, folder name cannot be empty"))
} }
workspaceFile, err := util.GetWorkSpaceFromFile() if projectId == "" {
if err != nil { workspaceFile, err := util.GetWorkSpaceFromFile()
util.HandleError(err, "Unable to get workspace file") if err != nil {
util.HandleError(err, "Unable to get workspace file")
}
projectId = workspaceFile.WorkspaceId
} }
params := models.DeleteFolderParameters{ params := models.DeleteFolderParameters{
FolderName: folderName, FolderName: folderName,
WorkspaceId: workspaceFile.WorkspaceId, WorkspaceId: projectId,
Environment: environmentName, Environment: environmentName,
FolderPath: folderPath, FolderPath: folderPath,
} }
if token != nil && (token.Type == util.SERVICE_TOKEN_IDENTIFIER || token.Type == util.UNIVERSAL_AUTH_TOKEN_IDENTIFIER) {
params.InfisicalToken = token.Token
} else {
util.RequireLogin()
util.RequireLocalWorkspaceFile()
}
_, err = util.DeleteFolder(params) _, err = util.DeleteFolder(params)
if err != nil { if err != nil {
util.HandleError(err, "Unable to delete folder") util.HandleError(err, "Unable to delete folder")