in main.go [629:683]
func createRun(cmd *cobra.Command, args []string) error {
ctx, client, err := clientWithContext(cmd.Context())
if err != nil {
return misuseError(err)
}
ref, err := parseRef(args[0])
if err != nil {
return misuseError(err)
}
data := strings.TrimSpace(args[1])
plaintext, err := readData(data)
if err != nil {
return misuseError(err)
}
switch t := ref.Type(); t {
case berglas.ReferenceTypeSecretManager:
secret, err := client.Create(ctx, &berglas.SecretManagerCreateRequest{
Project: ref.Project(),
Name: ref.Name(),
Locations: smLocations,
Plaintext: plaintext,
})
if err != nil {
return apiError(err)
}
fmt.Fprintf(stdout, "Successfully created secret [%s] with version [%s]\n",
secret.Name, secret.Version)
case berglas.ReferenceTypeStorage:
// Check if no unsupported options have been given
if len(smLocations) > 0 {
return misuseError(fmt.Errorf("locations on a per-secret basis unsupported for Storage keys"))
}
// Create the requested secret
secret, err := client.Create(ctx, &berglas.StorageCreateRequest{
Bucket: ref.Bucket(),
Object: ref.Object(),
Key: key,
Plaintext: plaintext,
})
if err != nil {
return apiError(err)
}
fmt.Fprintf(stdout, "Successfully created secret [%s] with generation [%d]\n",
secret.Name, secret.Generation)
default:
return misuseError(fmt.Errorf("unknown type %T", t))
}
return nil
}