diff --git a/authenticate.go b/authenticate.go index eecff35..4bac85e 100644 --- a/authenticate.go +++ b/authenticate.go @@ -44,8 +44,6 @@ func authLocalAuthenticate(args []string) { authCmd.StringVar(&authAccountid, "account", "", "Account ID (required)") authCmd.StringVar(&outputFormat, "o", "json", "Output format (text or json)") - outputFormat = "json" - authCmd.Parse(args) if authAccountid == "" { diff --git a/role.go b/role.go index eb44727..fc94b28 100644 --- a/role.go +++ b/role.go @@ -39,19 +39,22 @@ var roleCommands = []Command{ } func assumeRole(args []string) { - fmt.Println("I assume something") - var targetRole string var useIdentity string + var outputFormat string + roleAssumeRoleCmd := flag.NewFlagSet("assume-role", flag.ExitOnError) roleAssumeRoleCmd.StringVar(&targetRole, "r", "", "Target role (required)") - roleAssumeRoleCmd.StringVar(&targetRole, "role", "", "Target role (required)") + roleAssumeRoleCmd.StringVar(&targetRole, "rolename", "", "Target role (required)") roleAssumeRoleCmd.StringVar(&useIdentity, "identity", "", "Identity to use (required)") + roleAssumeRoleCmd.StringVar(&outputFormat, "output", "json", "Output format (json or text)") roleAssumeRoleCmd.Parse(args) + fmt.Println("output format is", outputFormat) + if targetRole == "" { - fmt.Println("Error: either -r or --role is required") + fmt.Println("Error: either -r or --rolename is required") os.Exit(1) } if useIdentity == "" { @@ -106,16 +109,6 @@ func assumeRole(args []string) { os.Exit(1) } - // fmt.Println("Response status:", resp.Status) - fmt.Println("Assumed role token:", apiresponse.Content.Token) - - // fmt.Printf("Attaching policy '%s' to role '%s'\n", , targetRole) - - fmt.Println("Response status:", resp.Status) - fmt.Printf("Assuming role '%s'\n", targetRole) - fmt.Println("Using identity", resp.Body) - - // Write apiresponse.Content to ~/.pcloud/roles/assumed-.json home, err := os.UserHomeDir() if err != nil { panic(err) @@ -134,6 +127,15 @@ func assumeRole(args []string) { os.Exit(1) } + // If the file exists, it will be deleted + if _, err := os.Stat(fmt.Sprintf("%s/%s.json", dir, targetRole)); err == nil { + err = os.Remove(fmt.Sprintf("%s/%s.json", dir, targetRole)) + if err != nil { + fmt.Printf("Error deleting existing role file: %v\n", err) + os.Exit(1) + } + } + roleFile := fmt.Sprintf("%s/%s.json", dir, targetRole) err = os.WriteFile(roleFile, roleData, 0600) if err != nil { @@ -141,7 +143,7 @@ func assumeRole(args []string) { os.Exit(1) } - fmt.Printf("Assumed role token saved to %s\n", roleFile) + // fmt.Printf("Assumed role token saved to %s\n", roleFile) } @@ -152,13 +154,13 @@ func roleAttachPolicy(args []string) { var targetRole string var useIdentity string - roleattachpolicyCmd.StringVar(&targetRole, "role", "", "Target role (required)") + roleattachpolicyCmd.StringVar(&targetRole, "rolename", "", "Target role (required)") roleattachpolicyCmd.StringVar(&useIdentity, "identity", "", "Identity to use (default: default)") roleattachpolicyCmd.Parse(args) if targetRole == "" { - fmt.Println("Error: either --role is required") + fmt.Println("Error: either --rolename is required") os.Exit(1) } if useIdentity == "" {