denoland/deno · #36736

fix(cli): generate valid bash completions

taljeon · merged Sep 14, 20261 files · 13 + / 4
libs/cli_parser/src/completions.rs13 + / 4
@@ -46,15 +46,14 @@ fn generate_bash(cmd: &CommandDef) -> Vec<u8> {   // Add subcommand detection   for sub in cmd.subcommands {     out.push_str(&format!(-            "            \"{name},{}\")\\n                cmd=\"{name}__{}\"\n                ;;\n",+            "            \"{name},{}\")\n                cmd=\"{name}__{}\"\n                ;;\n",             sub.name,             sub.name.replace('-', "__"),         ));   } -  out.push_str(-    "            *)\\n                ;;\n        esac\n    done\n\n",-  );+  out+    .push_str("            *)\n                ;;\n        esac\n    done\n\n");    // Root command completions   let root_flags: Vec<String> = cmd@@ -747,6 +746,16 @@ mod tests {     assert!(v.iter().any(|f| f.starts_with("--")), "{v:?}");   } +  #[test]+  fn generate_bash_uses_real_newlines() {+    let s = String::from_utf8(generate("bash", &DENO_ROOT)).unwrap();+    assert!(+      s.contains("\"deno,run\")\n                cmd=\"deno__run\""),+      "{s}"+    );+    assert!(s.contains("            *)\n                ;;"), "{s}");+  }+   #[test]   fn generate_zsh_short_flags_keep_their_dash() {     // Regression test for #36713: the brace expansion dropped the `-` on the