package
0.0.23
Repository: https://github.com/replit/ephemeral-iam.git
Documentation: pkg.go.dev

# README

Plugin Command Flags

Plugins can use the flags that are used by native ephemeral-iam commands. To see an example of this, reference the Command with flags example.

Here are the available flags and their intended usage.

NameCLI FormatDescription
ComputeInstanceFlag--instance/-iThe name of a compute instance
ProjectFlag--project/-pThe GCP project. Inherits from the active gcloud config by default
PubSubTopicFlag--topic/-tThe name of a Pub/Sub topic
ReasonFlag--reason/-RThe reason for running a command. ephemeral-iam uses this with the WithRequestReason option when creating API clients
RegionFlag--region/-rThe GCP region. Inherits from the active gcloud config by default
ServiceAccountEmailFlag--service-account-email/-sThe email address of a service account
StorageBucketFlag--bucket/-bThe name of a Storage Bucket
YesFlag--yes/-yAssume 'yes' to all prompts
ZoneFlag--zone/-zThe GCP zone. Inherits from the active gcloud config by default

Any of these flags can be marked as required by setting the last parameter in the function call to add them to a command to true. To then check for any missing required flags, call CheckRequired in the command's PreRunE function.

Example:


import (
    "github.com/rigup/ephemeral-iam/pkg/options"
    "github.com/spf13/cobra"
)

...

func pluginFuncWithEiamFlags(p *MyPlugin) *cobra.Command {
    var (
        instance string
        bucket   string
    )

    cmd := &cobra.Command{
        Use: "example",
        PreRunE: func(cmd *cobra.Command, args []string) error {
            // Check that the compute instance flag was provided
            return options.CheckRequired(cmd.Flags())
        },
        RunE: func(cmd *cobra.command, args []string) error {
            p.Log.Info("You provided the requied instance flag", "instance", instance)
            if bucket != "" {
                p.Log.Info("You provided the optional bucket flag", "bucket", bucket)
            }
            return nil
        }
    }
    // Add the `--instance`/`-i` flag and make it required
    options.AddComputeInstanceFlag(cmd.Flags(), &instance, true)
    // Add the `--bucket`/`-b` flag and make it optional
    options.AddStorageBucketFlag(cmd.Flags(), &bucket, false)

	return cmd
}

Adding custom flags to plugin commands

Custom flags can be added to plugin commands just like any other Cobra command as long as the name/shortform does not conflict with an existing flag.

Example:

func pluginFuncWithEiamFlags() *cobra.Command {
    cmd := &cobra.Command{
        Use: "example",
        RunE: func(cmd *cobra.command, args []string) error {
            if Verbose {
                fmt.Println("Verbose output enabled")
            }
            return nil
        }
    }

    cmd.Flags().BoolVarP(&Verbose, "verbose", "v", false, "Enable verbose output")

	return cmd
}

# Structs

BasicPlugin is the implementation of the ephemeral-iam plugin interface.