# gcloud-ctx [![Crate](https://img.shields.io/crates/v/gcloud-ctx.svg)](https://crates.io/crates/gcloud-ctx) [![API](https://docs.rs/gcloud-ctx/badge.svg)](https://docs.rs/gcloud-ctx) [![License](https://img.shields.io/github/license/adamrodger/gcloud-ctx)](https://github.com/adamrodger/gcloud-ctx) A Rust implementation of [`gcloud config configurations`](https://cloud.google.com/sdk/gcloud/reference/config/configurations) for managing different `gcloud` configurations for Google Cloud Platform. This is the library containing the core logic which is used to build the associated [`gctx`](https://github.com/adamrodger/gctx) command line utility. **Note**: `gcloud-ctx` is independent and not affiliated with Google in any way. ## Usage ```rust use gcloud_ctx::{ConfigurationStore, ConflictAction}; let mut store = ConfigurationStore::with_default_location()?; // create a new configuration, optionally with a force overwrite use gcloud_ctx::PropertiesBuilder; let properties = PropertiesBuilder::default() .project("my-project") .account("a.user@example.org") .zone("europe-west1-d") .region("europe-west1") .build(); store.create("foo", &properties, ConflictAction::Overwrite)?; // list configurations for config in store.configurations() { println!("{}", config.name()); } // activate a configuration by name store.activate("foo")?; // get the active configuration println!("{}", store.active()); // copy an existing configuration, with force overwrite store.copy("foo", "bar", ConflictAction::Overwrite)?; // rename an existing configuration, with force overwrite store.rename("bar", "baz", ConflictAction::Overwrite)?; // delete a configuration store.delete("baz")?; // get properties of a configuration let properties = store.describe("foo")?; properties.to_writer(std::io::stdout())?; ``` ## License `gcloud-ctx` is distributed under the terms of the MIT license