MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / run

Method run

atomic-cli/src/commands/project/create.rs:122–192  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

120
121impl Command for ProjectCreate {
122 fn run(&self) -> CliResult<()> {
123 if self.name.is_empty() {
124 return Err(CliError::InvalidArgument {
125 message: "Project name is required.".to_string(),
126 });
127 }
128
129 let rt = tokio::runtime::Runtime::new().map_err(|e| {
130 CliError::Internal(anyhow::anyhow!("Failed to create async runtime: {}", e))
131 })?;
132
133 rt.block_on(async {
134 let (client, org_slug) =
135 build_client_with_org(self.org.as_deref(), self.server.as_deref()).await?;
136 let workspace =
137 resolve_workspace(&org_slug, self.workspace.as_deref(), self.server.as_deref())?;
138 let visibility = self.parse_visibility()?;
139
140 let req = CreateProjectRequest {
141 name: self.name.clone(),
142 description: self.description.clone(),
143 default_view: self.default_view.clone(),
144 kind: self.kind.clone(),
145 visibility,
146 };
147
148 let project = client
149 .create_project(&workspace, &req)
150 .await
151 .map_err(remote_err)?;
152
153 print_success(&format!(
154 "Created project: {} (slug: {})",
155 project.name, project.slug
156 ));
157 println!();
158
159 let vcs_url = format!(
160 "{}/workspaces/{}/projects/{}/code",
161 client.base_url(),
162 workspace,
163 project.slug,
164 );
165
166 let details = KeyValueTable::new()
167 .add("Workspace", &workspace)
168 .add("Default view", &project.default_view)
169 .add("Visibility", project.visibility.to_string())
170 .add("VCS URL", &vcs_url);
171
172 println!("{}", details);
173
174 // Mirror what the user typed when building the follow-up hint.
175 // Omitting flags that fell back to defaults reinforces that the
176 // default-workspace / default-org config is in effect.
177 let mut init_cmd = format!("atomic project init {}", project.slug);
178 if self.workspace.is_some() {
179 init_cmd.push_str(&format!(" --workspace {workspace}"));

Callers 1

empty_name_rejectedFunction · 0.45

Calls 9

build_client_with_orgFunction · 0.85
resolve_workspaceFunction · 0.85
print_successFunction · 0.85
print_next_stepsFunction · 0.85
create_projectMethod · 0.80
is_emptyMethod · 0.45
parse_visibilityMethod · 0.45
cloneMethod · 0.45
addMethod · 0.45

Tested by 1

empty_name_rejectedFunction · 0.36