| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- use crate::{rust_template::create_system, workspace::with_workspace};
- use anchor_cli::config::ConfigOverride;
- use anyhow::{anyhow, Result};
- use std::fs;
- // Create a new system from the template
- pub fn new_system(cfg_override: &ConfigOverride, name: String) -> Result<()> {
- with_workspace(cfg_override, |cfg| {
- match cfg.path().parent() {
- None => {
- println!("Unable to make new system");
- }
- Some(parent) => {
- std::env::set_current_dir(parent)?;
- let cluster = cfg.provider.cluster.clone();
- let programs = cfg.programs.entry(cluster).or_default();
- if programs.contains_key(&name) {
- return Err(anyhow!("Program already exists"));
- }
- programs.insert(
- name.clone(),
- anchor_cli::config::ProgramDeployment {
- address: {
- create_system(&name)?;
- anchor_cli::rust_template::get_or_create_program_id(&name)
- },
- path: None,
- idl: None,
- },
- );
- let toml = cfg.to_string();
- fs::write("Anchor.toml", toml)?;
- println!("Created new system: {}", name);
- }
- };
- Ok(())
- })
- }
|