1
0
mirror of https://github.com/Llewellynvdm/starship.git synced 2024-11-28 15:56:28 +00:00

feat(nodejs): support additional file patterns (#1311)

This commit is contained in:
Dario Vladović 2020-06-21 10:33:58 +02:00 committed by GitHub
parent b238574100
commit b176fc35ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 3 deletions

View File

@ -1091,7 +1091,8 @@ The module will be shown if any of the following conditions are met:
- The current directory contains a `package.json` file - The current directory contains a `package.json` file
- The current directory contains a `.node-version` file - The current directory contains a `.node-version` file
- The current directory contains a `node_modules` directory - The current directory contains a `node_modules` directory
- The current directory contains a file with the `.js` extension - The current directory contains a file with the `.js`, `.mjs` or `.cjs` extension
- The current directory contains a file with the `.ts` extension
### Options ### Options

View File

@ -6,14 +6,15 @@ use crate::utils;
/// Creates a module with the current Node.js version /// Creates a module with the current Node.js version
/// ///
/// Will display the Node.js version if any of the following criteria are met: /// Will display the Node.js version if any of the following criteria are met:
/// - Current directory contains a `.js` file /// - Current directory contains a `.js`, `.mjs` or `.cjs` file
/// - Current directory contains a `.ts` file
/// - Current directory contains a `package.json` or `.node-version` file /// - Current directory contains a `package.json` or `.node-version` file
/// - Current directory contains a `node_modules` directory /// - Current directory contains a `node_modules` directory
pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
let is_js_project = context let is_js_project = context
.try_begin_scan()? .try_begin_scan()?
.set_files(&["package.json", ".node-version"]) .set_files(&["package.json", ".node-version"])
.set_extensions(&["js"]) .set_extensions(&["js", "mjs", "cjs", "ts"])
.set_folders(&["node_modules"]) .set_folders(&["node_modules"])
.is_match(); .is_match();
@ -84,6 +85,37 @@ mod tests {
dir.close() dir.close()
} }
#[test]
fn folder_with_mjs_file() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("index.mjs"))?.sync_all()?;
let actual = render_module("nodejs", dir.path(), None);
let expected = Some(format!("via {} ", Color::Green.bold().paint("⬢ v12.0.0")));
assert_eq!(expected, actual);
dir.close()
}
fn folder_with_cjs_file() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("index.cjs"))?.sync_all()?;
let actual = render_module("nodejs", dir.path(), None);
let expected = Some(format!("via {} ", Color::Green.bold().paint("⬢ v12.0.0")));
assert_eq!(expected, actual);
dir.close()
}
fn folder_with_ts_file() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("index.ts"))?.sync_all()?;
let actual = render_module("nodejs", dir.path(), None);
let expected = Some(format!("via {} ", Color::Green.bold().paint("⬢ v12.0.0")));
assert_eq!(expected, actual);
dir.close()
}
#[test] #[test]
fn folder_with_node_modules() -> io::Result<()> { fn folder_with_node_modules() -> io::Result<()> {
let dir = tempfile::tempdir()?; let dir = tempfile::tempdir()?;