Skip to content

Commit 48cd8a4

Browse files
committed
add runner to project
1 parent ed7c246 commit 48cd8a4

File tree

5 files changed

+33
-2
lines changed

5 files changed

+33
-2
lines changed

crates/cli/src/deploy/setup_create_new_project.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
use {
22
crate::token::get_smb_token::get_smb_token,
3-
dialoguer::{theme::ColorfulTheme, Input},
3+
dialoguer::{console::Term, theme::ColorfulTheme, Input, Select},
44
regex::Regex,
55
smbcloud_model::{
66
error_codes::{ErrorCode, ErrorResponse},
77
project::{Project, ProjectCreate},
8+
runner::Runner,
89
},
910
smbcloud_network::environment::Environment,
1011
smbcloud_networking_project::crud_project_create::create_project,
@@ -73,6 +74,14 @@ pub(crate) async fn create_new_project(
7374
}
7475
};
7576

77+
let runners = vec![Runner::NodeJs, Runner::Swift, Runner::Ruby];
78+
let runner = Select::with_theme(&ColorfulTheme::default())
79+
.items(&runners)
80+
.default(0)
81+
.interact_on_opt(&Term::stderr())
82+
.map(|i| runners[i.unwrap()])
83+
.unwrap();
84+
7685
let access_token = match get_smb_token(env) {
7786
Ok(token) => token,
7887
Err(_) => {
@@ -88,6 +97,7 @@ pub(crate) async fn create_new_project(
8897
access_token,
8998
ProjectCreate {
9099
name,
100+
runner,
91101
repository,
92102
description,
93103
},

crates/cli/src/project/crud_create.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@ use crate::{
77
use anyhow::{anyhow, Result};
88
use chrono::Utc;
99
use console::style;
10+
use dialoguer::console::Term;
11+
use dialoguer::Select;
1012
use dialoguer::{theme::ColorfulTheme, Input};
1113
use smbcloud_model::project::ProjectCreate;
14+
use smbcloud_model::runner::Runner;
1215
use smbcloud_network::environment::Environment;
1316
use smbcloud_networking_project::crud_project_create::create_project;
1417
use spinners::Spinner;
@@ -31,6 +34,15 @@ pub async fn process_project_init(
3134
return Err(anyhow!(fail_message("Invalid project name.")));
3235
}
3336
};
37+
38+
let runners = vec![Runner::NodeJs, Runner::Swift, Runner::Ruby];
39+
let runner = Select::with_theme(&ColorfulTheme::default())
40+
.items(&runners)
41+
.default(0)
42+
.interact_on_opt(&Term::stderr())
43+
.map(|i| runners[i.unwrap()])
44+
.unwrap();
45+
3446
let repository = match Input::<String>::with_theme(&ColorfulTheme::default())
3547
.with_prompt("Repository name")
3648
.interact()
@@ -65,6 +77,7 @@ pub async fn process_project_init(
6577
access_token,
6678
ProjectCreate {
6779
name: project_name.clone(),
80+
runner,
6881
repository,
6982
description: description.clone(),
7083
},

crates/cli/src/project/crud_read.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ struct ProjectRow {
1919
id: i32,
2020
#[tabled(rename = "Name")]
2121
name: String,
22+
#[tabled(rename = "Runner")]
23+
runner: String,
2224
#[tabled(rename = "Repository")]
2325
repository: String,
2426
#[tabled(rename = "Description")]
@@ -112,6 +114,7 @@ pub(crate) fn show_projects(projects: Vec<Project>) {
112114
.map(|p| ProjectRow {
113115
id: p.id,
114116
name: p.name,
117+
runner: p.runner.to_string(),
115118
repository: p.repository.unwrap_or("-".to_string()),
116119
description: p.description.unwrap_or("-".to_owned()),
117120
})

crates/smbcloud-model/src/project.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ pub struct ProjectCreate {
3636
pub name: String,
3737
pub repository: String,
3838
pub description: String,
39+
pub runner: Runner,
3940
}
4041

4142
#[derive(Deserialize, Serialize, Debug)]
@@ -86,11 +87,13 @@ mod tests {
8687
name: "test".to_owned(),
8788
repository: "test".to_owned(),
8889
description: "test".to_owned(),
90+
runner: Runner::NodeJs,
8991
};
9092
let json = json!({
9193
"name": "test",
9294
"repository": "test", // Corrected: repository should be included as per struct
9395
"description": "test",
96+
"runner": 0
9497
});
9598
assert_eq!(serde_json::to_value(project_create).unwrap(), json);
9699
}

crates/smbcloud-model/src/runner.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
use {
22
crate::error_codes::{ErrorCode::UnsupportedRunner, ErrorResponse},
33
serde::{Deserialize, Serialize},
4+
serde_repr::{Deserialize_repr, Serialize_repr},
45
std::{
56
fmt::{self, Display, Formatter},
67
fs,
78
path::PathBuf,
89
},
910
};
1011

11-
#[derive(Debug, Serialize, Deserialize, Clone)]
12+
#[derive(Debug, Deserialize_repr, Serialize_repr, Clone, Copy)]
13+
#[repr(u8)]
1214
#[tsync::tsync]
1315
pub enum Runner {
1416
NodeJs,

0 commit comments

Comments
 (0)