1
0
mirror of https://github.com/Llewellynvdm/starship.git synced 2025-01-15 19:26:50 +00:00

feat(bun): Detect bun using new text-format lockfile (#6441)

* Support bun text-format lockfile

Bun version 1.1.39 introduced a new plaintext lockfile. Currently it is opt-in only, but it will become the default in bun version 1.2.

* update docs

* update config schema

* update tests
This commit is contained in:
MK 2024-12-29 12:20:01 -05:00 committed by GitHub
parent 2922ee78d2
commit 2df521c69b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 37 additions and 11 deletions

View File

@ -87,6 +87,7 @@
"default": {
"detect_extensions": [],
"detect_files": [
"bun.lock",
"bun.lockb",
"bunfig.toml"
],
@ -2225,6 +2226,7 @@
},
"detect_files": {
"default": [
"bun.lock",
"bun.lockb",
"bunfig.toml"
],

View File

@ -618,21 +618,22 @@ symbol = '🦬 '
The `bun` module shows the currently installed version of the [bun](https://bun.sh) JavaScript runtime.
By default the module will be shown if any of the following conditions are met:
- The current directory contains a `bun.lock` file
- The current directory contains a `bun.lockb` file
- The current directory contains a `bunfig.toml` file
### Options
| Option | Default | Description |
| ------------------- | ------------------------------------ | ------------------------------------------------------------------------- |
| `format` | `'via [$symbol($version )]($style)'` | The format for the module. |
| `version_format` | `'v${raw}'` | The version format. Available vars are `raw`, `major`, `minor`, & `patch` |
| `symbol` | `'🥟 '` | A format string representing the symbol of Bun. |
| `detect_extensions` | `[]` | Which extensions should trigger this module. |
| `detect_files` | `['bun.lockb', 'bunfig.toml']` | Which filenames should trigger this module. |
| `detect_folders` | `[]` | Which folders should trigger this module. |
| `style` | `'bold red'` | The style for the module. |
| `disabled` | `false` | Disables the `bun` module. |
| Option | Default | Description |
| ------------------- | ------------------------------------------ | ------------------------------------------------------------------------- |
| `format` | `'via [$symbol($version )]($style)'` | The format for the module. |
| `version_format` | `'v${raw}'` | The version format. Available vars are `raw`, `major`, `minor`, & `patch` |
| `symbol` | `'🥟 '` | A format string representing the symbol of Bun. |
| `detect_extensions` | `[]` | Which extensions should trigger this module. |
| `detect_files` | `['bun.lock', 'bun.lockb', 'bunfig.toml']` | Which filenames should trigger this module. |
| `detect_folders` | `[]` | Which folders should trigger this module. |
| `style` | `'bold red'` | The style for the module. |
| `disabled` | `false` | Disables the `bun` module. |
### Variables

View File

@ -27,7 +27,7 @@ impl<'a> Default for BunConfig<'a> {
style: "bold red",
disabled: false,
detect_extensions: vec![],
detect_files: vec!["bun.lockb", "bunfig.toml"],
detect_files: vec!["bun.lock", "bun.lockb", "bunfig.toml"],
detect_folders: vec![],
}
}

View File

@ -94,6 +94,16 @@ mod tests {
dir.close()
}
#[test]
fn folder_with_bun_file_text_lockfile() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("bun.lock"))?.sync_all()?;
let actual = ModuleRenderer::new("bun").path(dir.path()).collect();
let expected = Some(format!("via {}", Color::Red.bold().paint("🥟 v0.1.4 ")));
assert_eq!(expected, actual);
dir.close()
}
#[test]
fn no_bun_installed() -> io::Result<()> {
let dir = tempfile::tempdir()?;
@ -106,4 +116,17 @@ mod tests {
assert_eq!(expected, actual);
dir.close()
}
#[test]
fn no_bun_installed_text_lockfile() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("bun.lock"))?.sync_all()?;
let actual = ModuleRenderer::new("bun")
.path(dir.path())
.cmd("bun --version", None)
.collect();
let expected = Some(format!("via {}", Color::Red.bold().paint("🥟 ")));
assert_eq!(expected, actual);
dir.close()
}
}