diff --git a/.changes/pkg-manager-based-on-template.md b/.changes/pkg-manager-based-on-template.md new file mode 100644 index 0000000000..87a5c22a0b --- /dev/null +++ b/.changes/pkg-manager-based-on-template.md @@ -0,0 +1,6 @@ +--- +"create-tauri-app": "patch" +"create-tauri-app-js": "patch" +--- + +Only prompt for supported package managers when using `--template` cli option. \ No newline at end of file diff --git a/README.md b/README.md index a13d02fc7b..fe61c693b4 100644 --- a/README.md +++ b/README.md @@ -54,23 +54,23 @@ pnpm create tauri-app
-You can also directly specify the project name and the template you want to use via additional command line options. For example, to scaffold a Vite + Vue project, run: +You can also directly specify the project name, package manager and the template you want to use via additional command line options. For example, to scaffold a Vue project in a `my-tauri-app` directory, using `pnpm`, run: ```bash # curl -sh <(curl https://create.tauri.app/sh) --template svelte +sh <(curl https://create.tauri.app/sh) my-tauri-app --template svelte --manager pnpm # wget -sh <(wget https://create.tauri.app/sh) --template svelte +sh <(wget https://create.tauri.app/sh) my-tauri-app --template svelte --manager pnpm # cargo -cargo create-tauri-app --template svelte +cargo create-tauri-app my-tauri-app --template svelte --manager pnpm # npm 6.x -npm create tauri-app@latest my-tauri-app --template svelte +npm create tauri-app@latest my-tauri-app --template svelte --manager pnpm # npm 7+, extra double-dash is needed: -npm create tauri-app@latest my-tauri-app -- --template svelte +npm create tauri-app@latest my-tauri-app -- --template svelte --manager pnpm # yarn -yarn create tauri-app my-tauri-app --template svelte +yarn create tauri-app my-tauri-app --template svelte --manager pnpm # pnpm -pnpm create tauri-app my-tauri-app --template svelte +pnpm create tauri-app my-tauri-app --template svelte --manager pnpm ``` Currently supported template presets include: diff --git a/packages/cli/README.md b/packages/cli/README.md index ba54f9c472..7d3829f5d0 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -20,10 +20,10 @@ cargo create-tauri-app
-You can also directly specify the project name and the template you want to use via additional command line options. For example, to scaffold a Vite + Vue project, run: +You can also directly specify the project name, package manager and the template you want to use via additional command line options. For example, to scaffold a Yew project in a `my-tauri-app` directory, using `cargo`, run: ```bash -cargo create-tauri-app --template svelte +cargo create-tauri-app my-tauri-app --template yew --manager cargo ``` Currently supported template presets include: diff --git a/packages/cli/node/README.md b/packages/cli/node/README.md index e0b02dfe2d..744fe94f3a 100644 --- a/packages/cli/node/README.md +++ b/packages/cli/node/README.md @@ -31,18 +31,18 @@ pnpm create tauri-app
-You can also directly specify the project name and the template you want to use via additional command line options. For example, to scaffold a Vite + Vue project, run: +You can also directly specify the project name, package manager and the template you want to use via additional command line options. For example, to scaffold a Vue project in a `my-tauri-app` directory, using `pnpm`, run: ```bash # npm 6.x -npm create tauri-app@latest my-tauri-app --template svelte +npm create tauri-app@latest my-tauri-app --template svelte --manager pnpm # npm 7+, extra double-dash is needed: -npm create tauri-app@latest my-tauri-app -- --template svelte +npm create tauri-app@latest my-tauri-app -- --template svelte --manager pnpm # yarn -yarn create tauri-app my-tauri-app --template svelte +yarn create tauri-app my-tauri-app --template svelte --manager pnpm # pnpm -pnpm create tauri-app my-tauri-app --template svelte +pnpm create tauri-app my-tauri-app --template svelte --manager pnpm ``` Currently supported template presets include: diff --git a/packages/cli/src/lib.rs b/packages/cli/src/lib.rs index 35bfa19e45..810b352d9f 100644 --- a/packages/cli/src/lib.rs +++ b/packages/cli/src/lib.rs @@ -131,14 +131,28 @@ where if skip { defaults.manager.unwrap() } else { - let managers = PackageManager::ALL; - let index = Select::with_theme(&ColorfulTheme::default()) - .with_prompt("Choose your package manager") - .items(managers) - .default(0) - .interact() - .unwrap(); - managers[index] + let managers = PackageManager::ALL.to_vec(); + let managers = args + .template + .map(|t| { + managers + .iter() + .copied() + .filter(|p| p.templates().contains(&t)) + .collect::>() + }) + .unwrap_or(managers); + if managers.len() == 1 { + managers[0] + } else { + let index = Select::with_theme(&ColorfulTheme::default()) + .with_prompt("Choose your package manager") + .items(&managers) + .default(0) + .interact() + .unwrap(); + managers[index] + } } });