From fc76ce088a3a4f92389482ce08e2e8b036447dbf Mon Sep 17 00:00:00 2001 From: Ben Lovell Date: Sat, 27 Sep 2025 06:46:15 +0200 Subject: [PATCH 1/2] fmt: cargo fmt --- crates/config/src/towerfile.rs | 14 ++++------ crates/tower-cmd/src/api.rs | 1 - crates/tower-cmd/src/environments.rs | 4 +-- crates/tower-cmd/src/lib.rs | 14 ++++++---- crates/tower-cmd/src/package.rs | 35 ++++++++++++++++-------- crates/tower-cmd/src/towerfile_gen.rs | 20 ++++++-------- crates/tower-runtime/tests/local_test.rs | 5 +++- 7 files changed, 51 insertions(+), 42 deletions(-) diff --git a/crates/config/src/towerfile.rs b/crates/config/src/towerfile.rs index 84d7164e..648bc00f 100644 --- a/crates/config/src/towerfile.rs +++ b/crates/config/src/towerfile.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use std::path::PathBuf; #[derive(Deserialize, Serialize, Debug)] -pub struct Parameter{ +pub struct Parameter { #[serde(default)] pub name: String, @@ -116,7 +116,6 @@ impl Towerfile { Ok(()) } - /// add_parameter adds a new parameter to the Towerfile pub fn add_parameter(&mut self, name: String, description: String, default: String) { self.parameters.push(Parameter { @@ -277,20 +276,19 @@ mod test { fn test_add_parameter() { let mut towerfile = crate::Towerfile::default(); assert_eq!(towerfile.parameters.len(), 0); - + towerfile.add_parameter( "test-param".to_string(), "A test parameter".to_string(), - "default-value".to_string() + "default-value".to_string(), ); - + assert_eq!(towerfile.parameters.len(), 1); assert_eq!(towerfile.parameters[0].name, "test-param"); assert_eq!(towerfile.parameters[0].description, "A test parameter"); assert_eq!(towerfile.parameters[0].default, "default-value"); } - #[test] fn test_roundtrip_serialization() { let original_toml = r#"[app] @@ -310,11 +308,11 @@ name = "param2" description = "Second parameter" default = "value2" "#; - + let towerfile = crate::Towerfile::from_toml(original_toml).unwrap(); let serialized = toml::to_string_pretty(&towerfile).unwrap(); let reparsed = crate::Towerfile::from_toml(&serialized).unwrap(); - + assert_eq!(towerfile.app.name, reparsed.app.name); assert_eq!(towerfile.app.script, reparsed.app.script); assert_eq!(towerfile.app.source, reparsed.app.source); diff --git a/crates/tower-cmd/src/api.rs b/crates/tower-cmd/src/api.rs index c05d907a..be626d26 100644 --- a/crates/tower-cmd/src/api.rs +++ b/crates/tower-cmd/src/api.rs @@ -729,7 +729,6 @@ impl ResponseEntity for tower_api::apis::default_api::ListEnvironmentsSuccess { } } - pub async fn list_environments( config: &Config, ) -> Result< diff --git a/crates/tower-cmd/src/environments.rs b/crates/tower-cmd/src/environments.rs index cbc0ed9e..eb781921 100644 --- a/crates/tower-cmd/src/environments.rs +++ b/crates/tower-cmd/src/environments.rs @@ -36,9 +36,7 @@ pub async fn do_list(config: Config) { let envs_data: Vec> = resp .environments .into_iter() - .map(|env| { - vec![env.name] - }) + .map(|env| vec![env.name]) .collect(); // Display the table using the existing table function diff --git a/crates/tower-cmd/src/lib.rs b/crates/tower-cmd/src/lib.rs index 4347521c..c2ec7e4f 100644 --- a/crates/tower-cmd/src/lib.rs +++ b/crates/tower-cmd/src/lib.rs @@ -6,8 +6,9 @@ mod apps; mod deploy; mod environments; pub mod error; -mod package; +mod mcp; pub mod output; +mod package; mod run; mod schedules; mod secrets; @@ -16,7 +17,6 @@ mod teams; mod towerfile_gen; mod util; mod version; -mod mcp; pub use error::Error; @@ -165,10 +165,12 @@ impl App { } } } - Some(("mcp-server", args)) => mcp::do_mcp_server(sessionized_config, args).await.unwrap_or_else(|e| { - eprintln!("MCP server error: {}", e); - std::process::exit(1); - }), + Some(("mcp-server", args)) => mcp::do_mcp_server(sessionized_config, args) + .await + .unwrap_or_else(|e| { + eprintln!("MCP server error: {}", e); + std::process::exit(1); + }), _ => { cmd_clone.print_help().unwrap(); std::process::exit(2); diff --git a/crates/tower-cmd/src/package.rs b/crates/tower-cmd/src/package.rs index d06d43cb..10010321 100644 --- a/crates/tower-cmd/src/package.rs +++ b/crates/tower-cmd/src/package.rs @@ -30,7 +30,10 @@ pub fn package_cmd() -> Command { pub async fn do_package(_config: Config, args: &ArgMatches) { // Determine the directory to build the package from - let dir = PathBuf::from(args.get_one::("dir").expect("dir argument should have default value")); + let dir = PathBuf::from( + args.get_one::("dir") + .expect("dir argument should have default value"), + ); debug!("Building package from directory: {:?}", dir); let path = dir.join("Towerfile"); @@ -43,14 +46,19 @@ pub async fn do_package(_config: Config, args: &ArgMatches) { match Package::build(spec).await { Ok(package) => { spinner.success(); - + // Get the output path - let output_path = args.get_one::("output").expect("output path is required"); - + let output_path = args + .get_one::("output") + .expect("output path is required"); + // Save the package match save_package(&package, output_path).await { Ok(_) => { - output::success(&format!("Package created successfully: {}", output_path)); + output::success(&format!( + "Package created successfully: {}", + output_path + )); } Err(err) => { output::error(&format!("Failed to save package: {}", err)); @@ -69,19 +77,24 @@ pub async fn do_package(_config: Config, args: &ArgMatches) { } } -async fn save_package(package: &Package, output_path: &str) -> Result<(), Box> { - let package_path = package.package_file_path.as_ref() +async fn save_package( + package: &Package, + output_path: &str, +) -> Result<(), Box> { + let package_path = package + .package_file_path + .as_ref() .ok_or("No package file path found")?; - + let output_path = PathBuf::from(output_path); - + // Create parent directories if they don't exist if let Some(parent) = output_path.parent() { fs::create_dir_all(parent).await?; } - + // Copy the package file to the specified location fs::copy(package_path, &output_path).await?; - + Ok(()) } diff --git a/crates/tower-cmd/src/towerfile_gen.rs b/crates/tower-cmd/src/towerfile_gen.rs index 0e1314ee..58525a45 100644 --- a/crates/tower-cmd/src/towerfile_gen.rs +++ b/crates/tower-cmd/src/towerfile_gen.rs @@ -180,12 +180,10 @@ name = "custom-script-project" let result = TowerfileGenerator::from_pyproject(Some("/nonexistent/path/pyproject.toml"), None); assert!(result.is_err()); - assert!( - result - .unwrap_err() - .to_string() - .contains("pyproject.toml not found") - ); + assert!(result + .unwrap_err() + .to_string() + .contains("pyproject.toml not found")); } #[test] @@ -205,12 +203,10 @@ requires = ["setuptools"] let result = TowerfileGenerator::from_pyproject(Some(pyproject_path.to_str().unwrap()), None); assert!(result.is_err()); - assert!( - result - .unwrap_err() - .to_string() - .contains("No [project] section found") - ); + assert!(result + .unwrap_err() + .to_string() + .contains("No [project] section found")); } #[test] diff --git a/crates/tower-runtime/tests/local_test.rs b/crates/tower-runtime/tests/local_test.rs index 020de418..c8b7f863 100644 --- a/crates/tower-runtime/tests/local_test.rs +++ b/crates/tower-runtime/tests/local_test.rs @@ -71,7 +71,10 @@ async fn test_running_hello_world() { } let found_hello = outputs.iter().any(|line| line.contains("Hello, world!")); - assert!(found_hello, "Should have received 'Hello, world!' output from the application"); + assert!( + found_hello, + "Should have received 'Hello, world!' output from the application" + ); // check the status once more, should be done. let status = app.status().await.expect("Failed to get app status"); From 9f4630707200936e3d4610415047b8c0aeec164a Mon Sep 17 00:00:00 2001 From: Ben Lovell Date: Mon, 29 Sep 2025 17:30:40 +0200 Subject: [PATCH 2/2] chore: don't run CI twice for branches with no / in the name --- .github/workflows/test-python.yml | 5 ----- .github/workflows/test-rust.yml | 5 ----- 2 files changed, 10 deletions(-) diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index dca636ed..46ab23e5 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -7,11 +7,6 @@ name: "[tower] Test python" on: pull_request: - push: - branches: - - '*' - tags-ignore: - - '**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/test-rust.yml b/.github/workflows/test-rust.yml index a03ea32f..7aa01e41 100644 --- a/.github/workflows/test-rust.yml +++ b/.github/workflows/test-rust.yml @@ -7,11 +7,6 @@ name: "[tower] Test rust" on: pull_request: - push: - branches: - - '*' - tags-ignore: - - '**' concurrency: group: ${{ github.workflow }}-${{ github.ref }}