diff --git a/.changes/cli-empty-responses.md b/.changes/cli-empty-responses.md new file mode 100644 index 00000000000..d5a4ee4eb90 --- /dev/null +++ b/.changes/cli-empty-responses.md @@ -0,0 +1,6 @@ +--- +'tauri-cli': 'patch:enhance' +'@tauri-apps/cli': 'patch:enhance' +--- + +Allow empty responses for `devUrl`, `beforeDevCommand` and `beforeBuildCommands` questions in `tauri init`. diff --git a/tooling/cli/src/helpers/prompts.rs b/tooling/cli/src/helpers/prompts.rs index f7d0fb96c9e..37621981be7 100644 --- a/tooling/cli/src/helpers/prompts.rs +++ b/tooling/cli/src/helpers/prompts.rs @@ -15,6 +15,7 @@ pub fn input( where T: Clone + FromStr + Display + ToString, T::Err: Display + std::fmt::Debug, + T: PartialEq, { if skip { Ok(initial) @@ -28,7 +29,10 @@ where builder = builder.with_initial_text(v.to_string()); } - builder.interact_text().map(Some).map_err(Into::into) + builder + .interact_text() + .map(|t: T| if t.ne("") { Some(t) } else { None }) + .map_err(Into::into) } } diff --git a/tooling/cli/src/init.rs b/tooling/cli/src/init.rs index 96914324b51..e8cb7907aef 100644 --- a/tooling/cli/src/init.rs +++ b/tooling/cli/src/init.rs @@ -89,18 +89,28 @@ impl Options { self.app_name = self.app_name.map(|s| Ok(Some(s))).unwrap_or_else(|| { prompts::input( "What is your app name?", - init_defaults.app_name.clone(), + Some( + init_defaults + .app_name + .clone() + .unwrap_or_else(|| "Tauri App".to_string()), + ), self.ci, - false, + true, ) })?; self.window_title = self.window_title.map(|s| Ok(Some(s))).unwrap_or_else(|| { prompts::input( "What should the window title be?", - init_defaults.app_name.clone(), + Some( + init_defaults + .app_name + .clone() + .unwrap_or_else(|| "Tauri".to_string()), + ), self.ci, - false, + true, ) })?; @@ -116,7 +126,7 @@ impl Options { "What is the url of your dev server?", init_defaults.framework.map(|f| f.dev_url()), self.ci, - false, + true, ) })?; @@ -131,6 +141,7 @@ impl Options { true, ) })?; + self.before_build_command = self .before_build_command .map(|s| Ok(Some(s))) @@ -186,35 +197,21 @@ pub fn command(mut options: Options) -> Result<()> { data.insert("tauri_build_dep", to_json(tauri_build_dep)); data.insert( "frontend_dist", - to_json( - options - .frontend_dist - .unwrap_or_else(|| "../dist".to_string()), - ), - ); - data.insert( - "dev_url", - to_json( - options - .dev_url - .unwrap_or_else(|| "http://localhost:4000".to_string()), - ), + to_json(options.frontend_dist.as_deref().unwrap_or("../dist")), ); + data.insert("dev_url", to_json(options.dev_url)); data.insert( "app_name", - to_json(options.app_name.unwrap_or_else(|| "Tauri App".to_string())), + to_json(options.app_name.as_deref().unwrap_or("Tauri App")), ); data.insert( "window_title", - to_json(options.window_title.unwrap_or_else(|| "Tauri".to_string())), - ); - data.insert( - "before_dev_command", - to_json(options.before_dev_command.unwrap_or_default()), + to_json(options.window_title.as_deref().unwrap_or("Tauri")), ); + data.insert("before_dev_command", to_json(options.before_dev_command)); data.insert( "before_build_command", - to_json(options.before_build_command.unwrap_or_default()), + to_json(options.before_build_command), ); let mut config = serde_json::from_str( diff --git a/tooling/cli/src/plugin/android.rs b/tooling/cli/src/plugin/android.rs index 23c9fded602..59451405350 100644 --- a/tooling/cli/src/plugin/android.rs +++ b/tooling/cli/src/plugin/android.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT use crate::{ - helpers::{prompts::input, template}, + helpers::{prompts, template}, Result, }; use clap::{Parser, Subcommand}; @@ -59,7 +59,7 @@ pub fn command(cli: Cli) -> Result<()> { return Err(anyhow::anyhow!("android folder already exists")); } - let plugin_id = input( + let plugin_id = prompts::input( "What should be the Android Package ID for your plugin?", Some(format!("com.plugin.{}", plugin_name)), false, diff --git a/tooling/cli/src/plugin/init.rs b/tooling/cli/src/plugin/init.rs index 867ede43698..9b474b4b62c 100644 --- a/tooling/cli/src/plugin/init.rs +++ b/tooling/cli/src/plugin/init.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT -use crate::helpers::prompts::input; +use crate::helpers::prompts; use crate::Result; use crate::{ helpers::{resolve_tauri_path, template}, @@ -141,7 +141,7 @@ pub fn command(mut options: Options) -> Result<()> { } let plugin_id = if options.android || options.mobile { - let plugin_id = input( + let plugin_id = prompts::input( "What should be the Android Package ID for your plugin?", Some(format!("com.plugin.{}", plugin_name)), false, diff --git a/tooling/cli/templates/tauri.conf.json b/tooling/cli/templates/tauri.conf.json index 66155a36330..c40efec9b92 100644 --- a/tooling/cli/templates/tauri.conf.json +++ b/tooling/cli/templates/tauri.conf.json @@ -3,10 +3,10 @@ "version": "0.1.0", "identifier": "com.tauri.dev", "build": { - "frontendDist": "{{ frontend_dist }}", - "devUrl": "{{ dev_url }}", - "beforeDevCommand": "{{ before_dev_command }}", - "beforeBuildCommand": "{{ before_build_command }}" + "frontendDist": "{{ frontend_dist }}"{{#if dev_url}}, + "devUrl": "{{ dev_url }}"{{/if}}{{#if before_dev_command}}, + "beforeDevCommand": "{{ before_dev_command }}"{{/if}}{{#if before_build_command}}, + "beforeBuildCommand": "{{ before_build_command }}"{{/if}} }, "app": { "windows": [