Loading and saving the Safecoin CLI configuration file.
The configuration file used by the Safecoin CLI includes information about the
RPC node to connect to, the path to the user's signing source, and more.
Other software than the Safecoin CLI may wish to access the same configuration
and signer.
The default path to the configuration file can be retrieved from
[`CONFIG_FILE`], which is a [lazy_static] of `Option`, the value of
which is
> `~/.config/solana/cli/config.yml`
[`CONFIG_FILE`]: struct@CONFIG_FILE
[lazy_static]: https://docs.rs/lazy_static
`CONFIG_FILE` will only be `None` if it is unable to identify the user's
home directory, which should not happen under typical OS environments.
The CLI configuration is defined by the [`Config`] struct, and its value is
loaded with [`Config::load`] and saved with [`Config::save`].
Two important fields of `Config` are
- [`json_rpc_url`], the URL to pass to
`safecoin_client::rpc_client::RpcClient`.
- [`keypair_path`], a signing source, which may be a keypair file, but
may also represent several other types of signers, as described in
the documentation for `safecoin_clap_utils::keypair::signer_from_path`.
[`json_rpc_url`]: Config::json_rpc_url
[`keypair_path`]: Config::keypair_path
# Examples
Loading and saving the configuration. Note that this uses the [anyhow] crate
for error handling.
[anyhow]: https://docs.rs/anyhow
```no_run
use anyhow::anyhow;
use safecoin_cli_config::{CONFIG_FILE, Config};
let config_file = safecoin_cli_config::CONFIG_FILE.as_ref()
.ok_or_else(|| anyhow!("unable to get config file path"))?;
let mut cli_config = Config::load(&config_file)?;
// Set the RPC URL to devnet
cli_config.json_rpc_url = "https://api.devnet.safecoin.org".to_string();
cli_config.save(&config_file)?;
# Ok::<(), anyhow::Error>(())
```